What's New
- On mobile, Immaculaterr now suggests adding it to your home screen: a small dismissible banner on Android offers a one-tap install, and on iOS Safari it shows the Share -> Add to Home Screen steps (only Safari can create a true standalone app from the manifest; other iOS browsers can't). It never interrupts — it waits a few seconds before appearing, never shows if you're already using the installed app, and stays away for about three weeks after you dismiss it once.
- Retinted the dashboard chart's loading skeleton from a white shimmer to a warm amber one so it doesn't clash with the yellow-green backdrop.
Full Changelog: https://github.com/ohmzi/Immaculaterr/compare/v1.7.9..v1.7.10
Licensing
Official Docker images and release artifacts are provided for personal, noncommercial self-hosting only. The public source repository remains visible for transparency and reference, but the source code is not licensed for reuse. See LICENSE.
If you are running NAS or Unraid please check their specific documentation for update
NAS
Unraid
Updating
Docker
HTTPS update which includes sidecar
set -euo pipefail
IMM_IMAGE="ghcr.io/ohmzi/immaculaterr:latest"
mkdir -p "$HOME/immaculaterr"
curl -fsSL -o "$HOME/immaculaterr/caddy-entrypoint.sh" "https://raw.githubusercontent.com/ohmzi/Immaculaterr/master/docker/immaculaterr/caddy-entrypoint.sh"
curl -fsSL -o "$HOME/immaculaterr/install-local-ca.sh" "https://raw.githubusercontent.com/ohmzi/Immaculaterr/master/docker/immaculaterr/install-local-ca.sh"
chmod +x "$HOME/immaculaterr/caddy-entrypoint.sh" "$HOME/immaculaterr/install-local-ca.sh"
# Needed so install-local-ca.sh can import trust into Firefox profiles
if ! command -v certutil >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y libnss3-tools
fi
docker pull "$IMM_IMAGE"
docker pull caddy:2.8.4-alpine
docker rm -f ImmaculaterrHttps 2>/dev/null || true
docker rm -f Immaculaterr 2>/dev/null || true
# Keep named volumes stable so certs persist across restarts
docker volume create immaculaterr-caddy-data >/dev/null 2>&1 || true
docker volume create immaculaterr-caddy-config >/dev/null 2>&1 || true
docker run -d --name ImmaculaterrHttps --network host -e IMM_ENABLE_HTTP=false -e IMM_ENABLE_HTTPS=true -e IMM_HTTPS_PORT=5464 -e IMM_INCLUDE_LOCALHOST=true -e IMM_ENABLE_LAN_IP=true -e APP_INTERNAL_PORT=5454 -v "$HOME/immaculaterr/caddy-entrypoint.sh:/etc/caddy/caddy-entrypoint.sh:ro" -v immaculaterr-caddy-data:/data -v immaculaterr-caddy-config:/config --restart unless-stopped caddy:2.8.4-alpine /bin/sh /etc/caddy/caddy-entrypoint.sh
docker run -d --name Immaculaterr -p 5454:5454 -e HOST=0.0.0.0 -e PORT=5454 -e TRUST_PROXY=1 -e APP_DATA_DIR=/data -e DATABASE_URL=file:/data/tcp.sqlite -v immaculaterr-data:/data --restart unless-stopped "$IMM_IMAGE"
# CRITICAL: trust the current Caddy local CA
"$HOME/immaculaterr/install-local-ca.sh"
# Quick verify
curl -I https://localhost:5464HTTP-only update
IMM_IMAGE="ghcr.io/ohmzi/immaculaterr:latest"
APP_PORT=5454
docker pull "$IMM_IMAGE"
docker rm -f ImmaculaterrHttps 2>/dev/null || true
docker rm -f Immaculaterr 2>/dev/null || true
docker run -d --name Immaculaterr -p ${APP_PORT}:${APP_PORT} -e HOST=0.0.0.0 -e PORT=${APP_PORT} -e TRUST_PROXY=1 -e APP_DATA_DIR=/data -e DATABASE_URL=file:/data/tcp.sqlite -v immaculaterr-data:/data --restart unless-stopped "$IMM_IMAGE"Portainer
- In Portainer: Containers -> select Immaculaterr
- Click Recreate
- Enable Re-pull image
- Click Recreate