# 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](#1-prérequis-apache) 2. [Créer l'utilisateur système Gitea](#2-créer-lutilisateur-système-gitea) 3. [Télécharger et installer le binaire](#3-télécharger-et-installer-le-binaire) 4. [Créer les répertoires et la configuration](#4-créer-les-répertoires-et-la-configuration) 5. [Créer le service systemd](#5-créer-le-service-systemd) 6. [Démarrer Gitea et finaliser l'installation](#6-démarrer-gitea-et-finaliser-linstallation) 7. [Configurer le VHost dans ISPConfig](#7-configurer-le-vhost-dans-ispconfig) 8. [Migrer les repos existants](#8-migrer-les-repos-existants) 9. [Mettre à jour les remotes locaux](#9-mettre-à-jour-les-remotes-locaux) --- ## 1. Prérequis Apache Activer les modules proxy si ce n'est pas déjà fait : ```bash 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 : ```bash 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` : ```bash 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 : ```bash # Vérifier la dernière version sur https://github.com/go-gitea/gitea/releases GITEA_VERSION="1.22.3" 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 ```bash # 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` : ```bash 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 ```bash 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 : ```bash 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 : ```bash 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 : ```apache 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 ```bash 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. --- ## 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 : ```bash cd /chemin/local/adastra_api git remote add gitea git@git.unespace.com:TON_USERNAME/adastra_api.git git push gitea --all git push gitea --tags ``` ### 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 : ```bash # 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 Repositories** → **Git 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 : ```bash # Vérifier les remotes actuels git remote -v # Remplacer l'ancien remote origin git remote set-url origin git@git.unespace.com:TON_USERNAME/adastra_api.git git remote set-url origin git@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 ```bash # 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 ```