Avant de commencer, assurez-vous d’avoir :
traefik_net
(créé au préalable si nécessaire)..env
contenant les variables suivantes :SERVICE=forgejo
SERVICE_DB=forgejo_db
DB_NAME=forgejo
DB_USER=forgejo
DB_PASSWORD=motdepassefort
URL=git.mondomaine.tld
🔐 Conseil sécurité : Ne versionnez jamais vos fichiers
.env
.
docker-compose.yml
Créez un fichier docker-compose.yml
avec ce contenu :
services:
forgejo_db:
image: postgres:16
container_name: ${SERVICE_DB}
restart: unless-stopped
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
networks:
- forgejo_net
volumes:
- ./data-db:/var/lib/postgresql/data
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: ${SERVICE}
restart: unless-stopped
depends_on:
- forgejo_db
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__database__DB_TYPE=postgres
- FORGEJO__database__HOST=${SERVICE_DB}
- FORGEJO__database__NAME=${DB_NAME}
- FORGEJO__database__USER=${DB_USER}
- FORGEJO__database__PASSWD=${DB_PASSWORD}
networks:
- forgejo_net
- traefik_net
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.${SERVICE}.rule=Host(`git.blasseye.fr`)"
- "traefik.http.routers.${SERVICE}.entrypoints=web"
- "traefik.http.services.${SERVICE}.loadbalancer.server.port=3000"
- "traefik.docker.network=traefik_net"
networks:
forgejo_net:
name: forgejo_net
driver: bridge
traefik_net:
external: true
Démarrez les conteneurs avec :
docker compose up -d
Accédez à votre instance Forgejo via le domaine défini dans $URL
.
🧠 Premier démarrage : vous devrez finaliser la configuration via l'interface web. Vérifiez que les paramètres de la base sont bien ceux du
.env
.
forgejo/
├── docker-compose.yml
├── .env
├── data/
└── data-db/
Arrêter et supprimer les conteneurs :
docker compose down