Open source home automation that puts local control and privacy first.
| Registry | ghcr.io/daemonless/home-assistant |
| Source | https://github.com/daemonless/home-assistant |
| Website | https://www.home-assistant.io/ |
| Tag | Description | Best For |
|---|---|---|
latest |
Upstream Binary. Built from official release. | Most users — recommended. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
services:
home-assistant:
image: "ghcr.io/daemonless/home-assistant:latest"
container_name: home-assistant
environment:
- PUID=1000 # User ID for the application process
- PGID=1000 # Group ID for the application process
- TZ=UTC # Timezone for the container
volumes:
- "/containers/home-assistant:/config"
annotations:
org.freebsd.jail.allow.raw_sockets: "true"
# always (not unless-stopped) so FreeBSD's podman rc.d auto-starts it at boot
restart: alwaysSave as compose.yaml, then run podman-compose up -d.
.env:
# .env
DIRECTOR_PROJECT=home-assistant
PUID=1000
PGID=1000
TZ=UTC
appjail-director.yml:
# appjail-director.yml
options:
- alias:
- ip4_inherit:
services:
home-assistant:
name: home_assistant
options:
- container: 'args:--pull'
- template: !ENV '${PWD}/template.conf'
oci:
user: root
environment:
- PUID: !ENV '${PUID}'
- PGID: !ENV '${PGID}'
- TZ: !ENV '${TZ}'
volumes:
- home-assistant: /config
volumes:
home-assistant:
device: '/containers/home-assistant'Makejail:
# Makejail
ARG tag=latest
OPTION container=boot
OPTION overwrite=force
OPTION from=ghcr.io/daemonless/home-assistant:${tag}
template.conf:
# template.conf
exec.start: "/bin/sh /etc/rc"
exec.stop: "/bin/sh /etc/rc.shutdown jail"
mount.devfs
persist
allow.raw_sockets
Save the files above, then run appjail-director up.
Warning
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}.
services:
home-assistant:
name: home-assistant
image: "ghcr.io/daemonless/home-assistant:latest"
network:
- mode: host
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
volumes:
- "/containers/home-assistant:/config"Save as bastille-compose.yml, then run bastille up.
| Variable | Default | Description |
|---|---|---|
PUID |
1000 |
User ID for the application process |
PGID |
1000 |
Group ID for the application process |
TZ |
UTC |
Timezone for the container |
| Path | Description |
|---|---|
/config |
Configuration directory |
Architectures: amd64
User: bsd (UID/GID via PUID/PGID, defaults to 1000:1000)
Base: FreeBSD 15.1
Need help? Join our Discord community.