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.
| Service | Used for |
|---|---|
| Apikee | The web app and REST API |
| PostgreSQL | Projects, clients, keys, endpoints |
| MongoDB | Request logs |
| MinIO | Generated OpenAPI documents |
Docker Compose
git clone https://github.com/apikee-dev/apikee
cd apikee
cp .env.example .envFill 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.comdocker compose up -dThe 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 bashSupports 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 # pinnedPin 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 -dProduction checklist
- Terminate TLS in front of the container and set
APP_URLto the public HTTPS address — OAuth callbacks and generated links are built from it. - Close the MinIO console.
docker-compose.ymlpublishes port9001for 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_SECRETstable. 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'smax_connections.
Next
API key authentication quickstart
Issue your first Apikee API key and protect an endpoint with Python, Node.js, Java, or .NET. Get started locally without running the platform.
Platform configuration
Configure the Apikee platform with environment variables for databases, storage, authentication, email, and AI integrations.

