1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
depends_on:
- kitgit
- authentik-server
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: kitgit
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: postgres
volumes:
- pgdata:/var/lib/postgresql/data
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U kitgit"]
interval: 5s
timeout: 5s
retries: 10
redis:
image: redis:7-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10
authentik-server:
image: ghcr.io/goauthentik/server:2024.10.4
command: server
restart: unless-stopped
environment:
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
AUTHENTIK_BOOTSTRAP_PASSWORD: ${AUTHENTIK_BOOTSTRAP_PASSWORD}
AUTHENTIK_BOOTSTRAP_EMAIL: ${AUTHENTIK_BOOTSTRAP_EMAIL}
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_POSTGRESQL__USER: kitgit
AUTHENTIK_POSTGRESQL__NAME: authentik
AUTHENTIK_POSTGRESQL__PASSWORD: ${POSTGRES_PASSWORD}
AUTHENTIK_HOST: https://auth.tirbo.fish
AUTHENTIK_HOST_BROWSER: https://auth.tirbo.fish
volumes:
- authentik-media:/media
- authentik-templates:/templates
- ./authentik/blueprints-prod:/blueprints/custom:ro
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
authentik-worker:
image: ghcr.io/goauthentik/server:2024.10.4
command: worker
restart: unless-stopped
environment:
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
AUTHENTIK_BOOTSTRAP_PASSWORD: ${AUTHENTIK_BOOTSTRAP_PASSWORD}
AUTHENTIK_BOOTSTRAP_EMAIL: ${AUTHENTIK_BOOTSTRAP_EMAIL}
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgres
AUTHENTIK_POSTGRESQL__USER: kitgit
AUTHENTIK_POSTGRESQL__NAME: authentik
AUTHENTIK_POSTGRESQL__PASSWORD: ${POSTGRES_PASSWORD}
AUTHENTIK_HOST: https://auth.tirbo.fish
AUTHENTIK_HOST_BROWSER: https://auth.tirbo.fish
user: root
volumes:
- authentik-media:/media
- authentik-templates:/templates
- ./authentik/blueprints-prod:/blueprints/custom:ro
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
kitgit:
build:
context: ..
dockerfile: Dockerfile
restart: unless-stopped
environment:
KITGIT_DATABASE_URL: postgres://kitgit:${POSTGRES_PASSWORD}@postgres:5432/kitgit
KITGIT_DATA_DIR: /data
KITGIT_HTTP_BIND: 0.0.0.0:8080
KITGIT_SSH_BIND: 0.0.0.0:2222
KITGIT_SSH_PUBLIC_PORT: "22"
KITGIT_PUBLIC_URL: ${KITGIT_PUBLIC_URL}
KITGIT_SESSION_SECRET: ${KITGIT_SESSION_SECRET}
KITGIT_OIDC_ISSUER: ${KITGIT_OIDC_ISSUER}
KITGIT_OIDC_DISCOVERY_URL: ${KITGIT_OIDC_DISCOVERY_URL}
KITGIT_OIDC_CLIENT_ID: ${KITGIT_OIDC_CLIENT_ID}
KITGIT_OIDC_CLIENT_SECRET: ${KITGIT_OIDC_CLIENT_SECRET}
KITGIT_OIDC_REDIRECT_URL: ${KITGIT_OIDC_REDIRECT_URL}
KITGIT_AUTHENTIK_URL: ${KITGIT_AUTHENTIK_URL}
KITGIT_AUTHENTIK_API_TOKEN: ${KITGIT_AUTHENTIK_API_TOKEN}
AUTHENTIK_TOKEN: ${AUTHENTIK_TOKEN}
KITGIT_AUTHENTIK_AUTH_FLOW: ${KITGIT_AUTHENTIK_AUTH_FLOW:-default-authentication-flow}
RUST_LOG: info,kitgit=info
volumes:
- kitgit-data:/data
ports:
- "22:2222"
depends_on:
postgres:
condition: service_healthy
authentik-server:
condition: service_started
volumes:
pgdata:
authentik-media:
authentik-templates:
kitgit-data:
caddy-data:
caddy-config: