We ship a Chromium-based rendering daemon as a strictly-confined snap in production. Here's what that actually involves.
Most snap discussion is about desktop apps. We use it as the packaging format for a server-side service: a headless HTML→PDF rendering daemon written in Qt/C++ on QtWebEngine. The production story is different enough that I thought it was worth writing up. It's running on an Ubuntu VPS right now, powering https://kimidoc.com. Disclosure up front: it's our own product, so I'm not neutral about it.
One thing to say early so nobody goes looking: the snap isn't in the store yet. We install it on our own servers directly while we wait on a store review exception. More on that at the end.
It bundles a whole browser engine, so linking against the host's Qt was never viable. It had to be a bundled format. We picked snap over a container for a few reasons:
- `daemon: simple` gives you a real systemd unit. journald logging, normal restart semantics, no container runtime to install first.
- `snap revert` is one-command rollback with per-revision data. Biggest operational win by far, and it works on locally installed revisions too.
- Channels and delta updates are the part we're still waiting on. Push to candidate, promote to stable, existing installs pull a delta instead of the full payload. For a package this size that matters a lot, and it's the main reason we want to be in the store rather than shipping tarballs.
Confinement is strict, meaning AppArmor and seccomp with access via declared interfaces. The wrinkle is that Chromium wants to build its own sandbox from user namespaces, which collides with snapd's. `browser-support` with `allow-sandbox: true` resolves it, but that plug isn't auto-connectable and needs a store review exception.
That's the blocker. Our Snapcraft forum request for the exception is open and hasn't moved. On our own machines we just connect the interface by hand, which is fine for us and obviously not a distribution story.
So two questions, if anyone has been here: how long did a review exception like this take for you, and was there anything in how you wrote the request that helped? Also generally curious whether anyone else is running snaps as server services rather than desktop apps.
Posted Aug 8, 2026, 5:25 PM UTC