Sign inSign up

datapointsoftware/apiary

By datapointsoftware

•Updated about 3 hours ago

Highly available reverse proxy for Docker Swarm, with automatic Let's Encrypt certificates.

Image
Networking
API management
Web servers
0

477

datapointsoftware/apiary repository overview

⁠Apiary

A highly available reverse proxy for Docker Swarm⁠. Apiary routes HTTP, HTTPS, TCP and UDP traffic to Swarm services, gets and renews certificates from Let's Encrypt⁠ on its own, and is managed from a web admin interface. Its state is replicated across its own replicas, so there is no external database to run.

Status: in development. Versions before 1.0.0 (such as 1.0.0-alpha.1) are for trying out only. Anything may change between them, including how state is stored. Don't use them in production.

Source code, documentation and issues: github.com/datapoint-software/apiary⁠.

⁠Features

  • Built for Swarm. Deployed with a stack file, it reaches services by name over an overlay network.
  • High availability. It runs one replica per edge node and replicates its state with Raft, so losing a node drops no traffic and loses no certificates.
  • Automatic certificates with ACME, shared by every replica. You can also upload your own.
  • Routing: weighted targets, canaries, sticky sessions, redirects, allowlists, rate limits, maintenance windows, password-protected routes, and TCP and UDP stream routes with TLS passthrough.
  • Management: an admin UI with users, roles, an audit log, single sign-on with OpenID Connect, backups, and AI agents over MCP.
  • HTTP/3, on a non-root, read-only container.

⁠Tags

TagWhat it is
<version>, e.g. 1.0.0-alpha.1One version, never changed after it's published
latestThe newest final release. Pre-releases don't move it, and there is none yet

Every image is built for linux/amd64 and linux/arm64, and comes with build provenance and an SBOM.

Name a version when you deploy, so an upgrade happens only when you choose.

⁠Deploy

On a Swarm manager, create the root key, which encrypts everything Apiary stores:

(umask 077 && docker run --rm datapointsoftware/apiary:<version> secrets init > apiary_root_key_1)
docker secret create apiary_root_key_1 apiary_root_key_1

Keep a copy in your secret store, then delete the file. Then label the edge nodes and deploy the stack file⁠:

docker node update --label-add apiary.edge=true <node>
APIARY_VERSION=<version> docker stack deploy -c stack.yaml apiary

The deployment guide⁠ covers the steps in full, including ports, the admin network and the first administrator.

⁠Ports

PortWhat for
80/tcpHTTP, redirects to HTTPS, and Let's Encrypt's checks
443/tcp, 443/udpHTTPS and HTTP/3
9443/tcpThe admin UI and its API. Never expose it to the internet

⁠License

AGPL-3.0⁠, with additional terms in NOTICE⁠. Third-party notices are in /app/THIRD-PARTY-NOTICES.txt in the image.

Tag summary

Content type

Image

Digest

sha256:873190698…

Size

77.9 MB

Last updated

about 3 hours ago

docker pull datapointsoftware/apiary:1.0.0-beta.2