version: '3.8' services: forgejo: image: codeberg.org/forgejo/forgejo:10.0.0-rootless # Rootless = sicherer container_name: forgejo restart: unless-stopped environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=postgres:5432 - GITEA__database__NAME=forgejo - GITEA__database__USER=forgejo - GITEA__database__PASSWD=${DB_PASSWORD} - GITEA__server__DOMAIN=${DOMAIN_NAME} - GITEA__server__ROOT_URL=https://${DOMAIN_NAME}/ - GITEA__server__HTTP_PORT=3000 - GITEA__server__SSH_DOMAIN=${DOMAIN_NAME} - GITEA__server__SSH_PORT=222 - TZ=${TIMEZONE} volumes: - forgejo_data:/data - /etc/timezone:/etc/timezone:ro ports: - "3000:3000" # Web UI - "222:22" # SSH (nicht 22, da Host SSH läuft!) depends_on: postgres: condition: service_healthy networks: - forgejo-net - npm-network postgres: image: postgres:16-alpine container_name: forgejo-db restart: unless-stopped environment: - POSTGRES_USER=forgejo - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=forgejo volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U forgejo -d forgejo"] interval: 10s retries: 5 networks: - forgejo-net volumes: forgejo_data: postgres_data: networks: forgejo-net: internal: true npm-network: external: true