Obelica Docs
Servizi

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/forgejo

File principali:

  • docker-compose.yml;
  • .env;
  • /opt/obelica/secrets/apps/forgejo.env.

Runtime

ContainerImageStato
forgejocodeberg.org/forgejo/forgejo:13running
forgejo-dbpostgres:16-alpinerunning, healthy

Network:

forgejo-internal

Bind host:

127.0.0.1:3333 -> forgejo:3000

Il 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/data

Accesso

Tunnel:

ssh -L 3333:127.0.0.1:3333 obelica-prod

URL locale:

http://127.0.0.1:3333

Comandi

cd /opt/obelica/infra/forgejo
docker compose ps
docker compose up -d
docker compose logs --tail=100
curl -I http://127.0.0.1:3333

DB 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) e loudrifle (id 2, Giulio — creato 2026-07-03 via forgejo admin user create --admin --must-change-password, email zul.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° login

La 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 declined

Wrapper /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/gitea

Verifica:

/usr/local/bin/gitea --version

Dopo il fix i push verso i repository bare locali funzionano correttamente.

On this page