GitHub je default za code hosting, ali ne mora biti. Privacy razlozi, EU data residency, GitHub politika koja se mijenja s Microsoftom u pozadini, vendor lock-in, ili jednostavno trošak — sve su valjani razlozi za self-host. Ovo je vodič koji self-hosted Git server odabrat i kako ga postavit.
Zašto razmišljat o self-hosted Git-u
- Data residency / GDPR — kod ostaje u EU, na tvojoj infrastrukturi.
- Privacy — bez Microsoft data sharing (GitHub Copilot trening, telemetry).
- Trošak — kod 10+ developera GitHub Team postaje skup (4 USD/user/mj).
- Compliance — neki industriji (banking, defense, healthcare) ne dopuštaju public cloud kod.
- Lokalna kontrola — full audit log, integracije, customizacije bez ograničenja.
- Air-gapped environments — kod koji ne smije nikad napustit private mrežu.
Gitea — lightweight i brz
Open-source, Go-based. Self-host u <1GB RAM. Najpopularniji izbor za individualne i male timove.
Plus: brz setup, malo resource overhead-a, dobar UI sličan GitHub-u, Git LFS support, issues, pull requesti, wiki, CI/CD kroz Gitea Actions (compatible s GitHub Actions YAML).
Minus: manje enterprise features od GitLab-a. Po recentnom drama-u (2023) oko corporate kontrole, dio zajednice je forkao u Forgejo.
Sistem: 1 vCPU, 1GB RAM, 20GB disk za do 50 korisnika.
Forgejo — community fork Gitea-e h2>
Fork Gitea-e od strane Codeberg community-ja (2022) nakon što je Gitea prešla u for-profit Gitea Limited. 100% kompatibilan s Gitea-om, ista codebase iza ali community-governed.
Plus: sve Gitea features + community-driven, no corporate influence. Kompatibilnost s Gitea-om pri migraciji.
Verdict: ako želiš Gitea-similar tool s pure-OSS governance, koristi Forgejo.
GitLab CE (Community Edition)
Full-feature DevOps platforma. Self-hosted besplatna verzija (CE).
Plus: Git + Issues + CI/CD + Container Registry + Pages + Wiki + Kanban boards. Sve u jednoj instanci. Enterprise features (LDAP, audit, advanced security) u EE verzija (komercijalna).
Minus: resource-heavy. 4GB RAM minimum, realno 8GB+ za 50 korisnika. Update kompliciraniji.
Cijena: CE besplatna. EE (Premium) od ~30 USD/user/mj. Self-hosted EE također plaćaš.
Bitbucket Server (Atlassian)
Komercijalna self-hosted opcija, integrirana s Jira-om. Dobra za teams koji već koriste Atlassian ekosistem (BitBucket Data Center).
Cijena: od ~3 USD/user/mj.
Usporedba
| Alat | Min RAM | Setup | Cijena (50 users) | CI/CD |
|---|---|---|---|---|
| Gitea | 512MB | 5 min | 0 EUR (server cost) | Gitea Actions |
| Forgejo | 512MB | 5 min | 0 EUR | Forgejo Actions |
| GitLab CE | 4GB | 1-2h | 0 EUR (server cost) | GitLab CI built-in |
| GitLab EE | 4GB | 1-2h | ~1500 USD/mj | GitLab CI built-in |
| Bitbucket Server | 2GB | 30 min | ~150 USD/mj | Bitbucket Pipelines |
Gitea setup (najjednostavniji)
Docker put — najbrži:
# docker-compose.yml
version: '3'
services:
gitea:
image: gitea/gitea:latest
ports:
- '3000:3000'
- '2222:22'
volumes:
- ./data:/data
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
docker-compose up -d
Pristupi http://server:3000, prođi setup wizard. Postavi MySQL/Postgres ili koristi SQLite za mali setup.
GitLab CE setup
Omnibus installer (Ubuntu/Debian):
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce
sudo gitlab-ctl reconfigure
Konfiguracija u /etc/gitlab/gitlab.rb. Reconfigure nakon promjene: sudo gitlab-ctl reconfigure.
SSL i reverse proxy
Self-hosted Git mora bit pristupačan kroz HTTPS. Stavi nginx ili Caddy ispred:
# nginx
server {
listen 443 ssl http2;
server_name git.tvojadomena.hr;
ssl_certificate /etc/letsencrypt/live/git.tvojadomena.hr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.tvojadomena.hr/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Certbot za Let's Encrypt SSL.
SSH access
Za Git operacije (clone, push) preko SSH-a, server treba slušat SSH port (Gitea default 2222 ako mapped, GitLab koristi standardni 22).
Korisnici dodaju svoj javni SSH ključ u profilu, klone:
git clone git@git.tvojadomena.hr:user/repo.git
Backup strategija
Git repositoriji su tvoj kod — backup je ne-pregovorno.
- Gitea:
gitea dumpcommand, generira tar arhivu s repos + DB + config. Cron daily. - GitLab CE:
gitlab-backup create. Daily cron, retention 14 dana. - Offsite: rsync ili rclone backup arhivu na S3/B2/drugi server.
- Test restore: mjesečno na staging serveru.
CI/CD opcije
Gitea Actions (Forgejo Actions)
Pokreće GitHub Actions-compatible YAML workflows. Treba runners (lokalni ili Docker).
# .gitea/workflows/test.yml
name: Test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: composer install
- run: vendor/bin/phpunit
GitLab CI
.gitlab-ci.yml u root-u repo. Runners (shared ili dedicated) izvršavaju pipeline.
test:
image: php:8.2
script:
- composer install
- vendor/bin/phpunit
Drone CI / Woodpecker
Lightweight, fokusiran samo na CI/CD. Spaja se s bilo kojim Git serverom.
Migracija s GitHub-a
- U Gitea/GitLab admin: Repositories → Migrate.
- Daj GitHub URL + Personal Access Token (ako private repo).
- Wizard kopira commits, issues, PRs, wiki, releases.
- Update local
git remote set-url origin git@git.tvoja.hr:user/repo.git. - Update CI/CD references u kodu (Actions YAML ako mijenjaš workflow).
Federation — Forgejo
Forgejo razvija federation protokol — više self-hosted instanci može komunicirat, korisnici s različitih servera mogu sudjelovat u istom projektu (kao Mastodon za Git). Eksperimentalno ali zanimljiv smjer.
Issues i project management
Self-hosted Git serveri imaju built-in issues, ali ne na razini Jira-e/Linear-a. Za ozbiljniji PM:
- Gitea + Plane (self-hosted PM tool, EU-based).
- GitLab CE — issues + epics + boards built-in, vrlo solidno.
- Forgejo + Jira self-hosted (ako već imaš Atlassian).
WMD i self-hosted Git
WMD nudi managed Gitea i GitLab CE setup na dedicated VPS-u — instalacija, SSL, backup setup, monitoring. Migracija s GitHub-a uključena u onboarding. Za enterprise klijente konfiguriramo LDAP/SSO, audit log, integraciju s Jira-om ili Linear-om. CI/CD runners (Docker) na zasebnoj instanci, isolation. EU data residency garantirana (server u EU lokaciji po izboru).
FAQ
Gitea ili GitLab za 5-osoban tim? Gitea/Forgejo — manji overhead, brz setup, dovoljan.
Gitea ili GitLab za 50-osoban tim? GitLab CE ako trebaš ozbiljan CI/CD + project management. Gitea ako koristiš external CI (Drone, Woodpecker).
Mogu li imat private mirror GitHub repos-a? Da, oba podržavaju "pull mirror" — Gitea/GitLab automatski sync GitHub repo.
Što ako se server pokvari? Restore iz backup-a (gitea dump arhiva). Test restore prije nego ti treba.
SSL renewal — automatski? Da, Certbot cron job. Provjeri da nginx reload-a nakon renewal-a.
Multi-server / HA? GitLab CE podržava (kompleksniji setup). Gitea ima limited HA. Za ozbiljnu HA → GitLab EE ili managed Codeberg.
Trebaš self-hosted Git server? WMD instalira, konfigurira i održava Gitea/Forgejo/GitLab CE s SSL, backup, CI/CD. Javi se preko kontakt forme.