Files
gitea/docs/config-reference.md
T

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 /v2 alla 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.