Skip to main content

dokploy

Manage Dokploy infrastructure: projects, applications, databases, domains, compose services, deployments, and servers via the Dokploy REST API. Use whenever the user mentions dokploy, deploying apps, managing servers, creating databases, adding domains, docker compose deployments, checking deployment status/logs, or any PaaS infrastructure management. Even if 'dokploy' isn't mentioned explicitly, trigger when the context involves their self-hosted deployment platform.

Informações da origem

Repositório
gilbarbara/skills
Última atividade na origem
2 de abril de 2026 às 23:49
Idioma detectado do SKILL.md
inglês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
8 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
dokploy
description
Manage Dokploy infrastructure: projects, applications, databases, domains, compose services, deployments, and servers via the Dokploy REST API. Use whenever the user mentions dokploy, deploying apps, managing servers, creating databases, adding domains, docker compose deployments, checking deployment status/logs, or any PaaS infrastructure management. Even if 'dokploy' isn't mentioned explicitly, trigger when the context involves their self-hosted deployment platform.
# Dokploy Infrastructure Management Dokploy is a self-hosted PaaS. All management happens through its REST API using curl. No CLI tools or bash scripts — construct curl commands directly. ## Authentication & Request Pattern **Environment variables** (must be set): - `DOKPLOY_API_URL` — base URL of the Dokploy instance (e.g., `https://dokploy.example.com`) - `DOKPLOY_API_KEY` — API token generated from Dokploy UI: Settings → Profile → API/CLI Section **All endpoints** follow the pattern: `$DOKPLOY_API_URL/api/{router}.{procedure}` ### GET request (reads) ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/{endpoint}?{param}={value}" ``` Parameters are flat query params. Do NOT use tRPC `?input=` encoding — it doesn't work on the OpenAPI surface. ### POST request (all mutations) ```bash curl -s -X POST \ -H "x-api-key: $DOKPLOY_API_KEY" \ -H "Content-Type: application/json" \ "$DOKPLOY_API_URL/api/{endpoint}" \ -d '{"param": "value"}' ``` Every mutation (create, update, remove, deploy, start, stop, reload) uses POST. Never use PUT, PATCH, or DELETE. Always pipe output through `jq` for readability: `| jq .` ### Response Formats Not all endpoints return JSON objects. Be aware of these patterns: - **`application.update`**, **`application.saveEnvironment`**, and other mutation endpoints may return a bare `true` instead of the updated object. Do not pipe these through `jq` with object filters — use `jq .` or skip `jq` entirely. - **`application.deploy`** returns empty output on success. - **GET endpoints** (`*.one`, `*.all`) return full JSON objects. - When in doubt, don't assume the response shape — capture raw output first. ## Critical: The Resource Hierarchy ``` Project └── Environment (default: "production") ├── Applications ├── Databases (postgres, mysql, mariadb, mongo, redis) └── Compose services ``` - Every project has at least one environment. The default is named "production" with `isDefault: true`. - **Creating any resource requires `environmentId`, NOT `projectId`.** - To get `environmentId`: fetch the project with `project.one`, then read `.environments[0].environmentId` (or find the environment by name). This is the most common source of errors. Always fetch the environment first. ## Quick Reference ### Projects & Environments | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | List all projects | `project.all` | GET | — | | Get project details | `project.one` | GET | `projectId` | | Create project | `project.create` | POST | `name`, `description` | | Update project | `project.update` | POST | `projectId`, `name`, `description` | | Delete project | `project.remove` | POST | `projectId` | ### Applications | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | Get app details | `application.one` | GET | `applicationId` | | Create app | `application.create` | POST | `name`, `environmentId` | | Update app | `application.update` | POST | `applicationId`, ... | | Delete app | `application.delete` | POST | `applicationId` | | Deploy app | `application.deploy` | POST | `applicationId` | | Start app | `application.start` | POST | `applicationId` | | Stop app | `application.stop` | POST | `applicationId` | | Redeploy app | `application.redeploy` | POST | `applicationId` | | Save env vars | `application.saveEnvironment` | POST | `applicationId`, `env`, `buildArgs`, `buildSecrets`, `createEnvFile` | | Set build type | `application.saveBuildType` | POST | `applicationId`, `buildType`, ... | ### Databases All database types share the same operation pattern. Replace `{type}` with: `postgres`, `mysql`, `mariadb`, `mongo`, `redis`. | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | Get DB details | `{type}.one` | GET | `{type}Id` | | Create DB | `{type}.create` | POST | `name`, `environmentId`, `databasePassword`, ... | | Delete DB | `{type}.remove` | POST | `{type}Id` | | Deploy DB | `{type}.deploy` | POST | `{type}Id` | | Start DB | `{type}.start` | POST | `{type}Id` | | Stop DB | `{type}.stop` | POST | `{type}Id` | Note: Each type uses its own ID field name: `postgresId`, `mysqlId`, `mariadbId`, `mongoId`, `redisId`. ### Domains | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | Get domain | `domain.one` | GET | `domainId` | | Domains for app | `domain.byApplicationId` | GET | `applicationId` | | Create domain | `domain.create` | POST | `host`, `applicationId`, `port` | | Update domain | `domain.update` | POST | `domainId`, `host`, ... | | Delete domain | `domain.delete` | POST | `domainId` | ### Compose | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | Get compose | `compose.one` | GET | `composeId` | | Create compose | `compose.create` | POST | `name`, `environmentId` | | Update compose | `compose.update` | POST | `composeId`, ... | | Delete compose | `compose.delete` | POST | `composeId`, `deleteVolumes` | | Deploy compose | `compose.deploy` | POST | `composeId` | | Start compose | `compose.start` | POST | `composeId` | | Stop compose | `compose.stop` | POST | `composeId` | | List services | `compose.loadServices` | GET | `composeId` | ### Deployments | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | List deployments | `deployment.all` | GET | `applicationId` | | By type | `deployment.allByType` | GET | `id`, `type` | `type` values: `application`, `compose`, `server`, `schedule`, `previewDeployment`, `backup`, `volumeBackup` ### Servers | Task | Endpoint | Method | Key Params | |------|----------|--------|------------| | List servers | `server.all` | GET | — | | Get server | `server.one` | GET | `serverId` | | Create server | `server.create` | POST | `name`, `ipAddress`, `port`, `username`, `sshKeyId` | | Delete server | `server.remove` | POST | `serverId` | ## Common Workflows ### List all projects with their resources ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/project.all" | jq . ``` The response includes nested environments with all applications, databases, and compose services summarized. ### Deploy an existing application ```bash curl -s -X POST \ -H "x-api-key: $DOKPLOY_API_KEY" \ -H "Content-Type: application/json" \ "$DOKPLOY_API_URL/api/application.deploy" \ -d '{"applicationId": "THE_APP_ID"}' | jq . ``` ### Create a new app in an existing project Step 1 — Get the project's environmentId: ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/project.one?projectId=PROJECT_ID" \ | jq '.environments[] | select(.isDefault) | .environmentId' ``` Step 2 — Create the application: ```bash curl -s -X POST \ -H "x-api-key: $DOKPLOY_API_KEY" \ -H "Content-Type: application/json" \ "$DOKPLOY_API_URL/api/application.create" \ -d '{"name": "my-app", "environmentId": "ENV_ID"}' | jq . ``` ### Create a full project from scratch Step 1 — Create the project: ```bash curl -s -X POST \ -H "x-api-key: $DOKPLOY_API_KEY" \ -H "Content-Type: application/json" \ "$DOKPLOY_API_URL/api/project.create" \ -d '{"name": "My Project", "description": "Project description"}' | jq . ``` Step 2 — Get the new project's environmentId from the response, or fetch it: ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/project.all" \ | jq '.[] | select(.name == "My Project") | .environments[0].environmentId' ``` Step 3 — Create resources using that environmentId (apps, databases, compose). ### Check deployment status For applications: ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/deployment.all?applicationId=APP_ID" | jq '.[0]' ``` For compose services: ```bash curl -s -H "x-api-key: $DOKPLOY_API_KEY" \ "$DOKPLOY_API_URL/api/deployment.allByType?id=COMPOSE_ID&type=compose" | jq '.[0]' ``` ### Set environment variables on an app Env vars are set as a single newline-separated string block, not key-value pairs. **Required fields**: `buildArgs`, `buildSecrets`, and `createEnvFile` are mandatory (use empty strings and `false` as defaults): ```bash curl -s -X POST \ -H "x-api-key: $DOKPLOY_API_KEY" \ -H "Content-Type: application/json" \ "$DOKPLOY_API_URL/api/application.saveEnvironment" \ -d '{ "applicationId": "APP_ID", "env": "DATABASE_URL=postgres://...\nREDIS_URL=redis://...\nNODE_ENV=production", "buildArgs": "", "buildSecrets": "", "createEnvFile": false }' ``` ## Important Notes - `project.all` returns a comprehensive overview — use it to discover IDs before drilling down. - Deployment is asynchronous. After triggering deploy, poll `deployment.all` or `deployment.allByType` to check status. - Destructive operations (`remove`, `delete`) cannot be undone. Always confirm with the user first. - The Swagger UI is available at `$DOKPLOY_API_URL/swagger` for interactive API exploration (admin only). ## Reference Files For full endpoint details with all parameters: | Need details about... | Read |
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub