Self-Hosting
The whole platform, on your infrastructure
Ploy is open source and the whole platform runs on your own infrastructure: the dashboard, the API, the builder, the runtime, databases, queues, and storage. Start with a single Docker container, or split services for production. The managed cloud runs the same code, so moving between them is not a rewrite.
Self-Host in Minutes
Start the Stack
One compose file brings up every service
$ git clone https://github.com/meetploy/ploy.git && cd ploy
$ cp .env.example .env
$ docker compose up -d
✔ Container ploy-postgres Healthy
✔ Container ploy-api Started
✔ Container ploy-builder Started
✔ Container ploy-handler Started
✔ Container ploy-ui StartedServices
The same components that run the managed cloud
| Service | Role | Port | Status |
|---|---|---|---|
| ui | Dashboard | 3002 | Healthy |
| api | Control plane | 4002 | Healthy |
| handler | Serves deployments | 4001 | Healthy |
| builder | Builds pushes | — | Healthy |
| worker | Background jobs | — | Healthy |
| postgres | Platform database | 5432 | Healthy |
Key Features
One Container to Start
A unified Docker image runs every service for testing and small deployments.
Split for Production
Run the API, builder, handler, and workers as separate services with Docker Compose.
Your Data Stays Yours
Code, environment variables, databases, and logs never leave infrastructure you control.
AGPLv3, Free Forever
No licence fee, no usage limits, and the same features as the managed cloud.
Quick Start
Clone the repository, set your environment, and start the stack.
git clone https://github.com/meetploy/ploy.git
cd ploy
cp .env.example .env
docker compose up -d
# Dashboard: http://localhost:3002