aboutsummaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorshu <nvcsadjkojf@outlook.com>2026-07-27 00:22:33 +0800
committershu <nvcsadjkojf@outlook.com>2026-07-27 00:22:33 +0800
commitaaa0cf501ce44a7c7c54c7c5c6485cfb7f60e583 (patch)
treeda94ef66e9830d09961e577f87d36e63a6076ce5 /docker
parent338cc101f127e4841689c1f81227ee033e57ad28 (diff)
Add Docker Compose deployment
Diffstat (limited to 'docker')
-rw-r--r--docker/authelia/configuration.template.yml66
-rw-r--r--docker/authelia/users_database.template.yml8
-rw-r--r--docker/caddy/Caddyfile44
-rw-r--r--docker/caddy/Dockerfile11
-rw-r--r--docker/tiddlywiki/Dockerfile13
5 files changed, 142 insertions, 0 deletions
diff --git a/docker/authelia/configuration.template.yml b/docker/authelia/configuration.template.yml
new file mode 100644
index 0000000..bd29e00
--- /dev/null
+++ b/docker/authelia/configuration.template.yml
@@ -0,0 +1,66 @@
+server:
+ address: tcp://0.0.0.0:9091/
+
+log:
+ level: info
+ format: text
+
+theme: auto
+
+identity_validation:
+ reset_password: {}
+
+authentication_backend:
+ password_reset:
+ disable: true
+ file:
+ path: /config/users_database.yml
+ watch: true
+ password:
+ algorithm: argon2
+ argon2:
+ variant: argon2id
+ iterations: 3
+ memory: 65536
+ parallelism: 4
+ key_length: 32
+ salt_length: 16
+
+access_control:
+ default_policy: deny
+ rules:
+ - domain: auth.__BASE_DOMAIN__
+ policy: bypass
+ - domain:
+ - wiki.__BASE_DOMAIN__
+ - dav.__BASE_DOMAIN__
+ policy: one_factor
+ subject:
+ - group:tdwiki
+
+session:
+ name: authelia_session
+ same_site: lax
+ inactivity: 1h
+ expiration: 12h
+ remember_me: 30d
+ cookies:
+ - domain: __BASE_DOMAIN__
+ authelia_url: https://auth.__BASE_DOMAIN__
+ default_redirection_url: https://wiki.__BASE_DOMAIN__
+ redis:
+ host: redis
+ port: 6379
+
+regulation:
+ max_retries: 5
+ find_time: 2m
+ ban_time: 10m
+
+storage:
+ local:
+ path: /var/lib/authelia/db.sqlite3
+
+notifier:
+ filesystem:
+ filename: /var/lib/authelia/notification.txt
diff --git a/docker/authelia/users_database.template.yml b/docker/authelia/users_database.template.yml
new file mode 100644
index 0000000..2ea7159
--- /dev/null
+++ b/docker/authelia/users_database.template.yml
@@ -0,0 +1,8 @@
+users:
+ __USERNAME__:
+ disabled: false
+ displayname: "__DISPLAY_NAME__"
+ password: "__PASSWORD_HASH__"
+ email: "__EMAIL__"
+ groups:
+ - tdwiki
diff --git a/docker/caddy/Caddyfile b/docker/caddy/Caddyfile
new file mode 100644
index 0000000..aee104b
--- /dev/null
+++ b/docker/caddy/Caddyfile
@@ -0,0 +1,44 @@
+{
+ admin off
+}
+
+(authelia) {
+ forward_auth authelia:9091 {
+ uri /api/authz/forward-auth
+ copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
+ }
+}
+
+auth.{$BASE_DOMAIN:tdwiki.home.arpa} {
+ tls internal
+ encode zstd gzip
+ reverse_proxy authelia:9091
+}
+
+wiki.{$BASE_DOMAIN:tdwiki.home.arpa} {
+ tls internal
+ encode zstd gzip
+ import authelia
+
+ header {
+ X-Content-Type-Options nosniff
+ Referrer-Policy same-origin
+ }
+
+ reverse_proxy tiddlywiki:8080
+}
+
+dav.{$BASE_DOMAIN:tdwiki.home.arpa} {
+ tls internal
+ import authelia
+
+ header {
+ X-Content-Type-Options nosniff
+ }
+
+ route {
+ webdav {
+ root /srv/files
+ }
+ }
+}
diff --git a/docker/caddy/Dockerfile b/docker/caddy/Dockerfile
new file mode 100644
index 0000000..9f06d02
--- /dev/null
+++ b/docker/caddy/Dockerfile
@@ -0,0 +1,11 @@
+FROM caddy:2.11.4-builder AS builder
+
+ARG GOPROXY=https://proxy.golang.org,direct
+ENV GOPROXY=${GOPROXY}
+
+RUN xcaddy build \
+ --with github.com/mholt/caddy-webdav@fa2f366b0d75e54c2e381c0aefc3a8df8bf5794b
+
+FROM caddy:2.11.4-alpine
+
+COPY --from=builder /usr/bin/caddy /usr/bin/caddy
diff --git a/docker/tiddlywiki/Dockerfile b/docker/tiddlywiki/Dockerfile
new file mode 100644
index 0000000..cfee4aa
--- /dev/null
+++ b/docker/tiddlywiki/Dockerfile
@@ -0,0 +1,13 @@
+FROM node:22-alpine
+
+ARG TIDDLYWIKI_VERSION=5.4.1
+
+RUN npm install --global "tiddlywiki@${TIDDLYWIKI_VERSION}" \
+ && npm cache clean --force
+
+WORKDIR /wiki
+USER node
+
+EXPOSE 8080
+
+ENTRYPOINT ["tiddlywiki"]