Gitea est une plateforme légère et open-source pour héberger des dépôts Git, alternative simple à GitHub/GitLab pour l'auto-hébergement.
Dans ce guide, nous verrons comment installer Gitea sur un serveur Linux, le configurer pour la production, et assurer sa sécurité et sa maintenance.
Plan de l'article
- Pré-requis et choix d'architecture
- Installation de Gitea (binaire ou Docker)
- Configuration initiale et base de données (MySQL/PostgreSQL)
- Configuration HTTPS et reverse-proxy (Nginx/HAProxy)
- Sauvegardes et maintenance
- Bonnes pratiques de sécurité
- Conclusion
Pré-requis et choix d'architecture
- Serveur Linux (Debian/Ubuntu recommandés) avec au minimum 1 CPU, 1-2GB RAM pour petites équipes.
- Base de données : MySQL/MariaDB ou PostgreSQL.
- Reverse-proxy (Nginx/HAProxy) pour gérer TLS et virtual hosts.
- Nom de domaine et certificats TLS (Let’s Encrypt).
Installation (binaire)
Télécharger la dernière version et créer un utilisateur système :
wget -O gitea https://dl.gitea.io/gitea/<VERSION>/gitea-<ARCH>
chmod +x gitea
sudo useradd --system --home /home/git --shell /bin/bash git
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R git:git /var/lib/gitea
sudo cp gitea /usr/local/bin/gitea
Créer un service systemd /etc/systemd/system/gitea.service
puis démarrer :
sudo systemctl daemon-reload
sudo systemctl enable --now gitea
Installation (Docker)
Exemple Docker Compose minimal :
version: '3'
services:
db:
image: mariadb:10.6
environment:
- MYSQL_ROOT_PASSWORD=change_me
- MYSQL_DATABASE=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=change_me
volumes:
- db-data:/var/lib/mysql
gitea:
image: gitea/gitea:latest
depends_on:
- db
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- gitea-data:/data
ports:
- "3000:3000"
volumes:
db-data:
gitea-data:
Configuration initiale
Accédez à l'interface web (http://server:3000) pour la configuration initiale : base de données, utilisateur admin, URL racine.
Configurer le reverse-proxy pour exposer Gitea sur https://git.exemple.com
.
Reverse-proxy (Nginx) exemple
server {
listen 80;
server_name git.exemple.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name git.exemple.com;
ssl_certificate /etc/letsencrypt/live/git.exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.exemple.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Sauvegardes et maintenance
- Sauvegarder
/var/lib/gitea
(données) et la base de données régulièrement. - Mettre à jour Gitea selon le calendrier de sécurité.
- Surveiller les métriques et logs (ex: Prometheus, Grafana, ou outils classiques).
Bonnes pratiques de sécurité
- Utiliser HTTPS obligatoire et HSTS.
- Restreindre l'accès SSH/HTTP si nécessaire.
- Mettre en place des sauvegardes automatisées et tests de restauration.
- Limiter les droits des comptes système et tenir à jour les dépendances.
Conclusion
Gitea offre une solution légère et efficace pour l'auto-hébergement de dépôts Git.
Avec une architecture soignée (base de données, reverse-proxy, sauvegardes), vous obtenez une plateforme robuste pour les équipes de développement.