Files
adastra_api/docs/GITEA_INSTALL.md

8.7 KiB

Installation de Gitea sur Debian 11 avec Apache/ISPConfig

Gitea sera accessible sur https://git.unespace.com en reverse proxy devant Apache.
Les repos existants dans /opt/git/ seront migrés à la fin.


Table des matières

  1. Prérequis Apache
  2. Créer l'utilisateur système Gitea
  3. Télécharger et installer le binaire
  4. Créer les répertoires et la configuration
  5. Créer le service systemd
  6. Démarrer Gitea et finaliser l'installation
  7. Configurer le VHost dans ISPConfig
  8. Migrer les repos existants
  9. Mettre à jour les remotes locaux

1. Prérequis Apache

Activer les modules proxy si ce n'est pas déjà fait :

a2enmod proxy proxy_http headers
systemctl reload apache2

2. Créer l'utilisateur système Gitea

Gitea a besoin de son propre utilisateur Unix. On le crée sans home et sans shell pour limiter la surface d'attaque, mais on lui donne accès au répertoire des repos existants :

adduser --system --shell /bin/bash --gecos 'Gitea' --group --home /opt/gitea gitea

Pour que Gitea puisse lire les repos appartenant à l'utilisateur git, on ajoute gitea au groupe git :

usermod -aG git gitea

Si tes repos dans /opt/git/ appartiennent à git:git, cette étape est nécessaire pour la migration.


3. Télécharger et installer le binaire

Récupérer la dernière version stable depuis la page des releases Gitea. À adapter avec le numéro de version actuel :

# Vérifier la dernière version sur https://github.com/go-gitea/gitea/releases
GITEA_VERSION="1.26.1"

wget -O /tmp/gitea https://dl.gitea.com/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64
chmod +x /tmp/gitea
mv /tmp/gitea /usr/local/bin/gitea

# Vérifier
gitea --version

4. Créer les répertoires et la configuration

# Répertoires de données
mkdir -p /opt/gitea/{custom,data,log,repositories}
chown -R gitea:gitea /opt/gitea
chmod -R 750 /opt/gitea

# Répertoire de configuration
mkdir -p /etc/gitea
chown root:gitea /etc/gitea
chmod 770 /etc/gitea

Créer le fichier de configuration /etc/gitea/app.ini :

cat > /etc/gitea/app.ini << 'EOF'
APP_NAME = Adastra Git
RUN_USER = gitea
RUN_MODE = prod
WORK_PATH = /opt/gitea

[server]
PROTOCOL         = http
HTTP_ADDR        = 127.0.0.1
HTTP_PORT        = 3030
DOMAIN           = git.unespace.com
ROOT_URL         = https://git.unespace.com/
DISABLE_SSH      = false
SSH_PORT         = 22
SSH_DOMAIN       = git.unespace.com
START_SSH_SERVER = false

[database]
DB_TYPE  = sqlite3
PATH     = /opt/gitea/data/gitea.db

[repository]
ROOT = /opt/gitea/repositories

[security]
INSTALL_LOCK        = false
SECRET_KEY          =
INTERNAL_TOKEN      =

[log]
ROOT_PATH = /opt/gitea/log
MODE      = file
LEVEL     = warn

[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW  = false
EOF

chown root:gitea /etc/gitea/app.ini
chmod 660 /etc/gitea/app.ini

Note : INSTALL_LOCK = false permet à l'installeur web de fonctionner au premier démarrage. Il passera à true automatiquement après.
Le port 3030 est choisi pour éviter tout conflit avec l'API Node.js (3200) et d'autres services éventuels.


5. Créer le service systemd

cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target

[Service]
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/opt/gitea
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
RestartSec=2s
Environment=USER=gitea HOME=/opt/gitea GITEA_WORK_DIR=/opt/gitea

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable gitea
systemctl start gitea
systemctl status gitea

Vérifier que Gitea écoute bien sur le bon port :

ss -tlnp | grep 3030

6. Démarrer Gitea et finaliser l'installation

À ce stade Gitea tourne mais l'interface d'installation web n'est pas encore accessible publiquement (le VHost n'est pas créé). On peut tester depuis le serveur lui-même :

curl -s http://127.0.0.1:3030 | head -5
# doit retourner du HTML

L'installation web sera finalisée après la configuration du VHost (étape 7).


7. Configurer le VHost dans ISPConfig

7.1 Créer le site web

Dans ISPConfig → Sites → Ajouter un site web :

Champ Valeur
Domain git.unespace.com
Document Root /var/www/gitea-placeholder (peu importe, ne sera pas utilisé)
Auto-subdomain Aucun
Redirect type Laisser vide

Sauvegarder.

7.2 Activer le SSL Let's Encrypt

Dans l'onglet SSL du site que tu viens de créer :

  • Cocher SSL
  • Cocher Let's Encrypt
  • Sauvegarder

ISPConfig demande le certificat automatiquement. Attendre que le statut passe à "actif" (peut prendre 1-2 minutes).

7.3 Ajouter les directives reverse proxy

Dans l'onglet Options (ou Directives Apache selon ta version d'ISPConfig), dans le champ Apache Directives, coller :

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3030/
ProxyPassReverse / http://127.0.0.1:3030/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Real-IP %{REMOTE_ADDR}s

Répéter l'opération dans le champ Apache Directives SSL (le champ équivalent pour le VHost HTTPS) avec les mêmes lignes.

Sauvegarder. ISPConfig recharge Apache automatiquement.

7.4 Vérifier

curl -I https://git.unespace.com
# HTTP/2 200 ou redirection vers l'installeur Gitea

7.5 Finaliser l'installation Gitea via le navigateur

Ouvre https://git.unespace.com dans ton navigateur. L'installeur Gitea s'affiche.

Paramètres recommandés :

Champ Valeur
Base URL https://git.unespace.com/
SSH Server Domain git.unespace.com
SSH Port 22
HTTP Port 3030
Database SQLite3 (déjà configuré)
Compte administrateur Remplir nom/email/mot de passe

Cliquer Installer Gitea. L'installeur met à jour app.ini et redirige vers la page d'accueil.

7.6 Ajouter ta clé SSH publique

Pour pouvoir pousser via SSH, ta clé publique doit être enregistrée dans Gitea.

Depuis ta machine locale, récupère ta clé publique :

cat ~/.ssh/id_rsa.pub
# ou si tu utilises ed25519 :
cat ~/.ssh/id_ed25519.pub

Dans Gitea : ton avatar → Paramètres → Clés SSH/GPG → Ajouter une clé — colle le contenu et valide.


8. Migrer les repos existants

Tes repos actuels sont dans /opt/git/ sous forme de repos bare (ex. /opt/git/adastra_api.git).

Option A — Via l'interface Gitea (recommandé)

Pour chaque repo :

  1. Dans Gitea, créer un nouveau dépôt vide (même nom, sans initialisation)
  2. Depuis ta machine locale, ajouter le nouveau remote et pousser :
cd /chemin/local/adastra_api
git remote add gitea gitea@git.unespace.com:TON_USERNAME/adastra_api.git
git push gitea --all
git push gitea --tags

Note : l'utilisateur SSH est gitea (le user système sous lequel tourne Gitea), pas git.

Option B — Copie directe côté serveur

Si tu veux éviter de tout repousser depuis le local, tu peux cloner les repos bare existants directement dans le répertoire de Gitea :

# Pour chaque repo — adapter le nom d'utilisateur Gitea
su - gitea -s /bin/bash

cd /opt/gitea/repositories/TON_USERNAME/

# Clone bare du repo existant
git clone --mirror /opt/git/adastra_api.git adastra_api.git
git clone --mirror /opt/git/adastra_app.git adastra_app.git

Puis dans Gitea → Admin panel → Git RepositoriesGit Resync pour que Gitea indexe les repos copiés.


9. Mettre à jour les remotes locaux

Une fois les repos migrés, mettre à jour les remotes dans tes clones locaux :

# Vérifier les remotes actuels
git remote -v

# Remplacer l'ancien remote origin
git remote set-url origin gitea@git.unespace.com:TON_USERNAME/adastra_api.git
git remote set-url origin gitea@git.unespace.com:TON_USERNAME/adastra_app.git

# Vérifier
git remote -v
git fetch origin

L'ancien serveur Git continue de fonctionner en parallèle jusqu'à ce que tu sois certain que tout est migré.


Commandes d'administration utiles

# Statut du service
systemctl status gitea

# Logs en temps réel
journalctl -u gitea -f

# Mise à jour de Gitea (remplacer le binaire puis redémarrer)
systemctl stop gitea
wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/NEW_VERSION/gitea-NEW_VERSION-linux-amd64
chmod +x /usr/local/bin/gitea
systemctl start gitea