Immich
High performance self-hosted photo and video backup solution directly from your mobile phone.
Configuration
version: "3.9"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:v2.1.0
volumes:
- immich-library:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
depends_on:
immich-redis:
condition: service_healthy
immich-database:
condition: service_healthy
environment:
PORT: 2283
SERVER_URL: ${SERVER_URL}
FRONT_BASE_URL: ${FRONT_BASE_URL}
# Database Configuration
DB_HOSTNAME: ${DB_HOSTNAME}
DB_PORT: ${DB_PORT}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
DB_DATABASE_NAME: ${DB_DATABASE_NAME}
# Redis Configuration
REDIS_HOSTNAME: ${REDIS_HOSTNAME}
REDIS_PORT: ${REDIS_PORT}
REDIS_DBINDEX: ${REDIS_DBINDEX}
# Server Configuration
TZ: ${TZ}
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:2283/server-info/ping"]
interval: 30s
timeout: 10s
retries: 3
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:v2.1.0
volumes:
- immich-model-cache:/cache
environment:
REDIS_HOSTNAME: ${REDIS_HOSTNAME}
REDIS_PORT: ${REDIS_PORT}
REDIS_DBINDEX: ${REDIS_DBINDEX}
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3003/ping"]
interval: 30s
timeout: 10s
retries: 3
immich-redis:
image: redis:6.2-alpine
volumes:
- immich-redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
restart: always
immich-database:
image: tensorchord/pgvecto-rs:pg14-v0.3.0
volumes:
- immich-postgres:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: immich
POSTGRES_INITDB_ARGS: '--data-checksums'
healthcheck:
test: pg_isready -U ${DB_USERNAME} -d immich || exit 1
interval: 10s
timeout: 5s
retries: 5
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
restart: always
volumes:
immich-model-cache:
immich-postgres:
immich-library:
immich-redis-data:[variables]
main_domain = "${domain}"
db_password = "${password}"
db_user = "immich"
[config]
env = [
"IMMICH_HOST=${main_domain}",
"SERVER_URL=https://${main_domain}",
"FRONT_BASE_URL=https://${main_domain}",
"DB_HOSTNAME=immich-database",
"DB_PORT=5432",
"DB_USERNAME=${db_user}",
"DB_PASSWORD=${db_password}",
"DB_DATABASE_NAME=immich",
"REDIS_HOSTNAME=immich-redis",
"REDIS_PORT=6379",
"REDIS_DBINDEX=0",
"TZ=UTC",
]
mounts = []
[[config.domains]]
serviceName = "immich-server"
port = 2_283
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy45XCJcblxuc2VydmljZXM6XG4gIGltbWljaC1zZXJ2ZXI6XG4gICAgaW1hZ2U6IGdoY3IuaW8vaW1taWNoLWFwcC9pbW1pY2gtc2VydmVyOnYyLjEuMFxuXG4gICAgdm9sdW1lczpcbiAgICAgIC0gaW1taWNoLWxpYnJhcnk6L3Vzci9zcmMvYXBwL3VwbG9hZFxuICAgICAgLSAvZXRjL2xvY2FsdGltZTovZXRjL2xvY2FsdGltZTpyb1xuICAgIGRlcGVuZHNfb246XG4gICAgICBpbW1pY2gtcmVkaXM6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICBpbW1pY2gtZGF0YWJhc2U6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1JUOiAyMjgzXG4gICAgICBTRVJWRVJfVVJMOiAke1NFUlZFUl9VUkx9XG4gICAgICBGUk9OVF9CQVNFX1VSTDogJHtGUk9OVF9CQVNFX1VSTH1cbiAgICAgICMgRGF0YWJhc2UgQ29uZmlndXJhdGlvblxuICAgICAgREJfSE9TVE5BTUU6ICR7REJfSE9TVE5BTUV9XG4gICAgICBEQl9QT1JUOiAke0RCX1BPUlR9XG4gICAgICBEQl9VU0VSTkFNRTogJHtEQl9VU0VSTkFNRX1cbiAgICAgIERCX1BBU1NXT1JEOiAke0RCX1BBU1NXT1JEfVxuICAgICAgREJfREFUQUJBU0VfTkFNRTogJHtEQl9EQVRBQkFTRV9OQU1FfVxuICAgICAgIyBSZWRpcyBDb25maWd1cmF0aW9uXG4gICAgICBSRURJU19IT1NUTkFNRTogJHtSRURJU19IT1NUTkFNRX1cbiAgICAgIFJFRElTX1BPUlQ6ICR7UkVESVNfUE9SVH1cbiAgICAgIFJFRElTX0RCSU5ERVg6ICR7UkVESVNfREJJTkRFWH1cbiAgICAgICMgU2VydmVyIENvbmZpZ3VyYXRpb25cbiAgICAgIFRaOiAke1RafVxuICAgIHJlc3RhcnQ6IGFsd2F5c1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01EXCIsIFwiY3VybFwiLCBcIi1mXCIsIFwiaHR0cDovL2xvY2FsaG9zdDoyMjgzL3NlcnZlci1pbmZvL3BpbmdcIl1cbiAgICAgIGludGVydmFsOiAzMHNcbiAgICAgIHRpbWVvdXQ6IDEwc1xuICAgICAgcmV0cmllczogM1xuXG4gIGltbWljaC1tYWNoaW5lLWxlYXJuaW5nOlxuICAgIGltYWdlOiBnaGNyLmlvL2ltbWljaC1hcHAvaW1taWNoLW1hY2hpbmUtbGVhcm5pbmc6djIuMS4wXG5cbiAgICB2b2x1bWVzOlxuICAgICAgLSBpbW1pY2gtbW9kZWwtY2FjaGU6L2NhY2hlXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBSRURJU19IT1NUTkFNRTogJHtSRURJU19IT1NUTkFNRX1cbiAgICAgIFJFRElTX1BPUlQ6ICR7UkVESVNfUE9SVH1cbiAgICAgIFJFRElTX0RCSU5ERVg6ICR7UkVESVNfREJJTkRFWH1cbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcImN1cmxcIiwgXCItZlwiLCBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMy9waW5nXCJdXG4gICAgICBpbnRlcnZhbDogMzBzXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIHJldHJpZXM6IDNcblxuICBpbW1pY2gtcmVkaXM6XG4gICAgaW1hZ2U6IHJlZGlzOjYuMi1hbHBpbmVcblxuICAgIHZvbHVtZXM6XG4gICAgICAtIGltbWljaC1yZWRpcy1kYXRhOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTURcIiwgXCJyZWRpcy1jbGlcIiwgXCJwaW5nXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgIHJlc3RhcnQ6IGFsd2F5c1xuXG4gIGltbWljaC1kYXRhYmFzZTpcbiAgICBpbWFnZTogdGVuc29yY2hvcmQvcGd2ZWN0by1yczpwZzE0LXYwLjMuMFxuXG4gICAgdm9sdW1lczpcbiAgICAgIC0gaW1taWNoLXBvc3RncmVzOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgIGVudmlyb25tZW50OlxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICR7REJfUEFTU1dPUkR9XG4gICAgICBQT1NUR1JFU19VU0VSOiAke0RCX1VTRVJOQU1FfVxuICAgICAgUE9TVEdSRVNfREI6IGltbWljaFxuICAgICAgUE9TVEdSRVNfSU5JVERCX0FSR1M6ICctLWRhdGEtY2hlY2tzdW1zJ1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogcGdfaXNyZWFkeSAtVSAke0RCX1VTRVJOQU1FfSAtZCBpbW1pY2ggfHwgZXhpdCAxXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgIGNvbW1hbmQ6XG4gICAgICBbXG4gICAgICAgICdwb3N0Z3JlcycsXG4gICAgICAgICctYycsXG4gICAgICAgICdzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM9dmVjdG9ycy5zbycsXG4gICAgICAgICctYycsXG4gICAgICAgICdzZWFyY2hfcGF0aD1cIiQkdXNlclwiLCBwdWJsaWMsIHZlY3RvcnMnLFxuICAgICAgICAnLWMnLFxuICAgICAgICAnbG9nZ2luZ19jb2xsZWN0b3I9b24nLFxuICAgICAgICAnLWMnLFxuICAgICAgICAnbWF4X3dhbF9zaXplPTJHQicsXG4gICAgICAgICctYycsXG4gICAgICAgICdzaGFyZWRfYnVmZmVycz01MTJNQicsXG4gICAgICAgICctYycsXG4gICAgICAgICd3YWxfY29tcHJlc3Npb249b24nLFxuICAgICAgXVxuICAgIHJlc3RhcnQ6IGFsd2F5c1xuXG52b2x1bWVzOlxuICBpbW1pY2gtbW9kZWwtY2FjaGU6XG4gIGltbWljaC1wb3N0Z3JlczpcbiAgaW1taWNoLWxpYnJhcnk6XG4gIGltbWljaC1yZWRpcy1kYXRhOiBcbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5kYl9wYXNzd29yZCA9IFwiJHtwYXNzd29yZH1cIlxuZGJfdXNlciA9IFwiaW1taWNoXCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJJTU1JQ0hfSE9TVD0ke21haW5fZG9tYWlufVwiLFxuICBcIlNFUlZFUl9VUkw9aHR0cHM6Ly8ke21haW5fZG9tYWlufVwiLFxuICBcIkZST05UX0JBU0VfVVJMPWh0dHBzOi8vJHttYWluX2RvbWFpbn1cIixcbiAgXCJEQl9IT1NUTkFNRT1pbW1pY2gtZGF0YWJhc2VcIixcbiAgXCJEQl9QT1JUPTU0MzJcIixcbiAgXCJEQl9VU0VSTkFNRT0ke2RiX3VzZXJ9XCIsXG4gIFwiREJfUEFTU1dPUkQ9JHtkYl9wYXNzd29yZH1cIixcbiAgXCJEQl9EQVRBQkFTRV9OQU1FPWltbWljaFwiLFxuICBcIlJFRElTX0hPU1ROQU1FPWltbWljaC1yZWRpc1wiLFxuICBcIlJFRElTX1BPUlQ9NjM3OVwiLFxuICBcIlJFRElTX0RCSU5ERVg9MFwiLFxuICBcIlRaPVVUQ1wiLFxuXVxubW91bnRzID0gW11cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiaW1taWNoLXNlcnZlclwiXG5wb3J0ID0gMl8yODNcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbiIKfQ==Links
Tags
photos, videos, backup, media
Version: v1.121.0
I Hate Money
I Hate Money is a web application for managing shared expenses among groups of people. It helps you track who owes what to whom, making it easy to split bills and manage group finances.
Infisical
All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.