Please add support for deploying Umami on podman
Describe the feature or enhancement
The Umami project currently provides a docker-compose.yml file for easy deployment using Docker. However, there is no equivalent podman-compose.yml file for deploying Umami on Podman, a popular container runtime that is gaining traction as a Docker alternative
Podman offers several advantages, such as rootless containers by default, better integration with systemd. Podman is rapidly gaining popularity in the container ecosystem due to its security-focused design (rootless operation), lightweight architecture, and compatibility with Kubernetes workflows. Many organizations and developers are adopting Podman as a replacement for Docker.
A dedicated podman-compose.yml file and systemd service definitionswould ensure seamless deployment for users who prefer Podman.
I have proposed a pull request implementing this feature:
https://github.com/umami-software/umami/pull/3360
Please consider merging.
Thanks.
It appears it got considered, your PR has been merged 👍
Did you encounter any issues with the provided docker-compose.yml?
Podman-compose is especially designed to read docker-compose files, so it should be enough to have a running podman setup. I didn't have any problem on my tests.
Perhaps a pod definition in a kubernetes YAML format would be more appropriate if a new file has to be added. Systemd integration would still be possible and managed by podman with a .kube quadlet.
I've been running Umami successfully with Podman using Quadlet (systemd container definitions) rather than podman-compose. The Podman team actually recommends Quadlet over compose for production deployments.
Here's a simplified example of my setup:
# ~/.config/containers/systemd/postgres.container
[Container]
ContainerName=postgres
Image=docker.io/postgres:15-alpine
PublishPort=5432:5432
Volume=/var/lib/postgresql/data:/var/lib/postgresql/data:z
Environment=POSTGRES_DB=umami
Environment=POSTGRES_USER=username
Environment=POSTGRES_PASSWORD=password
[Service]
Restart=on-failure
[Install]
WantedBy=default.target
# ~/.config/containers/systemd/umami.container
[Container]
ContainerName=umami
Image=docker.umami.is/umami-software/umami:postgresql-latest
PublishPort=3000:3000
Environment=DATABASE_URL=postgresql://username:password@localhost:5432/umami
Environment=DATABASE_TYPE=postgresql
Environment=APP_SECRET=your_secret_here
Environment=HASH_SALT=your_salt_here
[Service]
Restart=on-failure
[Install]
WantedBy=default.target
Start with:
systemctl --user daemon-reload && systemctl --user start postgres umami
This approach provides better systemd integration, which is one of Podman's strengths over Docker. No need for a special podman-compose file when Quadlet gives you native systemd integration.
@yosbeda Can you submit a PR?
@mikecao Thanks for considering this. Unfortunately, I don't have experience with GitHub PRs or git workflows. I just shared my working Quadlet configuration as a user of Umami with Podman, hoping it might help others.
Agree with yosbeda, Podman team isn't focused on Compose support and actually doesn't directly maintain it. Quadlet is probably the best way to go for systemd integration.
@mikecao I can submit a PR if wanted. (Most likely in about a week, cause I'd have to properly test systemd integration)
With what I mentioned earlier, you can quickly put up Umami in a single command, and you can leverage their systemd integration with quadlet.
All that while following podman supported practices.
It's just one way among others, but probably the most simple.
This issue is stale because it has been open for 60 days with no activity.
This issue was closed because it has been inactive for 7 days since being marked as stale.