Skip to main content

Installation help

For a first installation, follow Quick start or your platform guide. Use this page when a step fails.

Download models from the CLI​

The app's Download models button and the CLI fetch the same files for your configured tier. Use either one. For Docker Compose, run from the installation folder:

docker compose exec -T immich-memories immich-memories models fetch

On a native install, run immich-memories models fetch as the user who runs the app. Wait for it to finish before making a film. Later runs reuse verified files.

Read preflight​

With Docker Compose, run from your installation folder:

docker compose exec -T immich-memories immich-memories preflight
docker compose exec -T immich-memories immich-memories capabilities

On a native install, use immich-memories preflight and immich-memories capabilities directly. For a container manager, run those two commands in its app container console.

preflight checks the Immich connection, required models, output and configured services. capabilities reports the resolved tier. Read the individual checks; a warning count alone cannot tell you whether a film can run.

ResultWhat to do
Missing pinned encoder, dictionary or detectorRun immich-memories models fetch using the same tier and configuration
Output is not writableGive UID/GID 1000 access to the output folder; use the Synology ACL recipe on DSM
Immich connection failedCheck its container-reachable URL and the API-key permissions
Missing GPU inference, captions or LayaWait for the model services, then check their configuration; see GPU requirements
Full needs an enabled readerConfigure the reader URL, model and explicit enable switch before starting Full
Basic uses software encoding or CPU titlesSupported; no fix needed
Home coordinates skippedOptional for album films; set them later for trips
Upload permissions missing on a read-only keyLocal films still work; add upload permissions when enabling uploads

The output row names the destination and its configuration source. Environment variables beat config.yaml, including the output path set by the image. A path outside a mounted volume gets a warning because its files do not survive container replacement. Configuration sources explains how to change it.

Port or container name already in use​

The release Compose file uses host port 22830 and container_name: immich-memories. Change only the host port in its ports: entry, preserving the bind address. For example:

ports:
- ${UI_BIND_ADDRESS:-127.0.0.1}:8081:8080

Recreate with docker compose up -d and open port 8081. The setup builder has a UI host port field for the same choice. Natively, use immich-memories ui -p 8081.

For a second installation on the same host, use a separate project folder, a unique COMPOSE_PROJECT_NAME in .env, a different container name for each service and free host ports. Two directories with the same basename otherwise get the same Compose project name and volume names. Run commands from the correct project directory with docker compose exec; it finds services by their service name even when their container names differ.

Cuts hang on thumbnails although preflight passes​

An Immich metadata check can pass while larger thumbnail transfers hang when the host route's MTU is smaller than Docker's. This can occur with a VPN, a Kubernetes node or a cloud network.

Run ip route get 192.168.1.10 with your Immich address. The device follows dev; read its MTU with cat /sys/class/net/eth0/mtu, substituting that device (for example ovs_eth0 on Synology). If it is below 1500, add docker-compose.override.yml with a smaller value, for example:

networks:
default:
driver_opts:
com.docker.network.driver.mtu: "1300"

If .env sets COMPOSE_FILE for GPU or Full, append :docker-compose.override.yml to that list so Compose uses the override too. Follow the network recreation procedure.

SSH forwarding is refused​

SSH login does not imply permission to forward ports. On DSM, a non-admin account can log in while a tunnel gets administratively prohibited. Use an approved forwarding-enabled account, app login on the LAN, or the Synology HTTPS proxy. Do not change global SSH policy to follow an app installation guide.

Running checks over SSH​

Use -T without a terminal and set the width when the table wraps:

docker compose exec -T -e COLUMNS=140 immich-memories immich-memories preflight

Inside a script sent with ssh host 'bash -s', append </dev/null to Compose exec commands so they cannot consume the rest of the script.

Native install: command, Python or FFmpeg problems​

Python installation details covers PATH, Python versions, FFmpeg filters and runtime extras. For a film that has already started, use film progress and recovery.