Immich Machine Learning
| Description / name | Input element |
|---|---|
| Container Registry | |
| Container Configuration Root Path | |
| Timezone | |
| User ID | |
| Group ID | |
| Immich Machine Learning Host Port | |
| Immich Machine Learning /cache Path | |
| Immich Machine Learning /config Path |
Machine learning service for Immich — handles facial recognition, image classification, and semantic search using ONNX models.
| Port | 3003 |
| Registry | ghcr.io/daemonless/immich-ml |
| Daemonless | daemonless/immich-ml |
| Source | immich-app/immich |
| Website | immich.app |
Version Tags
| Tag | Description | Best For |
|---|---|---|
latest |
Upstream Binary. Built from official release. | Most users. Matches Linux Docker behavior. |
Root Privileges Required
Podman on FreeBSD currently requires root. All commands must be run as root (or via doas/sudo).
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
Deployment
Interactive Configuration
Parameters
Environment Variables
| Variable | Default | Description |
|---|---|---|
MACHINE_LEARNING_HOST |
0.0.0.0 |
Host to bind to (0.0.0.0) |
MACHINE_LEARNING_PORT |
3003 |
Port to bind to (3003) |
MACHINE_LEARNING_CACHE_FOLDER |
/cache |
Path to cache folder (/cache) |
PUID |
1000 |
User ID for the application process |
PGID |
1000 |
Group ID for the application process |
TZ |
UTC |
Timezone for the container |
MACHINE_LEARNING_WORKERS |
1 |
Number of ML worker processes. Keep at 1 on weak / CPU-only hosts. |
MACHINE_LEARNING_WORKER_TIMEOUT |
300 |
Gunicorn worker timeout in seconds. Raise on slow CPUs so model loading doesn't time out and cycle the worker. |
SKIP_CHOWN |
true |
Skip the one-time recursive chown of /cache and /config once ownership is recorded in /config/.chown_done (default true). Set false to force a chown on every start. |
Volumes
| Path | Description |
|---|---|
/cache |
Model cache (HuggingFace ONNX models). Use a persistent volume to avoid re-downloading models. |
/config |
Gunicorn HOME and the .chown_done ownership marker. Must be a persistent volume (the chown-skip relies on it). |
Ports
| Port | Protocol | Description |
|---|---|---|
3003 |
TCP | ML API |
This image is part of the Immich Stack.
Low-power / CPU-only hosts
On weak or CPU-only machines, model loading can be slow and the worker may time out during startup (repeated healthy/unhealthy cycles). Raise the timeout and pin the numeric libraries to a single thread to avoid thrashing:
Persistent volumes
Mount both /config and /cache as persistent volumes. The one-time
recursive chown is skipped on later starts via a /config/.chown_done
marker — without a persistent /config, the marker is lost and the chown
re-runs every start, so SKIP_CHOWN=true only takes effect once /config
persists the marker.
Implementation Details
- Architectures: amd64
- User:
bsd(UID/GID set via PUID/PGID). Defaults to1000:1000. - Base: Built on
ghcr.io/daemonless/base(FreeBSD 15.1).
Need help? Join our Discord community.