ApikeeApikeeDocs
Getting started

Self-host Apikee

Deploy the Apikee API management platform with Docker Compose, the installer, or your own orchestrator. Configure services and persistent storage.

The platform is one container plus three backing services. There is no licence check and no phone-home — an instance with no internet access works fine.

ServiceUsed for
ApikeeThe web app and REST API
PostgreSQLProjects, clients, keys, endpoints
MongoDBRequest logs
MinIOGenerated OpenAPI documents

Docker Compose

git clone https://github.com/apikee-dev/apikee
cd apikee
cp .env.example .env

Fill in five values — everything else has a working default:

APIKEE_SECRET=        # openssl rand -hex 32
POSTGRES_PASSWORD=
MONGO_PASSWORD=
MINIO_SECRET_KEY=
APP_URL=https://apikee.example.com
docker compose up -d

The app comes up on port 4321 (override with PORT) and walks you through first-run setup on first visit. Migrations run automatically at startup under a Postgres advisory lock, so multiple replicas can boot at once safely.

One-line installer

For a fresh VM. Installs Docker, fetches the compose stack, generates secrets, and starts everything.

curl -fsSL https://get.apikee.com/setup.sh | sudo bash

Supports Ubuntu 20.04+, Debian 11+, RHEL 8+, Rocky/Alma 8+ and Fedora 38+.

Piping a script to sudo bash runs it with root privileges. Read it first if that matters to you — it is the same compose stack, scripted.

Managed platforms

Dokploy, Coolify, CapRover and similar can consume docker-compose.yml directly through their Git integration. Set the environment variables in the platform UI; internal service URLs are wired for you. No local .env needed.

Kubernetes and Swarm

Manifests live in deploy/ in the platform repository.

Choosing an image

APIKEE_IMAGE=ghcr.io/apikee-dev/platform:latest   # stable releases (default)
APIKEE_IMAGE=ghcr.io/apikee-dev/platform:dev      # latest pre-release build
APIKEE_IMAGE=ghcr.io/apikee-dev/platform:1.2.3    # pinned

Pin a version for production so a redeploy never silently upgrades you.

Upgrading

Table and column names match the database exactly, so an existing install upgrades in place with no data migration step:

docker compose pull
docker compose up -d

Production checklist

  • Terminate TLS in front of the container and set APP_URL to the public HTTPS address — OAuth callbacks and generated links are built from it.
  • Close the MinIO console. docker-compose.yml publishes port 9001 for convenience. Remove that mapping, or firewall it.
  • Back up PostgreSQL. It holds clients, keys and endpoints. MongoDB holds logs and MinIO holds regenerable documents — both are less critical.
  • Keep APIKEE_SECRET stable. Rotating it invalidates every key signed with it. The SDKs accept an array of secrets so you can rotate gradually: add the new one first, re-issue keys, then drop the old.
  • Size the connection pool. Keep DATABASE_POOL_MAX × replicas below Postgres's max_connections.

Next

On this page