Private, end-to-end-encrypted messenger & calling app โ self-hostable PWA + Go backend (AGPL).
6.2K
A private, end-to-end-encrypted messenger and calling app โ shipped as one small, stateless container that serves an installable PWA and its Go backend. The server only ever relays sealed envelopes and stores opaque ciphertext: it never sees message bodies, contacts, profiles, or media.
export PUBLIC_URL=https://ring.example.com
export POSTGRES_PASSWORD=$(openssl rand -hex 16)
export SECRETS_KEY=$(openssl rand -hex 32) # keep this stable + backed up
docker compose up -d
Then grab the first-run invite code:
docker compose logs ring | grep FIRST-RUN
The container is stateless โ on first boot it generates its own secrets (VAPID,
token-signing, TURN) and stores them encrypted in Postgres under SECRETS_KEY, so
only the database needs a volume. Full compose file, TLS/calling scenarios, configuration,
and backups: see the GitHub repositoryโ .
| Tag | What it is |
|---|---|
latest, X.Y.Z, X.Y | Production releases. |
X.Y.Z-rc.N | Immutable release candidates (never moves latest). |
develop, develop-<sha> | Rolling development build. |
Images are multi-arch (linux/amd64, linux/arm64). The canonical registry is
ghcr.io/zuptalo/ring; this Docker Hub repo mirrors the same tags.
Ring is free and open-source, with no paywall. If it's useful to you, you can chip in whatever you think it's worth: Ko-fiโ ยท Liberapayโ ยท GitHub Sponsorsโ .
AGPL-3.0-onlyโ . ยฉ 2026 Zuptalo.
Content type
Image
Digest
sha256:c60252603โฆ
Size
37.5 MB
Last updated
about 1 hour ago
docker pull zuptalo/ring