« Trace install tas - Gitea » : différence entre les versions
Créer la documentation de configuration Gitea |
Rendre la gestion du mot de passe PostgreSQL instructive |
||
| Ligne 41 : | Ligne 41 : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
read -r -s -p 'Mot de passe PostgreSQL Gitea: ' GITEA_DB_PASSWORD | read -r -s -p 'Mot de passe PostgreSQL Gitea: ' GITEA_DB_PASSWORD | ||
printf ' | printf '\n' | ||
printf '%s' "$GITEA_DB_PASSWORD" | podman secret create --replace gitea-postgres-password - | printf '%s' "$GITEA_DB_PASSWORD" | podman secret create --replace gitea-postgres-password - | ||
unset GITEA_DB_PASSWORD | unset GITEA_DB_PASSWORD | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Le mot de passe | === Visualiser la valeur actuelle === | ||
<code>podman secret inspect</code> affiche les métadonnées du secret, mais pas sa valeur. Pour la récupérer localement, on peut l'injecter temporairement dans un conteneur et l'afficher dans le terminal : | |||
<syntaxhighlight lang="bash"> | |||
podman run --rm \ | |||
--secret gitea-postgres-password,type=env,target=GITEA_DB_PASSWORD \ | |||
docker.io/library/postgres:17.10 \ | |||
sh -c 'printf "%s\n" "$GITEA_DB_PASSWORD"' | |||
</syntaxhighlight> | |||
Cette commande ne modifie ni PostgreSQL ni Gitea, mais révèle le mot de passe à l'écran. Ne pas l'utiliser dans une session partagée, une capture d'écran ou une commande enregistrée. | |||
=== Modifier le mot de passe === | |||
Le mot de passe doit être identique dans le rôle PostgreSQL <code>gitea</code> et dans le secret Podman <code>gitea-postgres-password</code>. <code>POSTGRES_PASSWORD</code> ne modifie pas un rôle déjà initialisé : il n'est utilisé qu'à la création initiale du répertoire de données. | |||
La méthode recommandée génère un mot de passe hexadécimal et modifie le rôle SQL avant de remplacer le secret : | |||
<syntaxhighlight lang="bash"> | |||
new_password="$(openssl rand -hex 32)" | |||
printf "ALTER ROLE gitea PASSWORD '%s';\n" "$new_password" \ | |||
| podman exec -i gitea-db psql -U gitea -d gitea -v ON_ERROR_STOP=1 -f - | |||
printf '%s' "$new_password" | podman secret create --replace gitea-postgres-password - | |||
unset new_password | |||
systemctl --user restart gitea.service | |||
</syntaxhighlight> | |||
Vérifier ensuite : | |||
<syntaxhighlight lang="bash"> | |||
podman exec gitea-db pg_isready -U gitea -d gitea | |||
systemctl --user is-active postgresql-gitea.service gitea.service | |||
curl -fsS -o /dev/null -w '%{http_code}\\n' http://127.0.0.1:8105/ | |||
</syntaxhighlight> | |||
Ne pas modifier uniquement le secret Podman ou uniquement le rôle SQL : les deux valeurs doivent rester synchronisées. | |||
== Étapes de configuration == | == Étapes de configuration == | ||
Dernière version du 4 août 2026 à 16:09
Trace install tas - Gitea
Gitea fournit le service Git local de tas.
Accès et exposition
- URL canonique :
https://gitea.lololand.org/ - Accès externe alternatif :
https://lololand.hopto.org:25702/ - Publication locale :
127.0.0.1:8105vers le port conteneur3000 - Le serveur SSH interne de Gitea est désactivé ; la surface publiée est HTTP/HTTPS.
Runtime
Le runtime est Podman rootless + Quadlet + systemd utilisateur.
- Application :
/home/loic/.config/containers/systemd/gitea.container - PostgreSQL :
/home/loic/.config/containers/systemd/postgresql-gitea.container - Réseau :
gitea-net, assuré par/home/loic/.config/systemd/user/gitea-network.service - Données Gitea : volume Podman
gitea_datamonté sur/data - Cache Gitea : volume Podman
gitea_cachemonté sur/cache - Données PostgreSQL :
/media/loic/nem/gitea/postgres - Reverse proxy : bloc Gitea dans
/etc/caddy/Caddyfile
Images actuellement utilisées et tags versionnés :
docker.io/gitea/gitea:1.27.1docker.io/library/postgres:17.10
Secret PostgreSQL
Les Quadlets ne contiennent plus la valeur du mot de passe. Les deux conteneurs utilisent le secret Podman gitea-postgres-password : POSTGRES_PASSWORD pour PostgreSQL et GITEA__database__PASSWD pour Gitea.
La valeur n'est jamais publiée dans cette documentation. Pour vérifier uniquement la présence du secret :
podman secret inspect gitea-postgres-password
Pour créer ou remplacer le secret sans l'écrire dans un Quadlet :
read -r -s -p 'Mot de passe PostgreSQL Gitea: ' GITEA_DB_PASSWORD
printf '\n'
printf '%s' "$GITEA_DB_PASSWORD" | podman secret create --replace gitea-postgres-password -
unset GITEA_DB_PASSWORD
Visualiser la valeur actuelle
podman secret inspect affiche les métadonnées du secret, mais pas sa valeur. Pour la récupérer localement, on peut l'injecter temporairement dans un conteneur et l'afficher dans le terminal :
podman run --rm \
--secret gitea-postgres-password,type=env,target=GITEA_DB_PASSWORD \
docker.io/library/postgres:17.10 \
sh -c 'printf "%s\n" "$GITEA_DB_PASSWORD"'
Cette commande ne modifie ni PostgreSQL ni Gitea, mais révèle le mot de passe à l'écran. Ne pas l'utiliser dans une session partagée, une capture d'écran ou une commande enregistrée.
Modifier le mot de passe
Le mot de passe doit être identique dans le rôle PostgreSQL gitea et dans le secret Podman gitea-postgres-password. POSTGRES_PASSWORD ne modifie pas un rôle déjà initialisé : il n'est utilisé qu'à la création initiale du répertoire de données.
La méthode recommandée génère un mot de passe hexadécimal et modifie le rôle SQL avant de remplacer le secret :
new_password="$(openssl rand -hex 32)"
printf "ALTER ROLE gitea PASSWORD '%s';\n" "$new_password" \
| podman exec -i gitea-db psql -U gitea -d gitea -v ON_ERROR_STOP=1 -f -
printf '%s' "$new_password" | podman secret create --replace gitea-postgres-password -
unset new_password
systemctl --user restart gitea.service
Vérifier ensuite :
podman exec gitea-db pg_isready -U gitea -d gitea
systemctl --user is-active postgresql-gitea.service gitea.service
curl -fsS -o /dev/null -w '%{http_code}\\n' http://127.0.0.1:8105/
Ne pas modifier uniquement le secret Podman ou uniquement le rôle SQL : les deux valeurs doivent rester synchronisées.
Étapes de configuration
- Créer le réseau
gitea-netet le maintenir pargitea-network.service. - Créer le secret Podman
gitea-postgres-password. - Démarrer PostgreSQL avec le volume persistant et le secret injecté dans
POSTGRES_PASSWORD. - Démarrer Gitea avec le même secret injecté dans
GITEA__database__PASSWD. - Configurer Gitea pour PostgreSQL sur
gitea-db:5432, avec la base et l'utilisateurgitea. - Publier le port HTTP local
8105via Caddy versgitea.lololand.orget le port externe25702. - Vérifier systemd, PostgreSQL, la réponse HTTP locale et la réponse publique.
Commandes de vérification
systemctl --user daemon-reload
systemctl --user is-active gitea-network.service postgresql-gitea.service gitea.service
podman exec gitea-db pg_isready -U gitea -d gitea
podman exec gitea gitea --version
podman exec gitea-db postgres --version
curl -fsS -o /dev/null -w '%{http_code}\\n' http://127.0.0.1:8105/
Sauvegarde et retour arrière
Le backup de la modification du 4 août 2026 est dans :
/home/loic/backups/gitea-quadlet-hardening-20260804T102558+0200/
Restaurer les Quadlets depuis ce dossier, exécuter systemctl --user daemon-reload, puis redémarrer PostgreSQL et Gitea dans cet ordre. Ne pas supprimer le volume PostgreSQL lors d'un retour arrière.
Vérifications du 4 août 2026
- Gitea
1.27.1actif. - PostgreSQL
17.10actif etpg_isreadypositif. - HTTP local :
200. - HTTP public sur
https://gitea.lololand.org/:200. - Aucun mot de passe en clair dans les deux Quadlets Gitea/PostgreSQL.