Forgejo — Installation sur Raspberry Pi (Podman + PostgreSQL)
# Stack
- OS : Debian 12 Bookworm (aarch64)
- Forgejo : v16.0.1 (stable)
- Container : Podman 4.3.1, managé par systemd (
podman generate systemd) - Base de données : PostgreSQL 15 (installation système via apt)
- Réseau :
Network=host(pas de reverse proxy, pas de SSL, LAN uniquement) - Port : 3000
# Architecture
┌─────────────────────────────────────────────┐
│ HÔTE (raspberrypi) │
│ │
│ ┌─────────────────────────┐ ┌─────────┐ │
│ │ Container forgejo │ │ Postgres│ │
│ │ ┌───────────────────┐ │ │ :5432 │ │
│ │ │ Forgejo │ │ └─────────┘ │
│ │ │ :3000 │ │ │
│ │ │ │ │ │
│ │ │ /data → /var/lib/ │ │ │
│ │ │ forgejo │ │ │
│ │ └───────────────────┘ │ │
│ └─────────────────────────┘ │
│ Network=host (127.0.0.1:5432) │
└─────────────────────────────────────────────┘
# Fichiers de configuration
# 1. Service systemd — /etc/systemd/system/forgejo.service
[Unit]
Description=Forgejo container (self-hosted Git service)
After=network-online.target postgresql.service
Wants=network-online.target
RequiresMountsFor=%t/containers
[Service]
Restart=on-failure
ExecStart=/usr/bin/podman run \
--rm --replace -d --name forgejo \
--network host \
-v /var/lib/forgejo:/data:Z \
-v /var/lib/forgejo/custom-s6-override/openssh/down:/etc/s6/openssh/down:Z \
-e USER_UID=115 \
-e USER_GID=989 \
-e FORGEJO__server__DISABLE_SSH=true \
-e FORGEJO__server__START_SSH_SERVER=false \
-e FORGEJO__database__DB_TYPE=postgres \
-e FORGEJO__database__HOST=127.0.0.1:5432 \
-e FORGEJO__database__NAME=forgejo \
-e FORGEJO__database__USER=forgejo \
-e FORGEJO__database__PASSWD=<password> \
-e FORGEJO__database__SCHEMA=forgejo \
codeberg.org/forgejo/forgejo:16.0.1
ExecStop=/usr/bin/podman stop --ignore -t 10 --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore -t 10 --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target
# 2. Config Forgejo — /var/lib/forgejo/gitea/conf/app.ini
Générée par le formulaire d’installation de Forgejo. Sections clés :
[database]: PostgreSQL, schemaforgejo[server]:DOMAIN = 192.168.0.80,ROOT_URL = http://192.168.0.80:3000/[security]:INSTALL_LOCK = true[service]:DISABLE_REGISTRATION = true[openid]: désactivé[cron.update_checker]: activé
# 3. Désactivation SSH — /var/lib/forgejo/custom-s6-override/openssh/down
Contient disabled pour empêcher le superviseur s6 du container de lancer sshd (conflit avec le port 22 de l’hôte).
# PostgreSQL
CREATE ROLE forgejo WITH LOGIN PASSWORD '<password>';
CREATE DATABASE forgejo OWNER forgejo;
CREATE SCHEMA forgejo AUTHORIZATION forgejo;
# Commandes utiles
# Gestion du service
sudo systemctl status forgejo # Statut
sudo systemctl restart forgejo # Redémarrage
sudo systemctl stop forgejo # Arrêt
sudo journalctl -u forgejo -f # Logs en direct
# Inspecter le container
sudo podman logs forgejo # Logs Forgejo
sudo podman exec forgejo ls /data # Explorer le container
# PostgreSQL
sudo -u postgres psql -d forgejo # Console DB
# Accès
- LAN :
http://192.168.0.80:3000 - Tailscale :
http://bastion:3000
Written on July 24, 2026, Last update on
forgejo
hermes