docs: add Gitea installation guide for Debian 11 with ISPConfig

This commit is contained in:
2026-04-27 19:54:44 +02:00
parent ad9009afa1
commit 461d66a90f
+322
View File
@@ -0,0 +1,322 @@
# 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
```