-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
139 lines (129 loc) · 4.26 KB
/
Copy pathdocker-compose.yml
File metadata and controls
139 lines (129 loc) · 4.26 KB
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
136
137
138
139
# Privcloud — Home server stack
# Immich (photo backup) + Navidrome + FileBrowser + Watchtower + Uptime Kuma
# Managed by: ./setup.sh and ./privcloud
name: privcloud
services:
# ── Immich (photo backup) ──────────────────────────
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload:Z
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- "2283:2283"
depends_on:
- redis
- database
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:2283/api/server/ping || exit 1"]
interval: 30s
timeout: 10s
retries: 3
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD", "python3", "-c", "import requests; requests.get('http://localhost:3003/ping')"]
interval: 30s
timeout: 10s
retries: 3
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
database:
container_name: immich_postgres
# VectorChord image (Immich v1.133+/v3). Ships BOTH vchord and the old
# pgvecto.rs (pgvectors) so an existing pgvecto.rs data dir auto-migrates on
# first start under a v2.x server. v3.0.0 dropped pgvecto.rs — migrate the DB
# while on v2 BEFORE bumping IMMICH_VERSION to v3.
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: "--data-checksums"
# Uncomment if the postgres data dir lives on the USB HDD, not the NVMe:
# DB_STORAGE_TYPE: 'HDD'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data:Z
shm_size: 128mb
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}'"]
interval: 10s
timeout: 5s
retries: 3
# ── Navidrome (music streaming) ─────────────────────
navidrome:
container_name: navidrome
image: deluan/navidrome:latest
volumes:
- navidrome-data:/data
- ${MUSIC_LOCATION}:/music
ports:
- 4533:4533
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_BASEURL: ""
# Import playlists ONLY from <music>/playlists, not the whole library.
# The legacy collection has hundreds of per-album .m3u files; without this
# Navidrome auto-imports every one as a playlist. Curated .nsp smart
# playlists live in that folder; everything else in the tree is ignored.
ND_PLAYLISTS_PATH: playlists
restart: always
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:4533/ping || exit 1"]
interval: 30s
timeout: 10s
retries: 3
# ── FileBrowser (web file manager) ─────────────────
filebrowser:
container_name: filebrowser
image: filebrowser/filebrowser:latest
volumes:
- ${FILES_LOCATION}:/srv
- filebrowser-db:/database
ports:
- 8080:80
restart: always
# ── Watchtower (auto-update containers) ────────────
watchtower:
container_name: watchtower
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 4 * * *
- DOCKER_API_VERSION=1.40
restart: always
# ── Uptime Kuma (monitoring dashboard) ─────────────
uptime-kuma:
container_name: uptime_kuma
image: louislam/uptime-kuma:2
volumes:
- uptime-kuma-data:/app/data
ports:
- 3001:3001
restart: always
volumes:
model-cache:
navidrome-data:
filebrowser-db:
uptime-kuma-data: