From b918cbee3bf41d74d3dd15e6272aa48d10ba42b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sat, 16 May 2026 17:09:59 +0200 Subject: [PATCH] publish: Gitea : installation sur Debian 13 avec PostgreSQL --- .../draft_overlay.json | 11 - .../draft_overlay.md | 251 ---------------- f008f509-2cad-437f-9850-7b39ec37262a/index.md | 272 ++++++++++-------- .../meta.json | 25 +- .../revisions/0001.md | 223 ++++++++++++++ 5 files changed, 393 insertions(+), 389 deletions(-) delete mode 100644 f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.json delete mode 100644 f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.md create mode 100644 f008f509-2cad-437f-9850-7b39ec37262a/revisions/0001.md diff --git a/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.json b/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.json deleted file mode 100644 index 078f55a..0000000 --- a/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.json +++ /dev/null @@ -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": "" -} diff --git a/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.md b/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.md deleted file mode 100644 index ab22a66..0000000 --- a/f008f509-2cad-437f-9850-7b39ec37262a/draft_overlay.md +++ /dev/null @@ -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" \ No newline at end of file diff --git a/f008f509-2cad-437f-9850-7b39ec37262a/index.md b/f008f509-2cad-437f-9850-7b39ec37262a/index.md index d1dfb7f..ab22a66 100644 --- a/f008f509-2cad-437f-9850-7b39ec37262a/index.md +++ b/f008f509-2cad-437f-9850-7b39ec37262a/index.md @@ -1,223 +1,251 @@ -# 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 -* Un serveur Debian 13 à jour. +- Un serveur Debian 13 à jour : ```bash sudo apt update && sudo apt upgrade -y ``` -* Installer Git, et éventuellement d’autres dépendances. +- Les paquets de base : ```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). -* Assurez-vous que le port 80 et/ou 443 sont ouverts sur le serveur (pour le proxy). -* Installer PostgreSQL. +- 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. 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 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 sudo -i -u postgres + ``` + ```sql 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; + 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 commandes sont conformes à la documentation Gitea pour PostgreSQL. ([Gitea Documentation][1]) -3. Vérifier que PostgreSQL fonctionne : + Ces étapes suivent la documentation officielle Gitea pour PostgreSQL. ([Gitea Documentation][1]) +3. Vérifier que le service tourne : ```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). + +> 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 - sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git - ``` +Gitea s'exécute sous un utilisateur dédié, sans mot de passe : - ([Gitea Documentation][2]) -2. Créer les dossiers de travail : +```bash +sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ + --group --disabled-password --home /home/git git +``` +([Gitea Documentation][2]) - ```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 - ``` +### 3.2 Arborescence et permissions - ([Gitea Documentation][3]) -3. Télécharger le binaire Gitea : +```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 +``` - ```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 - ``` +Le `770` sur `/etc/gitea` permet à l'assistant web d'écrire `app.ini` pendant l'installation. On le resserrera ensuite. ([Gitea Documentation][3]) - (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`) : +### 3.3 Récupérer le binaire - ```ini - [Unit] - Description=Gitea (Git with a cup of tea) - After=network.target postgresql.service +Vérifiez la dernière version sur [dl.gitea.com](https://dl.gitea.com/gitea/) avant de télécharger : - [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 +```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 +``` - [Install] - WantedBy=multi-user.target - ``` +Pensez à vérifier la signature GPG ou la somme `.sha256` publiée à côté du binaire. ([Gitea Documentation][2]) - Ensuite : +### 3.4 Service systemd - ```bash - sudo systemctl daemon-reload - sudo systemctl enable --now gitea - sudo systemctl status gitea - ``` +Créez `/etc/systemd/system/gitea.service` : - ([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. -* Dans l’assistant d’installation, choisissez *PostgreSQL* comme type de base de données. Entrez : +Avant de brancher le proxy HTTPS, terminez l'install initiale en HTTP direct : ouvrez `http://votre-serveur:3000` et complétez l'assistant. - * 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]) +- **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. 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 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; + listen 443 ssl http2; 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; + 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 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. +Activez le site, testez la conf, rechargez : -### 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 - 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. +### 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. 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 - ``` - 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]` : +[database] +DB_TYPE = postgres +HOST = 127.0.0.1:5432 +NAME = gitea +USER = gitea +PASSWD = votre_mot_de_passe +SSL_MODE = disable - ``` - 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 : +[service] +DISABLE_REGISTRATION = true +REQUIRE_SIGNIN_VIEW = false +``` - ```bash - sudo systemctl restart gitea - ``` +`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é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é). -* 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. +- **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" +[5]: https://git.jamesrskemp.com/hosting/gitea.html?utm_source=chatgpt.com "Gitea - Git Commands by James Skemp" \ No newline at end of file diff --git a/f008f509-2cad-437f-9850-7b39ec37262a/meta.json b/f008f509-2cad-437f-9850-7b39ec37262a/meta.json index 900c582..77301e5 100644 --- a/f008f509-2cad-437f-9850-7b39ec37262a/meta.json +++ b/f008f509-2cad-437f-9850-7b39ec37262a/meta.json @@ -1,12 +1,27 @@ { "uuid": "f008f509-2cad-437f-9850-7b39ec37262a", "slug": "gitea-l-installation", - "title": "gitea, l'installation", + "title": "Gitea : installation sur Debian 13 avec PostgreSQL", "author": "cedric@abonnel.fr", "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", - "updated_at": "2025-11-07 11:01:57", - "revisions": [], - "category": "informatique" + "updated_at": "2026-05-16 15:09:59", + "revisions": [ + { + "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": [] } diff --git a/f008f509-2cad-437f-9850-7b39ec37262a/revisions/0001.md b/f008f509-2cad-437f-9850-7b39ec37262a/revisions/0001.md new file mode 100644 index 0000000..d1dfb7f --- /dev/null +++ b/f008f509-2cad-437f-9850-7b39ec37262a/revisions/0001.md @@ -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"