Gitea s’installe via un binaire statique unique : pas de Docker obligatoire, pas de dépendances complexes. Cette procédure installe Gitea 1.25.5 sur Ubuntu 24.04 LTS en moins de 15 minutes, avec un service systemd prêt pour la production.
Vous repartirez avec un serveur Git complet : dépôts, issues, pull requests, et Gitea Actions — le tout consommant moins de 500 Mo de RAM pour une petite équipe.
Prérequis
Section intitulée « Prérequis »| Ressource | Minimum (test) | Recommandé (équipe) |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 Mo | 2 Go |
| Disque | 10 Go | 50 Go + |
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
Installation
Section intitulée « Installation »-
Installer les dépendances
Gitea a besoin de Git pour gérer les dépôts. Git LFS est recommandé pour les projets utilisant des fichiers binaires volumineux.
Fenêtre de terminal sudo apt updatesudo apt install -y git git-lfsgit --version # Doit afficher git version 2.x.x -
Télécharger et vérifier le binaire
Gitea distribue un fichier SHA256 pour chaque binaire. La vérification garantit que le téléchargement n’est pas corrompu.
Fenêtre de terminal cd /tmp# Télécharger le binaire et sa somme de contrôlewget -O gitea-1.25.5-linux-amd64 \https://github.com/go-gitea/gitea/releases/download/v1.25.5/gitea-1.25.5-linux-amd64wget -O gitea-1.25.5-linux-amd64.sha256 \https://github.com/go-gitea/gitea/releases/download/v1.25.5/gitea-1.25.5-linux-amd64.sha256# Vérifier l'intégritésha256sum -c gitea-1.25.5-linux-amd64.sha256La commande doit afficher
gitea-1.25.5-linux-amd64: OK. Si vous voyezFAILED, recommencez le téléchargement. -
Installer le binaire
Fenêtre de terminal sudo cp /tmp/gitea-1.25.5-linux-amd64 /usr/local/bin/giteasudo chmod 755 /usr/local/bin/gitea# Vérifier l'installationgitea --version# gitea version 1.25.5 built with GNU Make 4.3, go1.25.x : bindata, sqlite, sqlite_unlock_notify -
Créer l’utilisateur système
Gitea s’exécute sous un utilisateur
gitdédié, sans shell de connexion interactif, pour limiter la surface d’attaque.Fenêtre de terminal sudo adduser --system --shell /bin/bash \--gecos 'Git Version Control' \--group --disabled-password \--home /home/git git -
Créer les répertoires
La structure de répertoires sépare la configuration (dans
/etc/) des données (dans/var/lib/), selon les conventions Unix.Fenêtre de terminal # Répertoire de données (propriétaire: git)sudo mkdir -p /var/lib/giteasudo chown git:git /var/lib/giteasudo chmod 750 /var/lib/gitea# Répertoire de configuration (root:git, Gitea doit pouvoir écrire au 1er démarrage)sudo mkdir -p /etc/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea -
Installer le service systemd
Gitea fournit un fichier de service officiel adapté à la majorité des configurations.
Fenêtre de terminal sudo wget -O /etc/systemd/system/gitea.service \https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.servicesudo systemctl daemon-reloadsudo systemctl enable gitea.service -
Créer le fichier de configuration
Au lieu de passer par le wizard web (qui requiert un token CSRF depuis Gitea 1.21+), créez directement
app.iniavec les paramètres de votre environnement.Remplacez
192.168.1.10par l’IP ou le nom de domaine de votre serveur.Fenêtre de terminal sudo tee /etc/gitea/app.ini > /dev/null << 'EOF'APP_NAME = Mon GiteaRUN_USER = gitRUN_MODE = prodWORK_PATH = /var/lib/gitea[database]DB_TYPE = sqlite3PATH = /var/lib/gitea/data/gitea.dbLOG_SQL = false[repository]ROOT = /var/lib/gitea/data/gitea-repositories[server]DOMAIN = 192.168.1.10HTTP_PORT = 3000ROOT_URL = http://192.168.1.10:3000/DISABLE_SSH = falseSSH_PORT = 22LFS_START_SERVER = trueAPP_DATA_PATH = /var/lib/gitea/data[lfs]PATH = /var/lib/gitea/data/lfs[log]ROOT_PATH = /var/lib/gitea/logMODE = consoleLEVEL = info[security]INSTALL_LOCK = truePASSWORD_HASH_ALGO = pbkdf2[service]DISABLE_REGISTRATION = falseNO_REPLY_ADDRESS = noreply@example.com[mailer]ENABLED = false[session]PROVIDER = file[indexer]ISSUE_INDEXER_TYPE = bleveEOF# Permissions avant le 1er démarrage (git doit pouvoir écrire les tokens)sudo chown root:git /etc/gitea/app.inisudo chmod 660 /etc/gitea/app.ini -
Créer les répertoires de log et custom
Ces répertoires sont nécessaires au démarrage de Gitea.
Fenêtre de terminal sudo mkdir -p /var/lib/gitea/log /var/lib/gitea/customsudo chown git:git /var/lib/gitea/log /var/lib/gitea/customsudo chmod 750 /var/lib/gitea/log /var/lib/gitea/custom -
Démarrer Gitea
Fenêtre de terminal sudo systemctl start gitea.service# Vérifier que le service est actifsudo systemctl is-active gitea.service# active# Attendre que Gitea soit prêt (quelques secondes)until curl -sf http://localhost:3000/ > /dev/null; do sleep 2; echo "Attente..."; doneecho "Gitea prêt" -
Créer l’administrateur via CLI
La création de l’admin en ligne de commande évite de passer par le formulaire web et permet l’automatisation.
Fenêtre de terminal sudo -u git GITEA_WORK_DIR=/var/lib/gitea \gitea admin user create \--config /etc/gitea/app.ini \--username monadmin \--password 'MonMotDePasse!' \--email admin@example.com \--admin \--must-change-password=false# New user 'monadmin' has been successfully created! -
Durcir les permissions
Après le premier démarrage réussi, Gitea a écrit les tokens dans
app.ini. Réduisez les droits pour que le fichier ne soit plus modifiable par Gitea.Fenêtre de terminal sudo systemctl stop gitea.servicesudo chmod 640 /etc/gitea/app.inisudo chmod 750 /etc/giteasudo systemctl start gitea.servicesudo systemctl is-active gitea.service# active
Vérification finale
Section intitulée « Vérification finale »Une fois l’installation terminée, validez l’ensemble :
# 1. Version du binairegitea --version
# 2. Service systemd actifsystemctl is-active gitea.service
# 3. Port 3000 en écoutess -tlnp | grep :3000
# 4. Réponse HTTPcurl -o /dev/null -s -w "%{http_code}\n" http://localhost:3000/# 200
# 5. API authentifiéecurl -sf -u monadmin:'MonMotDePasse!' http://localhost:3000/api/v1/user | python3 -m json.toolDépannage
Section intitulée « Dépannage »Gitea ne démarre pas — permission denied sur app.ini
Gitea tente d’écrire les tokens de sécurité dans app.ini au premier démarrage.
Si le fichier est en 640 à ce stade, le démarrage échoue. Solution :
sudo systemctl stop gitea.servicesudo chmod 660 /etc/gitea/app.inisudo systemctl start gitea.service# Vérifier que les tokens sont généréssudo grep 'INTERNAL_TOKEN' /etc/gitea/app.ini# Puis durcirsudo chmod 640 /etc/gitea/app.inisudo systemctl restart gitea.serviceL’interface web affiche la page d’installation malgré INSTALL_LOCK = true
Vérifiez que le fichier app.ini est bien lu par Gitea :
sudo systemctl status gitea | grep 'ConfigFile'sudo -u git gitea --config /etc/gitea/app.ini doctor check 2>&1 | head -10Le répertoire de log est manquant
sudo mkdir -p /var/lib/gitea/logsudo chown git:git /var/lib/gitea/logsudo systemctl restart gitea.serviceÀ retenir
Section intitulée « À retenir »- Le binaire Gitea est statique : pas de gestionnaire de paquets, pas de dépendances runtime
INSTALL_LOCK = truedansapp.inidésactive le wizard web — obligatoire en production- Gitea génère
SECRET_KEYetINTERNAL_TOKENlors du premier démarrage — le répertoire doit être inscriptible - L’admin se crée via
gitea admin user createpour éviter le formulaire web - Passez en
640/750après le premier démarrage pour durcir la configuration