Version 0.1.0 (“Featherweight”) of the Ansible role head1328.ivly is now on Ansible Galaxy
. It deploys the full ivly
invoicing stack as rootless Podman Quadlets on Raspberry Pi OS / Debian Trixie.
An Ansible role that deploys the ivly invoicing stack on Raspberry Pi OS (Debian 13 / Trixie) using containers.
What It Does#
The role brings the entire ivly stack to a Pi as rootless containers using Podman + systemd Quadlets:
- CouchDB as the document store
- ivly-api (Go) - backend API
- ivly-backoffice (SvelteKit SPA via nginx) - web frontend
- ivly-printer (Go + TeX Live) - PDF rendering from LaTeX
- ivly-validation (Java) - XRechnung / ZUGFeRD / Factur-X validation
- Caddy as the reverse proxy
All components talk to each other on a shared Podman network. Image tags are pinned to 0.1.0 by default; ivly_autoupdate_enabled switches on podman-auto-update when running floating tags.
Topology#
The reference setup assumes two Pis:
| Host | Hardware | Role | Required? |
|---|---|---|---|
ivly | Pi 4/5 | runs the ivly stack | yes |
ollama | Pi 5 + AI HAT+ 2 | runs Ollama via head1328.hailo | optional |
Without a dedicated Ollama host, ivly_ollama_url can point at any reachable Ollama-compatible endpoint - or the LLM-related variables can simply be omitted, and ivly works without LLM-backed assistance features.
TLS and Networking#
- Caddy with automatic Let’s Encrypt (
ivly_caddy_domain), or - internal Caddy CA for internal domains (
ivly_caddy_tls_internal) - optional
iptablesPREROUTING redirects for privileged ports < 1024 (rootless Podman cannot bind those directly)
Installation#
ansible-galaxy role install head1328.ivlyThe role builds on head1328.podman
.
License#
AGPL-3.0-or-later.
Acknowledgments#
- ivly - open-source invoicing stack (XRechnung / ZUGFeRD / Factur-X)
- Podman - daemonless container runtime
- Caddy - reverse proxy with automatic TLS
- CouchDB - document-oriented database
- Ansible Galaxy - role registry
Found this helpful?
Consider supporting via:
