8.3 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
- Prérequis Apache
- Créer l'utilisateur système Gitea
- Télécharger et installer le binaire
- Créer les répertoires et la configuration
- Créer le service systemd
- Démarrer Gitea et finaliser l'installation
- Configurer le VHost dans ISPConfig
- Migrer les repos existants
- 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.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
# 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 = falsepermet à l'installeur web de fonctionner au premier démarrage. Il passera àtrueautomatiquement après.
Le port3030est 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.
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 :
- Dans Gitea, créer un nouveau dépôt vide (même nom, sans initialisation)
- Depuis ta machine locale, ajouter le nouveau remote et pousser :
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 :
# 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 :
# 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
# 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