publish: Gitea : installation sur Debian 13 avec PostgreSQL
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"title": "Gitea : installation sur Debian 13 avec PostgreSQL",
|
|
||||||
"_updated_at": "2026-05-16 15:09:57",
|
|
||||||
"slug": "gitea-l-installation",
|
|
||||||
"published": true,
|
|
||||||
"published_at": "2025-11-07 11:01",
|
|
||||||
"category": "informatique",
|
|
||||||
"tags": [],
|
|
||||||
"seo_title": "",
|
|
||||||
"seo_description": ""
|
|
||||||
}
|
|
||||||
@@ -1,251 +0,0 @@
|
|||||||
# Gitea : installation sur Debian 13 avec PostgreSQL
|
|
||||||
|
|
||||||
Gitea est une forge Git légère, auto-hébergée, écrite en Go. Elle offre une alternative sobre à GitLab pour héberger ses dépôts, ses tickets et ses pull requests sur une machine modeste. Ce guide décrit une installation complète sur **Debian 13**, avec **PostgreSQL** comme base de données et un **reverse-proxy** (Nginx dans l'exemple) pour exposer Gitea derrière HTTPS sur `git.abonnel.fr`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. Pré-requis
|
|
||||||
|
|
||||||
- Un serveur Debian 13 à jour :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt update && sudo apt upgrade -y
|
|
||||||
```
|
|
||||||
- Les paquets de base :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install -y git ca-certificates wget
|
|
||||||
```
|
|
||||||
- Un enregistrement DNS A (ou AAAA) pour `git.abonnel.fr` pointant vers le serveur.
|
|
||||||
- Les ports 80 et 443 ouverts (pour le reverse-proxy et Let's Encrypt).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. PostgreSQL : installation et création de la base
|
|
||||||
|
|
||||||
1. Installer PostgreSQL :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install -y postgresql postgresql-contrib
|
|
||||||
```
|
|
||||||
2. Créer la base et l'utilisateur Gitea. On ouvre d'abord un shell `postgres`, puis `psql` :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i -u postgres
|
|
||||||
```
|
|
||||||
```sql
|
|
||||||
psql
|
|
||||||
CREATE ROLE gitea WITH LOGIN PASSWORD 'votre_mot_de_passe_sécurisé';
|
|
||||||
CREATE DATABASE gitea WITH OWNER gitea ENCODING 'UTF8' TEMPLATE template0;
|
|
||||||
\q
|
|
||||||
```
|
|
||||||
```bash
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
|
|
||||||
Ces étapes suivent la documentation officielle Gitea pour PostgreSQL. ([Gitea Documentation][1])
|
|
||||||
3. Vérifier que le service tourne :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl status postgresql
|
|
||||||
```
|
|
||||||
|
|
||||||
> Si Gitea et PostgreSQL sont sur la même machine, la configuration par défaut (connexions locales via `127.0.0.1`) suffit. Sinon, ajustez `pg_hba.conf` et `postgresql.conf`.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Installation de Gitea
|
|
||||||
|
|
||||||
### 3.1 Utilisateur système
|
|
||||||
|
|
||||||
Gitea s'exécute sous un utilisateur dédié, sans mot de passe :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
|
|
||||||
--group --disabled-password --home /home/git git
|
|
||||||
```
|
|
||||||
([Gitea Documentation][2])
|
|
||||||
|
|
||||||
### 3.2 Arborescence et permissions
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo mkdir -p /var/lib/gitea/{custom,data,log}
|
|
||||||
sudo chown -R git:git /var/lib/gitea/
|
|
||||||
sudo chmod -R 750 /var/lib/gitea/
|
|
||||||
sudo mkdir /etc/gitea
|
|
||||||
sudo chown root:git /etc/gitea
|
|
||||||
sudo chmod 770 /etc/gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
Le `770` sur `/etc/gitea` permet à l'assistant web d'écrire `app.ini` pendant l'installation. On le resserrera ensuite. ([Gitea Documentation][3])
|
|
||||||
|
|
||||||
### 3.3 Récupérer le binaire
|
|
||||||
|
|
||||||
Vérifiez la dernière version sur [dl.gitea.com](https://dl.gitea.com/gitea/) avant de télécharger :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
wget -O gitea https://dl.gitea.com/gitea/1.24.7/gitea-1.24.7-linux-amd64
|
|
||||||
chmod +x gitea
|
|
||||||
sudo mv gitea /usr/local/bin/gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
Pensez à vérifier la signature GPG ou la somme `.sha256` publiée à côté du binaire. ([Gitea Documentation][2])
|
|
||||||
|
|
||||||
### 3.4 Service systemd
|
|
||||||
|
|
||||||
Créez `/etc/systemd/system/gitea.service` :
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[Unit]
|
|
||||||
Description=Gitea (Git with a cup of tea)
|
|
||||||
After=network.target postgresql.service
|
|
||||||
Requires=postgresql.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=git
|
|
||||||
Group=git
|
|
||||||
WorkingDirectory=/var/lib/gitea/
|
|
||||||
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
|
||||||
Restart=always
|
|
||||||
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
Puis :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo systemctl enable --now gitea
|
|
||||||
sudo systemctl status gitea
|
|
||||||
```
|
|
||||||
([Gitea Documentation][4])
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Assistant d'installation web
|
|
||||||
|
|
||||||
Avant de brancher le proxy HTTPS, terminez l'install initiale en HTTP direct : ouvrez `http://votre-serveur:3000` et complétez l'assistant.
|
|
||||||
|
|
||||||
- **Type de base** : PostgreSQL
|
|
||||||
- **Host** : `127.0.0.1:5432`
|
|
||||||
- **Database** : `gitea`
|
|
||||||
- **Username** : `gitea`
|
|
||||||
- **Password** : celui défini en section 2
|
|
||||||
- **Base URL** : `https://git.abonnel.fr/` (l'URL publique finale, même si l'on est encore en HTTP)
|
|
||||||
- Créez le compte administrateur.
|
|
||||||
|
|
||||||
L'assistant écrit `/etc/gitea/app.ini`. Vous pouvez ensuite resserrer les permissions :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo chmod 750 /etc/gitea
|
|
||||||
sudo chmod 640 /etc/gitea/app.ini
|
|
||||||
```
|
|
||||||
([James R. S. Kemp Git][5])
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. Reverse-proxy et HTTPS
|
|
||||||
|
|
||||||
### 5.1 Nginx
|
|
||||||
|
|
||||||
`/etc/nginx/sites-available/git.abonnel.fr` :
|
|
||||||
|
|
||||||
```nginx
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name git.abonnel.fr;
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 443 ssl http2;
|
|
||||||
server_name git.abonnel.fr;
|
|
||||||
|
|
||||||
ssl_certificate /etc/letsencrypt/live/git.abonnel.fr/fullchain.pem;
|
|
||||||
ssl_certificate_key /etc/letsencrypt/live/git.abonnel.fr/privkey.pem;
|
|
||||||
|
|
||||||
client_max_body_size 512M; # pour les gros push
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://127.0.0.1:3000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Activez le site, testez la conf, rechargez :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo ln -s /etc/nginx/sites-available/git.abonnel.fr /etc/nginx/sites-enabled/
|
|
||||||
sudo nginx -t && sudo systemctl reload nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour Traefik ou un autre proxy, le principe reste identique : router `git.abonnel.fr` vers `127.0.0.1:3000` et terminer TLS au niveau du proxy.
|
|
||||||
|
|
||||||
### 5.2 Certificat Let's Encrypt
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install -y certbot python3-certbot-nginx
|
|
||||||
sudo certbot --nginx -d git.abonnel.fr
|
|
||||||
```
|
|
||||||
|
|
||||||
Certbot ajoute lui-même la directive SSL et programme le renouvellement.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. Ajustements dans `app.ini`
|
|
||||||
|
|
||||||
Quelques réglages utiles dans `/etc/gitea/app.ini` une fois le proxy en place :
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[server]
|
|
||||||
DOMAIN = git.abonnel.fr
|
|
||||||
ROOT_URL = https://git.abonnel.fr/
|
|
||||||
HTTP_ADDR = 127.0.0.1
|
|
||||||
HTTP_PORT = 3000
|
|
||||||
START_SSH_SERVER = false
|
|
||||||
SSH_PORT = 22
|
|
||||||
|
|
||||||
[database]
|
|
||||||
DB_TYPE = postgres
|
|
||||||
HOST = 127.0.0.1:5432
|
|
||||||
NAME = gitea
|
|
||||||
USER = gitea
|
|
||||||
PASSWD = votre_mot_de_passe
|
|
||||||
SSL_MODE = disable
|
|
||||||
|
|
||||||
[service]
|
|
||||||
DISABLE_REGISTRATION = true
|
|
||||||
REQUIRE_SIGNIN_VIEW = false
|
|
||||||
```
|
|
||||||
|
|
||||||
`HTTP_ADDR = 127.0.0.1` empêche Gitea d'écouter sur l'extérieur — seul Nginx le voit. Désactiver l'inscription publique évite la création de comptes par des inconnus.
|
|
||||||
|
|
||||||
Redémarrez après modification :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl restart gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. Sécurité et entretien
|
|
||||||
|
|
||||||
- **Pare-feu** : n'exposez que 80, 443 et 22 (SSH) ; gardez 3000 et 5432 en local.
|
|
||||||
- **Sauvegardes** : dump quotidien de la base (`pg_dump gitea`) + archive de `/var/lib/gitea/data` (dépôts, attachments, LFS).
|
|
||||||
- **Logs** : `/var/lib/gitea/log/` et `journalctl -u gitea`.
|
|
||||||
- **Mises à jour** : remplacer le binaire `/usr/local/bin/gitea` par une version récente, puis `systemctl restart gitea`. PostgreSQL suit les mises à jour Debian.
|
|
||||||
- **SSH Git** : si vous utilisez le port 22 du système pour `git@git.abonnel.fr:...`, ajoutez les clés publiques dans Gitea (qui les pousse dans `~git/.ssh/authorized_keys`). Pensez à `fail2ban` pour limiter le brute-force SSH.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
[1]: https://docs.gitea.com/enterprise/installation/linux?utm_source=chatgpt.com "Install on Linux | Gitea Enterprise Documentations"
|
|
||||||
[2]: https://docs.gitea.com/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
|
||||||
[3]: https://docs.gitea.com/1.18/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
|
||||||
[4]: https://docs.gitea.com/1.20/category/installation?utm_source=chatgpt.com "Installation | Gitea Documentation"
|
|
||||||
[5]: https://git.jamesrskemp.com/hosting/gitea.html?utm_source=chatgpt.com "Gitea - Git Commands by James Skemp"
|
|
||||||
@@ -1,221 +1,249 @@
|
|||||||
# gitea, l'installation
|
# Gitea : installation sur Debian 13 avec PostgreSQL
|
||||||
|
|
||||||
Voici un guide pas à pas pour installer Gitea sur Debian 13 avec PostgreSQL comme base de données, et configurer un reverse-proxy (par ex. Traefik ou Nginx) pour servir Gitea.
|
Gitea est une forge Git légère, auto-hébergée, écrite en Go. Elle offre une alternative sobre à GitLab pour héberger ses dépôts, ses tickets et ses pull requests sur une machine modeste. Ce guide décrit une installation complète sur **Debian 13**, avec **PostgreSQL** comme base de données et un **reverse-proxy** (Nginx dans l'exemple) pour exposer Gitea derrière HTTPS sur `git.abonnel.fr`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Pré-requis
|
## 1. Pré-requis
|
||||||
|
|
||||||
* Un serveur Debian 13 à jour.
|
- Un serveur Debian 13 à jour :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt update && sudo apt upgrade -y
|
sudo apt update && sudo apt upgrade -y
|
||||||
```
|
```
|
||||||
* Installer Git, et éventuellement d’autres dépendances.
|
- Les paquets de base :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install -y git ca-certificates
|
sudo apt install -y git ca-certificates wget
|
||||||
```
|
```
|
||||||
* Un nom de domaine `git.abonnel.fr` pointant vers votre serveur (DNS A ou AAAA).
|
- Un enregistrement DNS A (ou AAAA) pour `git.abonnel.fr` pointant vers le serveur.
|
||||||
* Assurez-vous que le port 80 et/ou 443 sont ouverts sur le serveur (pour le proxy).
|
- Les ports 80 et 443 ouverts (pour le reverse-proxy et Let's Encrypt).
|
||||||
* Installer PostgreSQL.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Installer PostgreSQL et créer base & utilisateur
|
## 2. PostgreSQL : installation et création de la base
|
||||||
|
|
||||||
1. Installer PostgreSQL (Debian 13 inclut postgresql dans ses dépôts).
|
1. Installer PostgreSQL :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install -y postgresql postgresql-contrib
|
sudo apt install -y postgresql postgresql-contrib
|
||||||
```
|
```
|
||||||
2. Passer à l’utilisateur postgres et créer la base + utilisateur pour Gitea :
|
2. Créer la base et l'utilisateur Gitea. On ouvre d'abord un shell `postgres`, puis `psql` :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo -i -u postgres
|
sudo -i -u postgres
|
||||||
|
```
|
||||||
|
```sql
|
||||||
psql
|
psql
|
||||||
CREATE DATABASE gitea WITH ENCODING 'UTF8' TEMPLATE template0;
|
CREATE ROLE gitea WITH LOGIN PASSWORD 'votre_mot_de_passe_sécurisé';
|
||||||
CREATE USER gitea WITH PASSWORD 'votre_mot_de_passe_sécurisé';
|
CREATE DATABASE gitea WITH OWNER gitea ENCODING 'UTF8' TEMPLATE template0;
|
||||||
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
|
|
||||||
\q
|
\q
|
||||||
|
```
|
||||||
|
```bash
|
||||||
exit
|
exit
|
||||||
```
|
```
|
||||||
|
|
||||||
Ces commandes sont conformes à la documentation Gitea pour PostgreSQL. ([Gitea Documentation][1])
|
Ces étapes suivent la documentation officielle Gitea pour PostgreSQL. ([Gitea Documentation][1])
|
||||||
3. Vérifier que PostgreSQL fonctionne :
|
3. Vérifier que le service tourne :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo systemctl status postgresql
|
sudo systemctl status postgresql
|
||||||
```
|
```
|
||||||
4. (Optionnel) Modifier le fichier `pg_hba.conf` si vous voulez autoriser certaines connexions supplémentaires (ex: accès réseau).
|
|
||||||
|
> Si Gitea et PostgreSQL sont sur la même machine, la configuration par défaut (connexions locales via `127.0.0.1`) suffit. Sinon, ajustez `pg_hba.conf` et `postgresql.conf`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Installer Gitea
|
## 3. Installation de Gitea
|
||||||
|
|
||||||
1. Créer un utilisateur système qui va exécuter Gitea :
|
### 3.1 Utilisateur système
|
||||||
|
|
||||||
```bash
|
Gitea s'exécute sous un utilisateur dédié, sans mot de passe :
|
||||||
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
|
|
||||||
```
|
|
||||||
|
|
||||||
([Gitea Documentation][2])
|
```bash
|
||||||
2. Créer les dossiers de travail :
|
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
|
||||||
|
--group --disabled-password --home /home/git git
|
||||||
|
```
|
||||||
|
([Gitea Documentation][2])
|
||||||
|
|
||||||
```bash
|
### 3.2 Arborescence et permissions
|
||||||
sudo mkdir -p /var/lib/gitea/{custom,data,log}
|
|
||||||
sudo chown -R git:git /var/lib/gitea/
|
|
||||||
sudo chmod -R 750 /var/lib/gitea/
|
|
||||||
sudo mkdir /etc/gitea
|
|
||||||
sudo chown root:git /etc/gitea
|
|
||||||
sudo chmod 770 /etc/gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
([Gitea Documentation][3])
|
```bash
|
||||||
3. Télécharger le binaire Gitea :
|
sudo mkdir -p /var/lib/gitea/{custom,data,log}
|
||||||
|
sudo chown -R git:git /var/lib/gitea/
|
||||||
|
sudo chmod -R 750 /var/lib/gitea/
|
||||||
|
sudo mkdir /etc/gitea
|
||||||
|
sudo chown root:git /etc/gitea
|
||||||
|
sudo chmod 770 /etc/gitea
|
||||||
|
```
|
||||||
|
|
||||||
```bash
|
Le `770` sur `/etc/gitea` permet à l'assistant web d'écrire `app.ini` pendant l'installation. On le resserrera ensuite. ([Gitea Documentation][3])
|
||||||
wget -O gitea https://dl.gitea.com/gitea/1.24.7/gitea-1.24.7-linux-amd64
|
|
||||||
chmod +x gitea
|
|
||||||
sudo mv gitea /usr/local/bin/gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
(Vérifiez la version la plus récente sur le site officiel) ([Gitea Documentation][2])
|
### 3.3 Récupérer le binaire
|
||||||
4. Créer un fichier de service systemd pour Gitea. Exemple minimal (`/etc/systemd/system/gitea.service`) :
|
|
||||||
|
|
||||||
```ini
|
Vérifiez la dernière version sur [dl.gitea.com](https://dl.gitea.com/gitea/) avant de télécharger :
|
||||||
[Unit]
|
|
||||||
Description=Gitea (Git with a cup of tea)
|
|
||||||
After=network.target postgresql.service
|
|
||||||
|
|
||||||
[Service]
|
```bash
|
||||||
User=git
|
wget -O gitea https://dl.gitea.com/gitea/1.24.7/gitea-1.24.7-linux-amd64
|
||||||
Group=git
|
chmod +x gitea
|
||||||
WorkingDirectory=/var/lib/gitea/
|
sudo mv gitea /usr/local/bin/gitea
|
||||||
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
```
|
||||||
Restart=always
|
|
||||||
Environment=USER=git HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
|
|
||||||
|
|
||||||
[Install]
|
Pensez à vérifier la signature GPG ou la somme `.sha256` publiée à côté du binaire. ([Gitea Documentation][2])
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensuite :
|
### 3.4 Service systemd
|
||||||
|
|
||||||
```bash
|
Créez `/etc/systemd/system/gitea.service` :
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo systemctl enable --now gitea
|
|
||||||
sudo systemctl status gitea
|
|
||||||
```
|
|
||||||
|
|
||||||
([Gitea Documentation][4])
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea (Git with a cup of tea)
|
||||||
|
After=network.target postgresql.service
|
||||||
|
Requires=postgresql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=git
|
||||||
|
Group=git
|
||||||
|
WorkingDirectory=/var/lib/gitea/
|
||||||
|
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now gitea
|
||||||
|
sudo systemctl status gitea
|
||||||
|
```
|
||||||
|
([Gitea Documentation][4])
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Configuration via l’interface web
|
## 4. Assistant d'installation web
|
||||||
|
|
||||||
* Ouvrez [http://votre-serveur:3000](http://votre-serveur:3000) (ou le port que Gitea utilise) dans un navigateur.
|
Avant de brancher le proxy HTTPS, terminez l'install initiale en HTTP direct : ouvrez `http://votre-serveur:3000` et complétez l'assistant.
|
||||||
* Dans l’assistant d’installation, choisissez *PostgreSQL* comme type de base de données. Entrez :
|
|
||||||
|
|
||||||
* Host : `localhost:5432` (ou l’IP/port selon)
|
- **Type de base** : PostgreSQL
|
||||||
* Database : `gitea`
|
- **Host** : `127.0.0.1:5432`
|
||||||
* Username : `gitea`
|
- **Database** : `gitea`
|
||||||
* Password : celui que vous avez défini
|
- **Username** : `gitea`
|
||||||
* Dans le champ "Base URL", indiquez `https://git.abonnel.fr/` (ou http selon votre setup).
|
- **Password** : celui défini en section 2
|
||||||
* Complétez le reste (admin account, etc.).
|
- **Base URL** : `https://git.abonnel.fr/` (l'URL publique finale, même si l'on est encore en HTTP)
|
||||||
([James R. S. Kemp Git][5])
|
- Créez le compte administrateur.
|
||||||
|
|
||||||
|
L'assistant écrit `/etc/gitea/app.ini`. Vous pouvez ensuite resserrer les permissions :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo chmod 750 /etc/gitea
|
||||||
|
sudo chmod 640 /etc/gitea/app.ini
|
||||||
|
```
|
||||||
|
([James R. S. Kemp Git][5])
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Configurer reverse-proxy pour `git.abonnel.fr`
|
## 5. Reverse-proxy et HTTPS
|
||||||
|
|
||||||
Si vous utilisez Nginx ou Traefik (ou un autre proxy) vous devez rediriger le domaine vers Gitea.
|
### 5.1 Nginx
|
||||||
|
|
||||||
### Exemple avec Nginx :
|
`/etc/nginx/sites-available/git.abonnel.fr` :
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name git.abonnel.fr;
|
server_name git.abonnel.fr;
|
||||||
|
|
||||||
# redirection vers HTTPS (si certbot/Let’s Encrypt)
|
|
||||||
return 301 https://$host$request_uri;
|
return 301 https://$host$request_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl http2;
|
||||||
server_name git.abonnel.fr;
|
server_name git.abonnel.fr;
|
||||||
|
|
||||||
ssl_certificate /etc/letsencrypt/live/git.abonnel.fr/fullchain.pem;
|
ssl_certificate /etc/letsencrypt/live/git.abonnel.fr/fullchain.pem;
|
||||||
ssl_certificate_key /etc/letsencrypt/live/git.abonnel.fr/privkey.pem;
|
ssl_certificate_key /etc/letsencrypt/live/git.abonnel.fr/privkey.pem;
|
||||||
|
|
||||||
|
client_max_body_size 512M; # pour les gros push
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://127.0.0.1:3000;
|
proxy_pass http://127.0.0.1:3000;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Cet exemple est inspiré des tutos d’installation Gitea + Nginx. ([James R. S. Kemp Git][5])
|
Activez le site, testez la conf, rechargez :
|
||||||
Si vous utilisez un autre proxy (ex: Traefik ou « zoraxyproxy »), adaptez la configuration pour qu’il fasse passer `git.abonnel.fr` vers `localhost:3000` et gère SSL.
|
|
||||||
|
|
||||||
### Activer HTTPS
|
```bash
|
||||||
|
sudo ln -s /etc/nginx/sites-available/git.abonnel.fr /etc/nginx/sites-enabled/
|
||||||
|
sudo nginx -t && sudo systemctl reload nginx
|
||||||
|
```
|
||||||
|
|
||||||
* Installez `certbot` ou utilisez votre gestionnaire de certificats.
|
Pour Traefik ou un autre proxy, le principe reste identique : router `git.abonnel.fr` vers `127.0.0.1:3000` et terminer TLS au niveau du proxy.
|
||||||
|
|
||||||
```bash
|
### 5.2 Certificat Let's Encrypt
|
||||||
sudo apt install -y certbot python3-certbot-nginx
|
|
||||||
sudo certbot --nginx -d git.abonnel.fr
|
```bash
|
||||||
```
|
sudo apt install -y certbot python3-certbot-nginx
|
||||||
* Vérifiez que le certificat est actif et que `https://git.abonnel.fr` fonctionne.
|
sudo certbot --nginx -d git.abonnel.fr
|
||||||
|
```
|
||||||
|
|
||||||
|
Certbot ajoute lui-même la directive SSL et programme le renouvellement.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Configuration finale dans app.ini
|
## 6. Ajustements dans `app.ini`
|
||||||
|
|
||||||
Après installation, vous pouvez ajuster `/etc/gitea/app.ini` (ou via l’interface). Exemples de réglages utiles :
|
Quelques réglages utiles dans `/etc/gitea/app.ini` une fois le proxy en place :
|
||||||
|
|
||||||
* Dans `[server]` :
|
```ini
|
||||||
|
[server]
|
||||||
|
DOMAIN = git.abonnel.fr
|
||||||
|
ROOT_URL = https://git.abonnel.fr/
|
||||||
|
HTTP_ADDR = 127.0.0.1
|
||||||
|
HTTP_PORT = 3000
|
||||||
|
START_SSH_SERVER = false
|
||||||
|
SSH_PORT = 22
|
||||||
|
|
||||||
```
|
[database]
|
||||||
ROOT_URL = https://git.abonnel.fr/
|
DB_TYPE = postgres
|
||||||
HTTP_PORT = 3000
|
HOST = 127.0.0.1:5432
|
||||||
SSH_PORT = 22 # ou le port SSH que vous utilisez pour Git
|
NAME = gitea
|
||||||
START_SSH_SERVER = false # si vous n’utilisez pas le serveur SSH interne
|
USER = gitea
|
||||||
DOMAIN = git.abonnel.fr
|
PASSWD = votre_mot_de_passe
|
||||||
```
|
SSL_MODE = disable
|
||||||
* Dans `[database]` :
|
|
||||||
|
|
||||||
```
|
[service]
|
||||||
DB_TYPE = postgres
|
DISABLE_REGISTRATION = true
|
||||||
HOST = 127.0.0.1:5432
|
REQUIRE_SIGNIN_VIEW = false
|
||||||
NAME = gitea
|
```
|
||||||
USER = gitea
|
|
||||||
PASSWD = votre_mot_de_passe
|
|
||||||
SSL_MODE = disable # ou require selon votre config
|
|
||||||
```
|
|
||||||
* Redémarrez Gitea après modification :
|
|
||||||
|
|
||||||
```bash
|
`HTTP_ADDR = 127.0.0.1` empêche Gitea d'écouter sur l'extérieur — seul Nginx le voit. Désactiver l'inscription publique évite la création de comptes par des inconnus.
|
||||||
sudo systemctl restart gitea
|
|
||||||
```
|
Redémarrez après modification :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Sécuriser & entretien
|
## 7. Sécurité et entretien
|
||||||
|
|
||||||
* Assurez-vous que seuls les ports nécessaires sont exposés (ex: 80/443 via proxy, 3000 en local si non exposé).
|
- **Pare-feu** : n'exposez que 80, 443 et 22 (SSH) ; gardez 3000 et 5432 en local.
|
||||||
* Faites des sauvegardes régulières : base PostgreSQL + dossier `/var/lib/gitea/data` (ou vos dépôts).
|
- **Sauvegardes** : dump quotidien de la base (`pg_dump gitea`) + archive de `/var/lib/gitea/data` (dépôts, attachments, LFS).
|
||||||
* Vérifiez les logs de Gitea (souvent dans `/var/lib/gitea/log/`).
|
- **Logs** : `/var/lib/gitea/log/` et `journalctl -u gitea`.
|
||||||
* Gardez Gitea et PostgreSQL à jour.
|
- **Mises à jour** : remplacer le binaire `/usr/local/bin/gitea` par une version récente, puis `systemctl restart gitea`. PostgreSQL suit les mises à jour Debian.
|
||||||
* Si vous utilisez SSH pour les repos Git, configurez correctement les clés SSH utilisateur et vérifiez que l’utilisateur `git` a bien les permissions.
|
- **SSH Git** : si vous utilisez le port 22 du système pour `git@git.abonnel.fr:...`, ajoutez les clés publiques dans Gitea (qui les pousse dans `~git/.ssh/authorized_keys`). Pensez à `fail2ban` pour limiter le brute-force SSH.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
[1]: https://docs.gitea.com/enterprise/installation/linux?utm_source=chatgpt.com "Install on Linux | Gitea Enterprise Documentations"
|
[1]: https://docs.gitea.com/enterprise/installation/linux?utm_source=chatgpt.com "Install on Linux | Gitea Enterprise Documentations"
|
||||||
[2]: https://docs.gitea.com/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
[2]: https://docs.gitea.com/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
||||||
[3]: https://docs.gitea.com/1.18/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
[3]: https://docs.gitea.com/1.18/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
||||||
|
|||||||
@@ -1,12 +1,27 @@
|
|||||||
{
|
{
|
||||||
"uuid": "f008f509-2cad-437f-9850-7b39ec37262a",
|
"uuid": "f008f509-2cad-437f-9850-7b39ec37262a",
|
||||||
"slug": "gitea-l-installation",
|
"slug": "gitea-l-installation",
|
||||||
"title": "gitea, l'installation",
|
"title": "Gitea : installation sur Debian 13 avec PostgreSQL",
|
||||||
"author": "cedric@abonnel.fr",
|
"author": "cedric@abonnel.fr",
|
||||||
"published": true,
|
"published": true,
|
||||||
"published_at": "2025-11-07 11:01:57",
|
"featured": false,
|
||||||
|
"published_at": "2025-11-07 11:01",
|
||||||
"created_at": "2025-11-07 11:01:57",
|
"created_at": "2025-11-07 11:01:57",
|
||||||
"updated_at": "2025-11-07 11:01:57",
|
"updated_at": "2026-05-16 15:09:59",
|
||||||
"revisions": [],
|
"revisions": [
|
||||||
"category": "informatique"
|
{
|
||||||
|
"n": 1,
|
||||||
|
"date": "2026-05-16 15:09:59",
|
||||||
|
"comment": "Titre modifié, contenu modifié",
|
||||||
|
"title": "gitea, l'installation"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cover": "",
|
||||||
|
"files_meta": [],
|
||||||
|
"external_links": [],
|
||||||
|
"seo_title": "",
|
||||||
|
"seo_description": "",
|
||||||
|
"og_image": "",
|
||||||
|
"category": "informatique",
|
||||||
|
"tags": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,223 @@
|
|||||||
|
# gitea, l'installation
|
||||||
|
|
||||||
|
Voici un guide pas à pas pour installer Gitea sur Debian 13 avec PostgreSQL comme base de données, et configurer un reverse-proxy (par ex. Traefik ou Nginx) pour servir Gitea.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Pré-requis
|
||||||
|
|
||||||
|
* Un serveur Debian 13 à jour.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
```
|
||||||
|
* Installer Git, et éventuellement d’autres dépendances.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install -y git ca-certificates
|
||||||
|
```
|
||||||
|
* Un nom de domaine `git.abonnel.fr` pointant vers votre serveur (DNS A ou AAAA).
|
||||||
|
* Assurez-vous que le port 80 et/ou 443 sont ouverts sur le serveur (pour le proxy).
|
||||||
|
* Installer PostgreSQL.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Installer PostgreSQL et créer base & utilisateur
|
||||||
|
|
||||||
|
1. Installer PostgreSQL (Debian 13 inclut postgresql dans ses dépôts).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install -y postgresql postgresql-contrib
|
||||||
|
```
|
||||||
|
2. Passer à l’utilisateur postgres et créer la base + utilisateur pour Gitea :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo -i -u postgres
|
||||||
|
psql
|
||||||
|
CREATE DATABASE gitea WITH ENCODING 'UTF8' TEMPLATE template0;
|
||||||
|
CREATE USER gitea WITH PASSWORD 'votre_mot_de_passe_sécurisé';
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
|
||||||
|
\q
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
Ces commandes sont conformes à la documentation Gitea pour PostgreSQL. ([Gitea Documentation][1])
|
||||||
|
3. Vérifier que PostgreSQL fonctionne :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl status postgresql
|
||||||
|
```
|
||||||
|
4. (Optionnel) Modifier le fichier `pg_hba.conf` si vous voulez autoriser certaines connexions supplémentaires (ex: accès réseau).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Installer Gitea
|
||||||
|
|
||||||
|
1. Créer un utilisateur système qui va exécuter Gitea :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
|
||||||
|
```
|
||||||
|
|
||||||
|
([Gitea Documentation][2])
|
||||||
|
2. Créer les dossiers de travail :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /var/lib/gitea/{custom,data,log}
|
||||||
|
sudo chown -R git:git /var/lib/gitea/
|
||||||
|
sudo chmod -R 750 /var/lib/gitea/
|
||||||
|
sudo mkdir /etc/gitea
|
||||||
|
sudo chown root:git /etc/gitea
|
||||||
|
sudo chmod 770 /etc/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
([Gitea Documentation][3])
|
||||||
|
3. Télécharger le binaire Gitea :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget -O gitea https://dl.gitea.com/gitea/1.24.7/gitea-1.24.7-linux-amd64
|
||||||
|
chmod +x gitea
|
||||||
|
sudo mv gitea /usr/local/bin/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
(Vérifiez la version la plus récente sur le site officiel) ([Gitea Documentation][2])
|
||||||
|
4. Créer un fichier de service systemd pour Gitea. Exemple minimal (`/etc/systemd/system/gitea.service`) :
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea (Git with a cup of tea)
|
||||||
|
After=network.target postgresql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=git
|
||||||
|
Group=git
|
||||||
|
WorkingDirectory=/var/lib/gitea/
|
||||||
|
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
Restart=always
|
||||||
|
Environment=USER=git HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensuite :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now gitea
|
||||||
|
sudo systemctl status gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
([Gitea Documentation][4])
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Configuration via l’interface web
|
||||||
|
|
||||||
|
* Ouvrez [http://votre-serveur:3000](http://votre-serveur:3000) (ou le port que Gitea utilise) dans un navigateur.
|
||||||
|
* Dans l’assistant d’installation, choisissez *PostgreSQL* comme type de base de données. Entrez :
|
||||||
|
|
||||||
|
* Host : `localhost:5432` (ou l’IP/port selon)
|
||||||
|
* Database : `gitea`
|
||||||
|
* Username : `gitea`
|
||||||
|
* Password : celui que vous avez défini
|
||||||
|
* Dans le champ "Base URL", indiquez `https://git.abonnel.fr/` (ou http selon votre setup).
|
||||||
|
* Complétez le reste (admin account, etc.).
|
||||||
|
([James R. S. Kemp Git][5])
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Configurer reverse-proxy pour `git.abonnel.fr`
|
||||||
|
|
||||||
|
Si vous utilisez Nginx ou Traefik (ou un autre proxy) vous devez rediriger le domaine vers Gitea.
|
||||||
|
|
||||||
|
### Exemple avec Nginx :
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name git.abonnel.fr;
|
||||||
|
|
||||||
|
# redirection vers HTTPS (si certbot/Let’s Encrypt)
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name git.abonnel.fr;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/git.abonnel.fr/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/git.abonnel.fr/privkey.pem;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Cet exemple est inspiré des tutos d’installation Gitea + Nginx. ([James R. S. Kemp Git][5])
|
||||||
|
Si vous utilisez un autre proxy (ex: Traefik ou « zoraxyproxy »), adaptez la configuration pour qu’il fasse passer `git.abonnel.fr` vers `localhost:3000` et gère SSL.
|
||||||
|
|
||||||
|
### Activer HTTPS
|
||||||
|
|
||||||
|
* Installez `certbot` ou utilisez votre gestionnaire de certificats.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install -y certbot python3-certbot-nginx
|
||||||
|
sudo certbot --nginx -d git.abonnel.fr
|
||||||
|
```
|
||||||
|
* Vérifiez que le certificat est actif et que `https://git.abonnel.fr` fonctionne.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Configuration finale dans app.ini
|
||||||
|
|
||||||
|
Après installation, vous pouvez ajuster `/etc/gitea/app.ini` (ou via l’interface). Exemples de réglages utiles :
|
||||||
|
|
||||||
|
* Dans `[server]` :
|
||||||
|
|
||||||
|
```
|
||||||
|
ROOT_URL = https://git.abonnel.fr/
|
||||||
|
HTTP_PORT = 3000
|
||||||
|
SSH_PORT = 22 # ou le port SSH que vous utilisez pour Git
|
||||||
|
START_SSH_SERVER = false # si vous n’utilisez pas le serveur SSH interne
|
||||||
|
DOMAIN = git.abonnel.fr
|
||||||
|
```
|
||||||
|
* Dans `[database]` :
|
||||||
|
|
||||||
|
```
|
||||||
|
DB_TYPE = postgres
|
||||||
|
HOST = 127.0.0.1:5432
|
||||||
|
NAME = gitea
|
||||||
|
USER = gitea
|
||||||
|
PASSWD = votre_mot_de_passe
|
||||||
|
SSL_MODE = disable # ou require selon votre config
|
||||||
|
```
|
||||||
|
* Redémarrez Gitea après modification :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Sécuriser & entretien
|
||||||
|
|
||||||
|
* Assurez-vous que seuls les ports nécessaires sont exposés (ex: 80/443 via proxy, 3000 en local si non exposé).
|
||||||
|
* Faites des sauvegardes régulières : base PostgreSQL + dossier `/var/lib/gitea/data` (ou vos dépôts).
|
||||||
|
* Vérifiez les logs de Gitea (souvent dans `/var/lib/gitea/log/`).
|
||||||
|
* Gardez Gitea et PostgreSQL à jour.
|
||||||
|
* Si vous utilisez SSH pour les repos Git, configurez correctement les clés SSH utilisateur et vérifiez que l’utilisateur `git` a bien les permissions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
[1]: https://docs.gitea.com/enterprise/installation/linux?utm_source=chatgpt.com "Install on Linux | Gitea Enterprise Documentations"
|
||||||
|
[2]: https://docs.gitea.com/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
||||||
|
[3]: https://docs.gitea.com/1.18/installation/install-from-binary?utm_source=chatgpt.com "Installation from binary | Gitea Documentation"
|
||||||
|
[4]: https://docs.gitea.com/1.20/category/installation?utm_source=chatgpt.com "Installation | Gitea Documentation"
|
||||||
|
[5]: https://git.jamesrskemp.com/hosting/gitea.html?utm_source=chatgpt.com "Gitea - Git Commands by James Skemp"
|
||||||
Reference in New Issue
Block a user