diff --git a/README.md b/README.md index c0b8006..e76d31d 100644 --- a/README.md +++ b/README.md @@ -2,36 +2,32 @@ ## Overview -This media server is designed to run a variety of services, including: -- Immich Server: a photo and video sharing platform -- Immich Machine Learning: a machine learning model for image and video processing -- Redis: an in-memory data store -- PostgreSQL: a relational database -- Duplicati: a backup management solution -- Plex: a media management and streaming platform -- Nginx: a web server and reverse proxy +This media server is designed to run a variety of services as listed below. ## Services ### 1. Immich Server +* Service type: Photo and Video management solution * Container Name: `immich_server` * Environment Variables: + `IMMICH_VERSION`: Immich version - + `UPLOAD_LOCATION`: the location of media files on the host machine (default: `./immich/library`) - + `EXTERNAL_LIB`: a library path for external media - + `UPLOAD_LOCATION`: the location of media files on the host machine + + `EXTERNAL_LIB`: the location of external media + + `UPLOAD_LOCATION`: the location of uploaded files ### 2. Immich Machine Learning +* Service type: ML for Immich * Container Name: `immich_machine_learning` ### 3. Redis +* Service type: Queuing database for Immich * Container Name: `immich_redis` ### 4. PostgreSQL +* Service type: Resting database for Immich * Container Name: `immich_postgres` * Environment Variables: + `DB_PASSWORD`: your database password (default: `postgres`) @@ -39,18 +35,24 @@ This media server is designed to run a variety of services, including: + `DB_NAME`: your database name (default: `immich`) + `DB_DATA_LOCATION`: host location of your database -### 5. Plex +### 5. Jellyfin -* Container Name: `plex` +* Service type: Media Steaming solution +* Container Name: `jellyfin` * Environment Variables: - + `PLEX_VERSION`: Plex version - + `PUID`: the user ID for Plex to run as - + `PGID`: the group ID for Plex to run as - + `TZ`: the timezone for Plex to use - + `PLEX_CLAIM_TOKEN`: your Plex server claim token (replace with your own token) + + `STREAM_EXT_LIB`: Location of your streaming media -### 6. Nginx +### 6. Duplicati +* Service type: Data backup solution +* Container Name: `duplicati` +* Environment Variables: + + `SETTINGS_ENCRYPTION_KEY`: your encryption/decryption password. This key is used to encrypt and decrypt your backups so keep this safe off-site + + `DUPLICATI__WEBSERVICE_PASSWORD`: password for the Duplicati WebUI login + +### 7. Nginx + +* Service type: Reverse proxy * Container Name: `nginx` * Environment Variables: + `NGINX_VERSION`: nginx version @@ -64,13 +66,13 @@ This media server is designed to run a variety of services, including: The following volumes are mounted: -* `model-cache`: a cache directory for model storage -* `/etc/localtime:/etc/localtime:ro`: syncs the container's time with the host's time * `./data/immich/library`: Immich upload library storage * `./data/immich/postgres`: Immich postgres database storage -* `./data/plexmediaserver`: mounts the Plex server application data directory -* `./data/ssl`: mounts the SSL certificate and key files +* `./data/jellyfin`: mounts the Jellyfin server data directory * `./data/duplicati`: Duplicati working directory +* `./data/ssl`: mounts the SSL certificate and key files +* `model-cache`: a cache directory for model storage +* `/etc/localtime:/etc/localtime:ro`: syncs the container's time with the host's time ## Running the Media Server @@ -97,12 +99,11 @@ sudo docker compose down ## Hardware Acceleration - The `hwaccel.*.yml` files contain docker configurations for hardware acceleration using `openvino` for Intel CPUs, and `cuda` for nvidia GPUs, for Immich. -- The `docker-compose.yml` uses `openvino` by default. -- HW acceleration in Plex can be enabled from the web interface. +- The `compose.yaml` uses `openvino` by default. ## Notes -* Copy `sample-configs/.env` into the root of this project (same location as `docker-compose.yml`). +* Copy `sample-configs/.env` into the root of this project (same location as `compose.yaml`). * Update all placeholder variables with your own values. * Make sure to replace `postgres` with a secure password for PostgreSQL. * For individual services, refer to their docker-compose documentations for more options. diff --git a/compose.yaml b/compose.yaml index c91936a..67037a8 100644 --- a/compose.yaml +++ b/compose.yaml @@ -51,7 +51,7 @@ services: disable: false redis: container_name: immich_redis - image: docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9 + image: docker.io/valkey/valkey:9@sha256:4963247afc4cd33c7d3b2d2816b9f7f8eeebab148d29056c2ca4d7cbc966f2d9 healthcheck: test: redis-cli ping || exit 1 restart: always @@ -69,6 +69,25 @@ services: restart: always healthcheck: disable: false + jellyfin: + container_name: jellyfin + restart: unless-stopped + image: jellyfin/jellyfin + ports: + - 8096:8096/tcp + - 7359:7359/udp + volumes: + - ./data/jellyfin/config:/config + - ./data/jellyfin/cache:/cache + - type: bind + source: ${STREAM_EXT_LIB} + target: /media + - type: bind + source: /path/to/fonts + target: /usr/local/share/fonts/custom + read_only: true + extra_hosts: + - host.docker.internal:host-gateway duplicati: image: lscr.io/linuxserver/duplicati:latest container_name: duplicati @@ -102,25 +121,6 @@ services: depends_on: - immich-server - jellyfin - jellyfin: - container_name: jellyfin - restart: unless-stopped - image: jellyfin/jellyfin - ports: - - 8096:8096/tcp - - 7359:7359/udp - volumes: - - ./data/jellyfin/config:/config - - ./data/jellyfin/cache:/cache - - type: bind - source: ${STREAM_EXT_LIB} - target: /media - - type: bind - source: /path/to/fonts - target: /usr/local/share/fonts/custom - read_only: true - extra_hosts: - - host.docker.internal:host-gateway volumes: model-cache: networks: {} diff --git a/sample-configs/.env b/sample-configs/.env index 31e274a..216c1dc 100644 --- a/sample-configs/.env +++ b/sample-configs/.env @@ -3,7 +3,7 @@ ########## # IMMICH ########## -IMMICH_VERSION=v2.7.5 +IMMICH_VERSION=v3.0.1 # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables UPLOAD_LOCATION=./data/immich/library # The location where your uploaded files are stored