Présentation et Initialisation
Gitea est un service de développement logiciel tout-en-un, facile à utiliser et auto-hébergé. Il inclut l'hébergement Git, la révision de code, la collaboration en équipe, un registre de paquets et des fonctionnalités d'intégration continue et de déploiement continu (CI/CD). Il est similaire à GitHub, Bitbucket et GitLab.
À l'origine, Gitea est issu d'un fork de Gogs, mais la quasi-totalité du code a été remaniée.
Objectifs - Déploiement Docker Compose
Résumé : Rédiger une stack Gitea auto-hébergée, pensée pour tourner derrière un Apache déjà en place sur un serveur, avec accès Git en SSH.
Prérequis :
PostgreSQLcomme base de données (conteneur dédié, réseau interne isolé)- Le serveur SSH intégré de Gitea exposé sur le port hôte 2222 (le port 22 est déjà pris par le sshd système)
- Un accès HTTP publié uniquement sur
127.0.0.1:3000, car Apache (natif sur l'hôte) fait déjà reverse-proxy/TLS pour les autres vhosts de ce serveur et gérera aussi celui-ci - Domaine cible :
git.mondomain.ovh(email admin : placeholderadmin@mondomain.ovh, à changer) - Inscription publique désactivée (comptes créés par l'admin uniquement)
- Gitea Actions et mailer désactivés pour le moment (documentés en option, pas activés)
- Toute la configuration versionnable en clair, tous les secrets externalisés dans un
.envnon commité
Architecture
Internet
│
│ 80/443 (TLS géré par Apache, certs Certbot existants)
▼
┌────────────────────────────────┐
│ Apache (natif, sur l'hôte) │
│ vhost git.mondomain.ovh │
└───────────────┬─────────────────┘
│ proxy_pass http://127.0.0.1:3000
▼
┌────────────────────────────────────────────┐
│ Docker : réseau "backend" (internal) │
│ │
│ ┌───────────────┐ ┌─────────────────┐ │
│ │ gitea │ SQL │ db (postgres) │ │
│ │ (rootless) │◄──────►│ 16-alpine │ │
│ │ HTTP :3000 │ │ non exposé hôte │ │
│ │ SSH :2222 │ └─────────────────┘ │
│ └───────┬────────┘ │
└──────────┼──────────────────────────────────────┘
│ port 2222 publié sur toutes les interfaces
▼
Clients Git (ssh://git@git.mondomain.ovh:2222/...)
Installation
1. Préparer les configuration
Nous proposons le docker-compose et le modèle app.ini par défaut.
Copier les deux fichiers dans votre dossier pour les configurer.
cd gitea/
cp <from Wiki>.env.exemple .env
cp <from Wiki>docker-compose.yaml
cp <from Wiki>app.ini app.ini
chmod 600 .env
Le template de la configuration App est accessible ici, sans aucun secret.
Le template de la configuration docker-compose est accessible ici, sans aucun secret.
Le template de la configuration .env est accessible ici, sans aucun secret.
2. Configurer les variables & les secrets
Générer un mot de passe PostgreSQL fort :
openssl rand -base64 32
Générer les trois secrets internes de Gitea (aucun conteneur ne tourne encore, on utilise l'image pour exécuter juste la commande) :
docker run --rm gitea/gitea:1.27-rootless gitea generate secret SECRET_KEY
docker run --rm gitea/gitea:1.27-rootless gitea generate secret INTERNAL_TOKEN
docker run --rm gitea/gitea:1.27-rootless gitea generate secret JWT_SECRET
Reporter chaque valeur générée dans le .env ou directement dans le fichier app.ini (POSTGRES_PASSWORD, GITEA_SECRET_KEY, GITEA_INTERNAL_TOKEN, GITEA_OAUTH2_JWT_SECRET).
App.ini c'est le fichier dans lequel l'entrypoint Gitea écrit directement les secrets au démarrage (mot de passe DB, SECRET_KEY, INTERNAL_TOKEN, JWT_SECRET). Il permet également de configurer Gitea pour les logs et la gestion des inscriptions des comptes etc...
Avant le premier démarrage vérifier dans les 3 fichiers (docker-compose.yml / .env / app.ini) :
- Les secrets sont remplacés par ceux généré précédemment
- Le domaine
git.mondomain.ovhet l'email admin placeholder (admin@mondomain.ovh) sont remplacés
3. Démarrer la stack
docker compose up -d db
docker compose ps # attendre que "db" soit "healthy"
docker compose up -d gitea
docker compose logs -f gitea
4. Créer le premier compte administrateur
L'inscription publique étant désactivée, le premier compte se crée en ligne de commande :
docker compose exec gitea gitea admin user create \
--username admin \
--password 'UN_MOT_DE_PASSE_FORT' \
--email admin@mondomain.ovh \
--admin \
--must-change-password=false
Vérifier en local avant de brancher Apache :
curl -I http://127.0.0.1:3000/
No comments to display
No comments to display