5.4 KiB
Riferimento configurazione (app.ini)
Percorso nel container: /data/gitea/conf/app.ini (host: ./gitea-data/gitea/conf/app.ini). Riavviare Gitea dopo ogni modifica: docker compose restart gitea.
Override via variabili d'ambiente (compose)
Forma: GITEA__<sezione>__<CHIAVE>=valore, applicata a ogni avvio del container.
Per leggere da file: GITEA__<sezione>__<CHIAVE>__FILE=/percorso.
services:
gitea:
environment:
- GITEA__server__ROOT_URL=https://your-domain.com/
- GITEA__service__DISABLE_REGISTRATION=true
- USER_UID=1000
- USER_GID=1000
USER_UID/USER_GID devono combaciare col proprietario di ./gitea-data.
Sezioni con punto: [ssh.minimum_key_sizes] → GITEA__ssh.minimum_key_sizes__RSA.
Root
| Chiave | Default | Note |
|---|---|---|
| APP_NAME | "Gitea: Git with a cup of tea" | titolo pagine |
| RUN_USER | utente corrente | nel container git; deve combaciare con l'utente OS |
| RUN_MODE | prod | dev solo debug |
[server]
| Chiave | Default | Note |
|---|---|---|
| PROTOCOL | http | anche https, fcgi, http+unix |
| DOMAIN | localhost | host mostrato negli URL |
| HTTP_ADDR / HTTP_PORT | 0.0.0.0 / 3000 | |
| ROOT_URL | http://localhost:3000/ | deve essere l'URL pubblico (https://dominio/) |
| LOCAL_ROOT_URL | da impostare se la porta web interna non è 3000 | |
| SSH_DOMAIN | = DOMAIN | host SSH negli URL clone |
| SSH_PORT | 22 | porta mostrata negli URL (qui 2222) |
| SSH_LISTEN_PORT | = SSH_PORT | porta su cui ascolta il server SSH built-in (qui 22) |
| DISABLE_SSH | false | |
| START_SSH_SERVER | false | SSH built-in (nell'immagine Docker è già gestito da sshd) |
| LFS_START_SERVER | false | abilita Git LFS |
| OFFLINE_MODE | true | disabilita CDN/Gravatar |
| ENABLE_ACME | false | non serve: TLS lo fa Caddy |
| APP_DATA_PATH | data |
[database]
| Chiave | Default | Note |
|---|---|---|
| DB_TYPE | mysql | sqlite3 / postgres / mysql / mssql (qui sqlite3) |
| PATH | data/gitea.db | solo sqlite |
| HOST, NAME, USER, PASSWD | 127.0.0.1:3306, gitea, root, vuoto | |
| SSL_MODE | disable | |
| MAX_OPEN_CONNS / MAX_IDLE_CONNS | 0 / 2 | |
| AUTO_MIGRATION | true | migrazioni all'avvio |
[security]
| Chiave | Default | Note |
|---|---|---|
| INSTALL_LOCK | false | true dopo il wizard (blocca /install) |
| SECRET_KEY | casuale | non cambiare mai dopo l'install (2FA e dati cifrati) |
| INTERNAL_TOKEN | casuale | comunicazione interna |
| LOGIN_REMEMBER_DAYS | 31 | |
| PASSWORD_HASH_ALGO | pbkdf2 | argon2, scrypt, bcrypt |
| MIN_PASSWORD_LENGTH / PASSWORD_COMPLEXITY | 8 / off | |
| REVERSE_PROXY_LIMIT | 1 | |
| REVERSE_PROXY_TRUSTED_PROXIES | 127.0.0.0/8,::1/128 | in Docker aggiungere la subnet compose (es. 172.16.0.0/12) |
| DISABLE_GIT_HOOKS | true | hook custom = esecuzione codice sull'host |
| EGRESS_MODE | lax | strict richiede allow-list |
[service]
| Chiave | Default | Note |
|---|---|---|
| DISABLE_REGISTRATION | false (ma il wizard lo propone) | true = solo admin crea utenti |
| REQUIRE_SIGNIN_VIEW | false | true = server privato |
| REGISTER_EMAIL_CONFIRM | false | richiede mailer |
| ENABLE_BASIC_AUTHENTICATION | true | |
| ENABLE_CAPTCHA | false | |
| DEFAULT_USER_VISIBILITY / DEFAULT_ORG_VISIBILITY | public | |
| ENABLE_NOTIFY_MAIL | false | |
| ENABLE_TIMETRACKING | true |
[repository]
ROOT ({APP_DATA_PATH}/gitea-repositories; nel Docker /data/git/repositories), DEFAULT_BRANCH (main), DEFAULT_PRIVATE (last|private|public), DEFAULT_OBJECT_FORMAT (sha1|sha256), DISABLE_HTTP_GIT, DISABLE_MIGRATIONS, DISABLE_STARS, MAX_CREATION_LIMIT (-1), DEFAULT_REPO_UNITS, DISABLED_REPO_UNITS (disabilita funzioni globalmente, es. repo.actions,repo.packages).
[ssh.minimum_key_sizes]
ED25519 256, ECDSA 256, RSA 3071, DSA -1 (disabilitato).
[mailer]
Vedi email.md.
[actions]
ENABLED true (da 1.21); default action host github; retention log 365g, artifact 90g, run 400g; zombie task timeout 10m; endless task 3h; abandoned job 24h. Vedi actions-runner.md.
[session]
PROVIDER file, PROVIDER_CONFIG data/sessions, COOKIE_NAME i_like_gitea, SESSION_LIFE_TIME 86400, SAME_SITE lax. Aggiungere COOKIE_SECURE=true dietro HTTPS.
[log]
MODE console, LEVEL Info. Modalità file: gitea.log, rotazione 7 giorni. Necessario su file per fail2ban.
[cron] / [cron.*]
[cron] ENABLED=false (globale); task: archive cleanup @midnight, update_mirrors @every 10m, repo health check @midnight, stop_zombie_tasks @every 5m, stop_endless_tasks @every 30m, cancel_abandoned_jobs @every 6h, update_checker @every 168h.
Altre sezioni
- [attachment]: ENABLED, MAX_SIZE 100 (MB), MAX_FILES 5, STORAGE_TYPE local, PATH attachments.
- [lfs]: PATH ./data/lfs; batch 20, concurrency 8.
- [packages]: ENABLED true; limiti per tipo -1; CHUNKED_UPLOAD_PATH tmp/package-upload. Registry container richiede
/v2alla radice del dominio. - [oauth2]: ENABLED, ACCESS_TOKEN_EXPIRATION_TIME 3600, REFRESH_TOKEN_EXPIRATION_TIME 730h, JWT_SIGNING_ALGORITHM RS256.
- [cache]: ADAPTER memory, INTERVAL 60, ITEM_TTL 16h.
- [api]: ENABLE_SWAGGER true, MAX_RESPONSE_ITEMS 50, DEFAULT_PAGING_NUM 30.
- [other]: SHOW_FOOTER_VERSION, SHOW_FOOTER_POWERED_BY, ENABLE_SITEMAP, ENABLE_FEED.
- [indexer], [ui], [openid], [webhook], [storage]: non verificate in questo riferimento; consultare https://docs.gitea.com/administration/config-cheat-sheet.