Forgejo
Git self-hosted privato
Funzione
Forgejo e' il servizio Git self-hosted Obelica. Per ora resta privato e accessibile solo via tunnel SSH.
Path
/opt/obelica/infra/forgejoFile principali:
docker-compose.yml;.env;/opt/obelica/secrets/apps/forgejo.env.
Runtime
| Container | Image | Stato |
|---|---|---|
forgejo | codeberg.org/forgejo/forgejo:13 | running |
forgejo-db | postgres:16-alpine | running, healthy |
Network:
forgejo-internalBind host:
127.0.0.1:3333 -> forgejo:3000Il container Forgejo espone 22/tcp internamente, ma non risulta pubblicato sull'host.
Persistenza
/opt/obelica/data/forgejo/app -> /data
/opt/obelica/data/forgejo/postgres -> /var/lib/postgresql/dataAccesso
Tunnel:
ssh -L 3333:127.0.0.1:3333 obelica-prodURL locale:
http://127.0.0.1:3333Comandi
cd /opt/obelica/infra/forgejo
docker compose ps
docker compose up -d
docker compose logs --tail=100
curl -I http://127.0.0.1:3333DB check:
docker exec forgejo-db psql -U forgejo -d forgejo -tAc 'select 1;'Policy attuale
- Non pubblicare via Traefik (confermato 2026-07-03: Forgejo resta privato, accesso solo via tunnel SSH).
- Registrazioni disabilitate.
- Login obbligatorio.
- Admin:
bona(id 1) eloudrifle(id 2, Giulio — creato 2026-07-03 viaforgejo admin user create --admin --must-change-password, emailzul.developer.io@gmail.com). - HTTPS/clone tramite tunnel.
- Niente SSH Git pubblico per ora.
Creare un nuovo utente
Nessun mailer configurato (SMTP bloccato su DO): niente inviti/reset via email. Gli utenti si creano da CLI con password temporanea e cambio forzato:
docker exec -u git forgejo forgejo admin user create \
--username <nome> --email <email> --password '<temp>' \
--admin # opzionale, per un amministratore
# --must-change-password è già il default: l'utente sceglie la sua password al 1° loginLa password temporanea va comunicata fuori banda (Signal, di persona), mai via
email. L'accesso di rete resta il tunnel SSH: il nuovo utente deve poter
raggiungere 127.0.0.1:3333, quindi il suo IP deve essere ammesso al SSH nel
DigitalOcean Cloud Firewall (vedi Firewall).
Pubblicazione futura
Prima di valutare git.obelica.com servono:
- 2FA;
- policy utenti;
- backup offsite cifrato;
- restore test;
- monitoring;
- rate limit;
- hardening Forgejo;
- decisione su SSH Git e porta;
- eventuale VPN o IP allowlist.
Push da shell del server
Quando un repository locale su /opt/obelica/repos/... ha come remote il path di un repository bare in /opt/obelica/data/forgejo/app/git/repositories/..., gli hook Forgejo generati automaticamente chiamano /usr/local/bin/gitea. Questo binario esiste solo dentro il container forgejo, quindi i push falliscono con:
remote: Forgejo: ... pre-receive hook declinedWrapper /usr/local/bin/gitea
Creare un wrapper sull'host che inoltri l'esecuzione al container come utente 1000:
sudo tee /usr/local/bin/gitea <<'EOF'
#!/usr/bin/env bash
exec docker exec -i -u 1000 forgejo /usr/local/bin/gitea "$@"
EOF
sudo chmod +x /usr/local/bin/giteaVerifica:
/usr/local/bin/gitea --versionDopo il fix i push verso i repository bare locali funzionano correttamente.