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 |
name: indiedesk
services:
relay:
build:
context: .
dockerfile: Dockerfile
image: indiedesk:local
user: "65532:65532"
environment:
PUBLIC_URL: "${PUBLIC_URL:?Set PUBLIC_URL to the public root URL}"
DATA_DIR: /data
LISTEN_ADDR: ":8080"
volumes:
- type: bind
source: ${HOST_DATA_DIR:-./data}
target: /data
bind:
create_host_path: false
read_only: true
tmpfs:
- /tmp:size=16m,mode=1777
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
pids_limit: 128
mem_limit: 512m
cpus: 2
stop_grace_period: 15s
restart: unless-stopped
healthcheck:
test: ["CMD", "/indiedesk", "healthcheck"]
interval: 30s
timeout: 3s
start_period: 5s
retries: 3
cloudflared:
image: cloudflare/cloudflared:2026.2.0@sha256:404528c1cd63c3eb882c257ae524919e4376115e6fe57befca8d603656a91a4c
user: "65532:65532"
command: ["tunnel", "--no-autoupdate", "run"]
environment:
TUNNEL_TOKEN: "${CLOUDFLARED:?Set CLOUDFLARED to the Tunnel token}"
depends_on:
relay:
condition: service_healthy
read_only: true
tmpfs:
- /tmp:size=16m,mode=1777
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
pids_limit: 128
mem_limit: 256m
cpus: 1
stop_grace_period: 35s
restart: unless-stopped
|