Share Immich photos and albums publicly without exposing the Immich instance itself.
| Port | 3000 |
| Registry | ghcr.io/daemonless/immich-public-proxy |
| Source | https://github.com/daemonless/immich-public-proxy |
| Website | https://github.com/alangrainger/immich-public-proxy |
| Tag | Description | Best For |
|---|---|---|
latest |
Upstream Binary. Built from official release. | Most users. Matches Linux Docker behavior. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
services:
immich-public-proxy:
image: "ghcr.io/daemonless/immich-public-proxy:latest"
container_name: immich-public-proxy
environment:
- IMMICH_URL=http://your-internal-immich-server:2283 # URL of your (private) Immich instance, e.g. http://immich-server:2283
- PUBLIC_BASE_URL=https://your-proxy-url.com # Public base URL this proxy is served from, no trailing slash (optional - derived from the request hostname if unset)
- TZ=UTC # Timezone for the container
ports:
- "3000:3000"
restart: unless-stopped.env:
DIRECTOR_PROJECT=immich-public-proxy
IMMICH_URL=http://your-internal-immich-server:2283
PUBLIC_BASE_URL=https://your-proxy-url.com
TZ=UTC
appjail-director.yml:
options:
- virtualnet: ':<random> default'
- nat:
services:
immich-public-proxy:
name: immich_public_proxy
options:
- container: 'boot args:--pull'
oci:
user: root
environment:
- IMMICH_URL: !ENV '${IMMICH_URL}'
- PUBLIC_BASE_URL: !ENV '${PUBLIC_BASE_URL}'
- TZ: !ENV '${TZ}'Makejail:
ARG tag=latest
OPTION overwrite=force
OPTION from=ghcr.io/daemonless/immich-public-proxy:${tag}
podman run -d --name immich-public-proxy \
-p 3000:3000 \
-e IMMICH_URL=http://your-internal-immich-server:2283 \
-e PUBLIC_BASE_URL=https://your-proxy-url.com \
-e TZ=UTC \
ghcr.io/daemonless/immich-public-proxy:latest- name: Deploy immich-public-proxy
containers.podman.podman_container:
name: immich-public-proxy
image: "ghcr.io/daemonless/immich-public-proxy:latest"
state: started
restart_policy: always
env:
IMMICH_URL: "http://your-internal-immich-server:2283"
PUBLIC_BASE_URL: "https://your-proxy-url.com"
TZ: "UTC"
ports:
- "3000:3000"Access at: http://localhost:3000
| Variable | Default | Description |
|---|---|---|
IMMICH_URL |
http://your-internal-immich-server:2283 |
URL of your (private) Immich instance, e.g. http://immich-server:2283 |
PUBLIC_BASE_URL |
https://your-proxy-url.com |
Public base URL this proxy is served from, no trailing slash (optional - derived from the request hostname if unset) |
TZ |
UTC |
Timezone for the container |
| Port | Protocol | Description |
|---|---|---|
3000 |
TCP | Web UI |
This image is part of the Immich Stack.
Architectures: amd64
User: bsd (UID/GID via PUID/PGID, defaults to 1000:1000)
Base: FreeBSD 15.0
Need help? Join our Discord community.