Installation¶
Docker¶
If you already run immich with Docker Compose, the simplest setup is to add one service to that existing compose file.
Database backup strongly recommended
This service updates immich metadata in the database.
Before first use, and especially before using any bulk-clear action from the Data page, create a proper immich database backup.
Official guide: Backup and Restore | Immich
Preferred setup¶
- Add the service to your existing Immich
docker-compose.yml. - Reuse the same
.envfile that already contains your Immich database settings. - Keep
/configand/datapersisted with Docker volumes. - No extra Docker network configuration is needed when the service lives in the same compose project as Immich.
Reference file: docker-compose.yml
Copy/paste snippet:
docker-compose.yml
# docker-compose.yml
# Add this service to your existing Immich docker-compose.yml.
services:
immich-reversegeo:
image: ghcr.io/immich-reversegeo/immich-reversegeo:latest
container_name: immich-reversegeo
pull_policy: always
ports:
- "8080:8080" # change the left side if 8080 is already in use; do NOT expose publicly
volumes:
- reversegeo-config:/config # settings (no database secrets in settings.json)
- reversegeo-data:/data # Overture caches, skipped.db, runtime data
env_file:
- .env # reuse Immich's own .env (DB_USERNAME, DB_PASSWORD, etc.)
environment:
- ASPNETCORE_URLS=http://+:8080
restart: unless-stopped
volumes:
reversegeo-config:
reversegeo-data:
This service expects:
- the same database connection values Immich already uses
- to run in the same compose project and Docker network as Immich
- a persistent
/configvolume for settings - a persistent
/datavolume for downloaded Overture data and runtime state - a free host port for the published web UI, with
8080as the default example
Typical variables come from the shared .env file:
DB_HOST=database
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=...
DB_DATABASE_NAME=immich
DATA_DIR=/data
CONFIG_DIR=/config
Then start the stack:
docker compose up -d
Runtime notes¶
- Built-in data covers country matching and airport matching.
- More detailed country data is downloaded only when needed.
- The app needs internet access the first time it downloads data for a new country.
- Large countries can use hundreds of megabytes each under
/data.