Immich PostgreSQL
| Description / name | Input element |
|---|---|
| Container Registry | |
| Container Configuration Root Path | |
| Immich PostgreSQL Host Port | |
| Immich PostgreSQL /var/lib/postgresql/data Path |
PostgreSQL with pgvector and vectorchord extensions required by Immich for vector similarity search. Defaults to PostgreSQL 14 (:latest), PostgreSQL 18 available as :18.
| Port | 5432 |
| Registry | ghcr.io/daemonless/immich-postgres |
| Daemonless | daemonless/immich-postgres |
| Source | immich-app/immich |
| Website | immich.app |
Version Tags
Multi-arch manifests — resolve automatically to the right image for your platform.
| Tag | Description | Best For |
|---|---|---|
14 / 14-pkg / latest |
Upstream Binary. Built from official release. | Most users — recommended. |
18 / 18-pkg |
Upstream Binary. Built from official release. | Alternative build. |
| Tag | Description | Best For |
|---|---|---|
14-amd64 / 14-pkg-amd64 / latest-amd64 |
Upstream Binary. Built from official release. | Most users — recommended. |
18-amd64 / 18-pkg-amd64 |
Upstream Binary. Built from official release. | Alternative build. |
| Tag | Description | Best For |
|---|---|---|
14-aarch64 / 14-pkg-aarch64 / latest-aarch64 |
Upstream Binary. Built from official release. | Most users — recommended. |
18-aarch64 / 18-pkg-aarch64 |
Upstream Binary. Built from official release. | Alternative build. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions, including the security model for host vs. container privileges.
Deployment
Save as compose.yaml, then run podman-compose up -d.
Warning
Exposing ports in AppJail means that your service can be reached from remote hosts. If that is not your intention, do not expose the ports and communicate with the service using the jail's IPv4 address or hostname assigned by the virtual network.
Save the files above, then run appjail-director up.
Experimental
Bastille's OCI support is experimental. It requires buildah and shares the host network stack (inherit). Mount volumes with --volume HOST JAIL; without it, image-declared volumes are stored under ${bastille_volumesdir}/${jail}.
Save as bastille-compose.yml, then run bastille up.
Interactive Configuration
Parameters
Environment Variables
| Variable | Default | Description |
|---|---|---|
POSTGRES_USER |
postgres |
Database superuser (default: postgres) |
POSTGRES_PASSWORD |
postgres |
Database password (default: postgres) |
POSTGRES_DB |
immich |
Database name (default: immich) |
POSTGRES_INITDB_ARGS |
`` | Additional initdb arguments |
Volumes
| Path | Description |
|---|---|
/var/lib/postgresql/data |
Database data directory |
Ports
| Port | Protocol | Description |
|---|---|---|
5432 |
TCP | PostgreSQL Port |
This image is part of the Immich Stack.
PostgreSQL version: :latest and :14 use PostgreSQL 14. :18 uses PostgreSQL 18.
New installations should consider :18. If you are migrating an existing Immich instance,
stay on :14 — PostgreSQL major version upgrades require a full pg_dumpall and restore.
The default :latest tag will follow whatever version Immich recommends upstream.
PostgreSQL requires allow.sysvipc for shared memory. Create immich-postgres.conf alongside appjail-director.yml:
Implementation Details
- Architectures: amd64, aarch64
- User:
postgres(UID/GID set via PUID/PGID). Defaults to1000:1000. - Base: Built on
ghcr.io/daemonless/base(FreeBSD 15.1). - sysvipc: Requires
--annotation 'org.freebsd.jail.allow.sysvipc=true'(ocijail 0.5.0+)
Need help? Join our Discord community.