Guide
Install options
Choose the method that fits your host. The published image supports amd64 and arm64. You can use podman compose in place of docker compose.
Download the standalone sample and start the published image.
curl -fsSLO https://raw.githubusercontent.com/nulthara/filterhelm/main/compose.ghcr.yamldocker compose -f compose.ghcr.yaml up -ddocker compose -f compose.ghcr.yaml exec filterhelm python -m app.auth set-password --username adminThe sample uses ghcr.io/nulthara/filterhelm:latest. Pin a version tag such as 0.2.1 for anything long-lived. If you rename the file to compose.yaml, you can drop -f compose.ghcr.yaml from the commands.
Run the image with a read-only root filesystem and a persistent data volume.
docker run -d --name filterhelm --read-only --tmpfs /tmp \ -p 127.0.0.1:8420:8420 \ -e FILTERHELM_COOKIE_SECURE=false \ -v filterhelm-data:/data \ ghcr.io/nulthara/filterhelm:latestdocker exec -it filterhelm python -m app.auth set-password --username adminPin a version tag instead of latest for anything long-lived.
In a clone of the repository, use Python 3.11 or newer.
python3 -m venv .venv./.venv/bin/pip install -r requirements.lock./.venv/bin/pip install --no-deps --no-build-isolation -e ../.venv/bin/python -m app.auth set-password --username adminFILTERHELM_COOKIE_SECURE=false ./.venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8420The compiled app frontend is committed, so you do not need Node.js to run it.
To build a container from a clone instead, run the repository’s Compose file.
docker compose up -d --builddocker compose exec filterhelm python -m app.auth set-password --username adminOpen http://127.0.0.1:8420/ and sign in as admin with the password you set.
Verify the image
Section titled “Verify the image”Each release image carries signed build provenance and an SPDX SBOM describing the amd64 image. Replace X.Y.Z with your release tag.
gh attestation verify oci://ghcr.io/nulthara/filterhelm:X.Y.Z --owner nultharagh attestation verify oci://ghcr.io/nulthara/filterhelm:X.Y.Z --owner nulthara \ --predicate-type https://spdx.dev/Document/v2.3Read more about image verification.
Serve over HTTPS
Section titled “Serve over HTTPS”FILTERHELM_COOKIE_SECURE=false allows sign-in over plain HTTP. Use it only on loopback. Production session cookies require HTTPS. Behind an HTTPS reverse proxy, set FILTERHELM_COOKIE_SECURE=true and add your public hostname to FILTERHELM_TRUSTED_HOSTS.
Preserve the public Host header at the reverse proxy. Protect the data directory and its backups. On headless hosts, stored Pi-hole passwords are protected by file permissions but are not encrypted.
For updates and recovery, read more about upgrades and backups.