infra/roles/forgejo/templates/docker-compose.yml.j2
2026-02-21 18:27:04 -05:00

55 lines
1.7 KiB
Django/Jinja

services:
redis:
image: redis:7-alpine
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis_data:/data
networks:
- forgejo
restart: unless-stopped
forgejo:
image: codeberg.org/forgejo/forgejo:9
environment:
FORGEJO__server__DOMAIN: "{{ forgejo_hostname }}"
FORGEJO__server__ROOT_URL: "https://{{ forgejo_hostname }}/"
FORGEJO__server__SSH_DOMAIN: "{{ forgejo_hostname }}"
FORGEJO__server__SSH_PORT: "2222"
FORGEJO__server__DISABLE_SSH: "false"
FORGEJO__actions__ENABLED: "true"
FORGEJO__service__ALLOW_ONLY_EXTERNAL_REGISTRATION: "true"
FORGEJO__service__DISABLE_REGISTRATION: "true"
FORGEJO__service__REQUIRE_SIGNIN_VIEW: "false"
FORGEJO__repository__DISABLE_PUBLIC_REPOS: "false"
FORGEJO__database__DB_TYPE: sqlite3
FORGEJO__cache__ADAPTER: redis
FORGEJO__cache__HOST: redis:6379
volumes:
- forgejo_data:/data
- ./robots.txt:/data/forgejo/public/robots.txt:ro
ports:
- "2222:22"
networks:
- proxy
- forgejo
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.http.routers.forgejo.rule=Host(`{{ forgejo_hostname }}`)
- traefik.http.routers.forgejo.entrypoints=websecure
- traefik.http.routers.forgejo.tls=true
- traefik.http.routers.forgejo.tls.certresolver={{ traefik_certresolver }}
- traefik.http.routers.forgejo.middlewares=security-headers@file,compress@file,rate-limit@file
- traefik.http.services.forgejo.loadbalancer.server.port=3000
- com.centurylinklabs.watchtower.enable=true
volumes:
forgejo_data:
redis_data:
networks:
proxy:
external: true
forgejo:
internal: true