339 lines
8.7 KiB
Markdown
339 lines
8.7 KiB
Markdown
# 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.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
|
|
|
|
```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.
|
|
|
|
### 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 :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```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 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
|
|
|
|
```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
|
|
```
|