# STATO SESSIONE — Gitea + Cloudflare (1 set 2026) File di memorizzazione del lavoro fatto, per riprendere dopo un cambio di ambito. Aggiornato: 2026-09-01. --- ## 1. Obiettivo della sessione Deploy di **Gitea** sul VPS OVH (145.239.94.49, Debian 12) come `https://git.zomas.net` per tracciare il progetto Tacticus e aprirlo (in futuro) a contributi esterni. Backup automatico incluso. Tutto completato e verificato. --- ## 2. Stato finale (TUTTO FUNZIONANTE) | Componente | Stato | |---|---| | Gitea 1.27.3 | attivo (systemd, `/etc/gitea/app.ini`), DB sqlite `/var/lib/gitea/data/gitea.db` | | Web | `https://git.zomas.net` → Apache → `127.0.0.1:3000` (200 esterno) | | SSH git | server **built-in** Gitea su `0.0.0.0:2222` (host key ed25519/rsa/ecdsa) | | SSH cliente | questo PC → `gitea@git.zomas.net:2222` (IP origine 145.239.94.49, chiave `~/.ssh/id_ed25519`) | | Repo | `zomas/tacticus` **privato**, `main`, con README + `bot/.env.example` | | Mailer | `smtp+starttls` → smtp.gmail.com:587, App Password, test email **ok** | | 2FA | attiva (richiesta globale) + `TWO_FACTOR_AUTH=enforced` | | Backup | `/var/backups/gitea/gitea-dump-*.zip` (gitea dump, cron giornaliero 02:30, retention 14gg) | | Cloudflare | proxy arancio su git/zomas.net/zomas.org, SSL Full (strict), Universal SSL, CAA a posto | ### Warning Gitea: TUTTI RISOLTI - `https://(null)/` → colpa di `RequestHeader set Host %{HTTP_HOST}e` in Apache (Host vuoto). Rimosso, basta `ProxyPreserveHost On`. - Deprecazioni `[mailer].MAILER_TYPE/HOST/IS_TLS_ENABLED/SKIP_VERIFY` → opzioni moderne (`PROTOCOL=smtp+starttls`, `SMTP_ADDR`, `SMTP_PORT`). Log: "NESSUNA deprecazione residua". --- ## 3. Errori incontrati e soluzioni (utile se si ripete) 1. **`(null)` nel warning** → `RequestHeader set Host %{HTTP_HOST}e` sovrascrive Host con vuoto (variabile senza valore). Fix: riga rimossa. 2. **Server SSH non partiva** → Gitea default `START_SSH_SERVER=false` (usa OpenSSH esterno). Config: `START_SSH_SERVER=true` + `SSH_LISTEN_HOST=0.0.0.0`. Con built-in, l'utente SSH è il **RUN_USER di Gitea = `gitea`** (NON `git`, NON zomas): remote = `gitea@git.zomas.net:zomas/tacticus.git`. 3. **`git@` "Permission denied"** → normale: il client SSH deve usare `gitea@`. Config in `~/.ssh/config`: `Host git.zomas.net → HostName 145.239.94.49, Port 2222, User gitea`. 4. **Cloudflare non passa TCP 2222** → il record proxied serve solo 80/443; per SSH si punta all'IP origine via `HostName 145.239.94.49`. 5. **SSH rifiuto public key "invalid \r"** → il `.pub` finiva con CRLF; STRIPPARE `\r` prima di POST all'API `POST /api/v1/user/keys`. 6. **Backup "permission denied"** → `gitea dump` gira come utente `gitea`, che non può scrivere in `/var/backups/gitea` (root). Fix: dump in `/tmp`, poi `mv` da root. 7. **Sole IPv6 da questo PC** → `git.zomas.net` risolve solo IPv6 (anycast CF); per curl ok, per ssh serve IP IPv4 esplicito. --- ## 4. Credenziali / segreti (NON committare) - `/home/zomas/vps-admin/vps_ssh.env` — `VPS_*`, `TOKEN_CLOUDFLARE`, `GITEA_TOKEN` - `bot/.env` — chiavi API Tacticus + token bot Telegram (niente nel repo) - Il repo `tacticus.git` NON contiene segreti (verificato: `.env`, `vps_ssh.env`, `risultati.txt`, script setup esclusi da `.gitignore`). --- ## 5. Comandi utili ```bash # SSH git (da questo PC) git -C /home/zomas/tacticus remote -v # gitea@git.zomas.net:zomas/tacticus.git git -C /home/zomas/tacticus push # aggiorna il remote # Backup manuale (da root sul VPS) /usr/local/sbin/backup_gitea.sh ls -lh /var/backups/gitea/ # retention 14 giorni # Stato servizi systemctl status gitea apache2 cron # VPS ss -tlnp | grep -E ':(2222|3000)\b' ``` --- ## 6. PROSSIMI PASSI (cambio di ambito dell'utente) - (Opzionale) Download automatico dei backup VPS sul PC locale (ora solo sul VPS). - (Opzionale) Girare il repo `tacticus` da privato a pubblico + aprire contributi. - (Opzionale) `daily.py --fresh` (proposta rimasta aperta dal 31 ago, mai richiesta).