Sopstveni Git: Forgejo ili Gitea
Kako da podesiš lični server za repozitorijume sa veb interfejsom, SSH pristupom i build run-ovima — i šta da kopiraš da ne izgubiš kod.
Ažurirano 23. avgust 2026.
Treba ti sopstveni Git kada kod ne sme da ode na tuđu platformu ili kada želiš neograničen broj privatnih repozitorijuma i minuta za build. Forgejo i Gitea su dva blisko povezana projekta (Forgejo je nastao iz Gitea-e); oba se instaliraju u jednom kontejneru i rade na skromnoj mašini.
Šta izabrati i koliko resursa
U svakodnevnom radu skoro da nema razlike: interfejs, issues, pull requests, mirrori, Actions za build. Forgejo razvija zajednica, Gitea kompanija. Izaberi Forgejo ako ti je nezavisnost projekta važna.
Za dvoje ili troje ljudi dovoljan je VDS-1. Čim dodaš runner za build, uzmi VDS-3 ili jači: buildovi jedu CPU i disk, a brzina diska je ograničena tierom.
Instalacija preko Compose
services:
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
ports:
- "3000:3000"
- "2222:22"
docker compose up -d
docker compose logs -f forgejo
Otvori http://<machine-address>:3000 i prođi kroz početno podešavanje. Prvi kreirani korisnik postaje administrator.
Ne moraš da ostaviš port 3000 otvoren ka spolja. Zatvori ga i stavi web server sa sertifikatom ispred servisa — tako dobijaš HTTPS i ne pokazuješ panel za podešavanje strancima. Dok podešavanje nije završeno, svako ko otvori adresu može prvi da kreira administratora.
SSH pristup
Port 22 unutar kontejnera je prosleđen na 2222, jer je 22 zauzet od strane sistemskog SSH-a. U podešavanjima repozitorijuma adresa će izgledati ovako:
git clone ssh://git@example.com:2222/user/repo.git
Ako želiš uobičajeno git@example.com:user/repo.git bez porta, ostavi 2222 za kontejner i podesi prosleđivanje na hostu preko sistemskog SSH-a, ili prebaci administrativni SSH na drugi port (vidi zaštita pristupa).
Buildovi
Actions pokreće poseban runner — kontejner forgejo-runner, koji se registruje tokenom iz administratorskih podešavanja. Daj mu pristup Docker socketu samo namerno: to je ekvivalentno root-u na mašini. Za buildove je bolje da ograničiš runner po memoriji i CPU — vidi ograničenja resursa.
Šta da backupuješ
Sve stanje se čuva u volumenu ./data: repozitorijumi, baza podataka, prilozi, konfiguracija. Backup se pravi ovako:
docker compose stop forgejo
restic -r <repository> backup ./data
docker compose start forgejo
Treba da zaustaviš servis ako koristi SQLite — u suprotnom snimak baze može biti nedosledan. Sa PostgreSQL-om je dovoljan pg_dump bez zaustavljanja. Za više detalja vidi šta tačno da backupuješ i Restic.
Česte greške
- Zaboravljanje na veličinu repozitorijuma. Buildovi game servera i mediji brzo pojedu prostor na disku: 40 GB iz ulaznog tiera se potroši neprimetno.
- Email nije podešen. Bez njega pozivnice i resetovanja lozinke ne rade. Lakše je povezati spoljni SMTP nego podesiti sopstveni mail server.
- Ažuriranje bez backup-a. Promena glavne verzije menja šemu baze podataka. Prvo backup, pa
docker compose pull— vidi ažuriranje kontejnera.