From 51aed660b0b7c07d7dafbb5d2a378e16f38a9e0a Mon Sep 17 00:00:00 2001 From: Thomas Blarre Date: Tue, 14 May 2024 19:18:16 +0100 Subject: [PATCH] Immich + tailscale --- immich/.env.example | 21 +++++++ immich/docker-compose.yml | 96 +++++++++++++++++++++++++++++ immich/ts-immich/config/immich.json | 20 ++++++ 3 files changed, 137 insertions(+) create mode 100644 immich/.env.example create mode 100644 immich/docker-compose.yml create mode 100644 immich/ts-immich/config/immich.json diff --git a/immich/.env.example b/immich/.env.example new file mode 100644 index 0000000..7e683c1 --- /dev/null +++ b/immich/.env.example @@ -0,0 +1,21 @@ +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=./library +# The location where your database files are stored +DB_DATA_LOCATION=./postgres + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password +DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich + +# For Tailscale +TAILSCALE_OAUTH_KEY= +TAILSCALE_TAGS= \ No newline at end of file diff --git a/immich/docker-compose.yml b/immich/docker-compose.yml new file mode 100644 index 0000000..46ad494 --- /dev/null +++ b/immich/docker-compose.yml @@ -0,0 +1,96 @@ +# +# WARNING: Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# +# The compose file on main may not be compatible with the latest release. +# + +name: immich + +services: + ts-photoprism: + image: tailscale/tailscale:latest + hostname: photos + environment: + - TS_AUTHKEY=${TAILSCALE_OAUTH_KEY} + - TS_EXTRA_ARGS=--advertise-tags=${TAILSCALE_TAGS} + - TS_STATE_DIR=/var/lib/tailscale + - TS_SERVE_CONFIG=/config/immich.json + volumes: + - ts-immich-state:/var/lib/tailscale + - /dev/net/tun:/dev/net/tun + - ./ts-immich/config:/config + cap_add: + - net_admin + - sys_module + restart: unless-stopped + + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + command: ['start.sh', 'immich'] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - .env +# ports: +# - 2283:3001 + depends_on: + - redis + - database + restart: always + + immich-microservices: + container_name: immich_microservices + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + command: ['start.sh', 'microservices'] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + depends_on: + - redis + - database + restart: always + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + + redis: + container_name: immich_redis + image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672 + restart: always + + database: + container_name: immich_postgres + image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + volumes: + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + restart: always + 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"] + +volumes: + model-cache: + ts-immich-state: diff --git a/immich/ts-immich/config/immich.json b/immich/ts-immich/config/immich.json new file mode 100644 index 0000000..2e3f974 --- /dev/null +++ b/immich/ts-immich/config/immich.json @@ -0,0 +1,20 @@ +{ + "TCP": { + "443": { + "HTTPS": true + } + }, + "Web": { + "${TS_CERT_DOMAIN}:443": { + "Handlers": { + "/": { + "Proxy": "http://immich_server:3001" + } + } + } + }, + "AllowFunnel": { + "${TS_CERT_DOMAIN}:443": false + } + } +