version: '3.4' services: app: image: "{{ stack_image }}:{{ forgejo_version }}" healthcheck: test: ["CMD", "wget", "--spider", "-q", "127.0.0.1:3000"] interval: 1m timeout: 10s retries: 3 start_period: 1m volumes: - data:/data - /home/git/.ssh:/data/git/.ssh - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - USER_UID={{ git_user['uid'] }} - USER_GID={{ git_user['group'] }} - FORGEJO__database__DB_TYPE=postgres - FORGEJO__database__HOST=db:5432 - "FORGEJO__database__NAME={{ forgejo_db_database }}" - "FORGEJO__database__USER={{ forgejo_db_username }}" - "FORGEJO__database__PASSWD={{ forgejo_db_password }}" - "FORGEJO__server__ROOT_URL={{ (forgejo_use_https == True) | ternary('https', 'http') }}://{{ (subdomain_alias is not undefined and not none) | ternary(subdomain_alias, stack_name) }}.{{server_domain}}" - "FORGEJO__server__SSH_DOMAIN={{ (subdomain_alias is not undefined and not none) | ternary(subdomain_alias, stack_name) }}.{{server_domain}}" - FORGEJO__server__LANDING_PAGE=explore - FORGEJO__service__DISABLE_REGISTRATION=true {% if forgejo_app_admin_username is not undefined and not None and forgejo_app_admin_password is not undefined and not None %} - FORGEJO__security__INSTALL_LOCK=true {% endif %} {% if forgejo_smtp_addr is not undefined and not None and forgejo_smtp_port is not undefined and not None and forgejo_smtp_username is not undefined and not None and forgejo_smtp_password is not undefined and not None %} - FORGEJO__mailer__ENABLED=true - FORGEJO__service__ENABLE_NOTIFY_MAIL=true - FORGEJO__mailer__FROM=forgejo@{{ server_domain }} - FORGEJO__mailer__TYPE=smtp - FORGEJO__mailer__SMTP_ADDR={{ forgejo_smtp_addr }} - FORGEJO__mailer__SMTP_PORT={{ forgejo_smtp_port }} {% if forgejo_smtp_protocol is not undefined and not none %} - FORGEJO__mailer__PROTOCOL={{ forgejo_smtp_protocol }} {% endif %} - FORGEJO__mailer__USER={{ forgejo_smtp_username }} - FORGEJO__mailer__PASSWD={{ forgejo_smtp_password }} {% endif %} {% if forgejo_use_lfs %} - FORGEJO__server__LFS_START_SERVER=true {% if forgejo_lfs_jwt_secret is not undefined and not none %} - FORGEJO__server__LFS_JWT_SECRET={{ forgejo_lfs_jwt_secret }} {% endif %} - FORGEJO__server__LFS_HTTP_AUTH_EXPIRY={{ forgejo_lfs_http_auth_expiry }} - FORGEJO__server__LFS_MAX_FILE_SIZE={{ forgejo_lfs_max_filesize }} {% endif %} {% if forgejo_use_s3 %} - FORGEJO__storage__STORAGE_TYPE="minio" - FORGEJO__storage__MINIO_USE_SSL={{ forgejo_s3_use_ssl }} - FORGEJO__storage__MINIO_BUCKET_LOOKUP={{ forgejo_s3_bucket_lookup }} - FORGEJO__storage__MINIO_ENDPOINT={{ forgejo_s3_endpoint }} - FORGEJO__storage__MINIO_ACCESS_KEY_ID={{ forgejo_s3_key }} - FORGEJO__storage__MINIO_SECRET_ACCESS_KEY={{ forgejo_s3_secret }} - FORGEJO__storage__MINIO_BUCKET={{ forgejo_s3_bucket }} - FORGEJO__storage__MINIO_LOCATION={{ forgejo_s3_region }} - FORGEJO__storage__MINIO_CHECKSUM_ALGORITHM={{ forgejo_s3_checksum }} {% endif %} networks: - "{{ docker_swarm_public_network_name }}" - backend ports: - "127.0.0.1:2222:22" db: image: postgres:13 healthcheck: test: ["CMD", "pg_isready", "-q", "-U", "{{ forgejo_db_username }}"] interval: 1m timeout: 10s retries: 3 start_period: 1m volumes: - db:/var/lib/postgresql/data networks: - backend environment: - POSTGRES_USER={{ forgejo_db_username }} - POSTGRES_PASSWORD={{ forgejo_db_password }} - POSTGRES_DB={{ forgejo_db_database }} {% if forgejo_use_ci %} wp-server: image: woodpeckerci/woodpecker-server:v3 networks: - "{{ docker_swarm_public_network_name }}" - backend volumes: - woodpecker:/var/lib/woodpecker/ environment: - WOODPECKER_OPEN=true - "WOODPECKER_HOST={{ (forgejo_use_https == True) | ternary('https', 'http') }}://{{ (subdomain_ci_alias is not undefined and not none) | ternary(subdomain_ci_alias, stack_name + '_ci') }}.{{server_domain}}" - WOODPECKER_AGENT_SECRET={{ forgejo_woodpecker_agent_secret }} {% if forgejo_ci_github_client is not undefined and not None and forgejo_ci_github_secret is not undefined and not None %} - WOODPECKER_GITHUB=true - WOODPECKER_GITHUB_CLIENT={{ forgejo_ci_github_client }} - WOODPECKER_GITHUB_SECRET={{ forgejo_ci_github_secret }} {% endif %} {% if forgejo_ci_gitlab_client is not undefined and not None and forgejo_ci_gitlab_secret is not undefined and not None %} - WOODPECKER_GITLAB=true - WOODPECKER_GITLAB_CLIENT={{ forgejo_ci_gitlab_client }} - WOODPECKER_GITLAB_SECRET={{ forgejo_ci_gitlab_secret }} {% endif %} {% if forgejo_ci_forgejo_client is not undefined and not None and forgejo_ci_forgejo_secret is not undefined and not None %} - WOODPECKER_FORGEJO=true - "WOODPECKER_FORGEJO_URL={{ (forgejo_use_https == True) | ternary('https', 'http') }}://{{ (subdomain_alias is not undefined and not none) | ternary(subdomain_alias, stack_name) }}.{{server_domain}}" - WOODPECKER_FORGEJO_CLIENT={{ forgejo_ci_forgejo_client }} - WOODPECKER_FORGEJO_SECRET={{ forgejo_ci_forgejo_secret }} {% endif %} {% if forgejo_ci_gitea_url is not undefined and not None and forgejo_ci_gitea_client is not undefined and not None and forgejo_ci_gitea_secret is not undefined and not None %} - WOODPECKER_GITEA=true - "WOODPECKER_GITEA_URL={{ (forgejo_use_https == True) | ternary('https', 'http') }}://{{ (subdomain_alias is not undefined and not none) | ternary(subdomain_alias, stack_name) }}.{{server_domain}}" - WOODPECKER_GITEA_CLIENT={{ forgejo_ci_gitea_client }} - WOODPECKER_GITEA_SECRET={{ forgejo_ci_gitea_secret }} {% endif %} wp-agent: image: woodpeckerci/woodpecker-agent:v3 networks: - backend command: agent volumes: - woodpecker-agent-config:/etc/woodpecker - /var/run/docker.sock:/var/run/docker.sock environment: - WOODPECKER_SERVER=wp-server:9000 - WOODPECKER_AGENT_SECRET={{ forgejo_woodpecker_agent_secret }} {% endif %} volumes: data: db: woodpecker: woodpecker-agent-config: networks: "{{ docker_swarm_public_network_name }}": external: true backend: