From 852702429b41072048d0dabc716d17cb37c7c4aa Mon Sep 17 00:00:00 2001 From: Tanmay Pathak <71184799+tanmay-pathak@users.noreply.github.com> Date: Sun, 4 Jan 2026 15:23:07 -0600 Subject: [PATCH 01/10] docs: :memo: add info about rebuild preview deploys --- .../docs/core/applications/preview-deployments.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/docs/content/docs/core/applications/preview-deployments.mdx b/apps/docs/content/docs/core/applications/preview-deployments.mdx index 1c8a739..976878d 100644 --- a/apps/docs/content/docs/core/applications/preview-deployments.mdx +++ b/apps/docs/content/docs/core/applications/preview-deployments.mdx @@ -60,6 +60,7 @@ In this section, you can: - Check build and deployment logs - Monitor deployment updates - Update domain configuration +- Manually rebuild preview deployments ### Automatic Updates @@ -70,6 +71,16 @@ The preview deployment will automatically: This continuous preview system allows teams to review and test changes in isolation before merging to production. +### Manual Rebuilds + +You can manually rebuild a preview deployment without downloading new code from the repository. This is useful when you need to: + +- Rebuild with updated environment variables or build settings +- Retry a failed build without making code changes +- Apply configuration changes that require a rebuild + +To rebuild a preview deployment, click the **Rebuild** button (hammer icon) next to the deployment and confirm the action. The rebuild will use the existing code and only re-run the build process. + If you have security or redirects created in your application, it will inherit the same configuration for the preview deployment. From 77e2f95c236705ccc6102314ca8407d655d049c3 Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Tue, 27 Jan 2026 19:40:14 +0000 Subject: [PATCH 02/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@060a053fdbe0185ce45d28ade34589d3b176b178 Updated: 2026-01-27 19:40:14 UTC --- apps/docs/public/openapi.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json index 9902ce0..c3ccc2a 100644 --- a/apps/docs/public/openapi.json +++ b/apps/docs/public/openapi.json @@ -9384,9 +9384,6 @@ }, "currentPassword": { "type": "string" - }, - "name": { - "type": "string" } }, "additionalProperties": false From d703730020c6023d36a25416bc04f1ad6ef0454a Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Tue, 27 Jan 2026 19:41:41 +0000 Subject: [PATCH 03/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@d0ea8b5283750d9ad2af0a36b3f63009ad492754 Updated: 2026-01-27 19:41:41 UTC --- apps/docs/public/openapi.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json index c3ccc2a..ddabd38 100644 --- a/apps/docs/public/openapi.json +++ b/apps/docs/public/openapi.json @@ -12720,8 +12720,18 @@ ] }, "letsEncryptEmail": { - "type": "string", - "format": "email", + "anyOf": [ + { + "type": "string", + "format": "email" + }, + { + "type": "string", + "enum": [ + "" + ] + } + ], "nullable": true }, "https": { From 640b0de9c995b5d98d1d85f11cfe7ed3fa6a6a81 Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Tue, 27 Jan 2026 19:42:59 +0000 Subject: [PATCH 04/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@1e57d48ab4f80172032b5b68ce57328fb6ed2a0a Updated: 2026-01-27 19:42:59 UTC From 1a8a91181a5ef8ec3b718220f8614a94763a05c8 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Tue, 27 Jan 2026 14:08:44 -0600 Subject: [PATCH 05/10] docs: enhance installation and manual installation guides with advanced options and Docker Secrets - Added advanced installation options for specifying versions and custom network configurations in the installation documentation. - Updated the manual installation guide to include secure password generation for PostgreSQL using Docker Secrets. - Included Proxmox LXC considerations and emphasized the use of Docker Secrets for managing sensitive data. - Improved troubleshooting section with detailed steps for recreating services and managing environment variables. --- apps/docs/content/docs/core/installation.mdx | 58 ++++++++++++++ .../content/docs/core/manual-installation.mdx | 75 ++++++++++++++++--- .../content/docs/core/troubleshooting.mdx | 68 +++++++++++++---- apps/website/public/install.sh | 46 +++++++++++- 4 files changed, 219 insertions(+), 28 deletions(-) diff --git a/apps/docs/content/docs/core/installation.mdx b/apps/docs/content/docs/core/installation.mdx index 7123fed..bdabc3b 100644 --- a/apps/docs/content/docs/core/installation.mdx +++ b/apps/docs/content/docs/core/installation.mdx @@ -77,6 +77,64 @@ Dokploy utilizes Docker, so it is essential to have Docker installed on your ser curl -sSL https://dokploy.com/install.sh | sh ``` +### Advanced Installation Options + +The installation script automatically detects and installs the latest stable version from GitHub. However, you can customize the installation using environment variables: + +#### Install Specific Versions + +**Install Canary Version (Development):** +```bash +export DOKPLOY_VERSION=canary && curl -sSL https://dokploy.com/install.sh | sh +``` + +**Install Latest Stable:** +```bash +export DOKPLOY_VERSION=latest && curl -sSL https://dokploy.com/install.sh | sh +``` + +**Install Specific Version:** +```bash +export DOKPLOY_VERSION=v0.26.6 && curl -sSL https://dokploy.com/install.sh | sh +``` + +#### Custom Network Configuration + +If you need to customize the Docker Swarm network configuration (useful to avoid CIDR conflicts with cloud provider VPCs): + +```bash +export DOCKER_SWARM_INIT_ARGS="--default-addr-pool 172.20.0.0/16 --default-addr-pool-mask-length 24" +curl -sSL https://dokploy.com/install.sh | sh +``` + +#### Manual Advertise Address + +If the script cannot detect your server's IP automatically, specify it manually: + +```bash +export ADVERTISE_ADDR=192.168.1.100 +curl -sSL https://dokploy.com/install.sh | sh +``` + +### Proxmox LXC Support + + + The installation script automatically detects Proxmox LXC containers and applies the necessary configurations (`--endpoint-mode dnsrr`) for compatibility. + + +### Updating Dokploy + +To update your Dokploy installation to the latest version: + +```bash +curl -sSL https://dokploy.com/install.sh | sh -s update +``` + +**Update to Specific Version:** +```bash +export DOKPLOY_VERSION=v0.26.6 && curl -sSL https://dokploy.com/install.sh | sh -s update +``` + ## Completing the Setup After running the installation script, Dokploy and its dependencies will be set up on your server. Here's how to finalize the setup and start using Dokploy: diff --git a/apps/docs/content/docs/core/manual-installation.mdx b/apps/docs/content/docs/core/manual-installation.mdx index 40266d1..02e2929 100644 --- a/apps/docs/content/docs/core/manual-installation.mdx +++ b/apps/docs/content/docs/core/manual-installation.mdx @@ -3,7 +3,7 @@ title: 'Manual Installation' description: 'Learn how to manually install Dokploy on your server.' --- -If you wish to customize the Dokploy installation on your server, you can modify several enviroment variables: +If you wish to customize the Dokploy installation on your server, you can modify several environment variables: 1. **PORT** - Ideal for avoiding conflicts with other services. 2. **TRAEFIK_SSL_PORT** - Set to another port if you want to use a different port for SSL. @@ -134,13 +134,22 @@ install_dokploy() { chmod 777 /etc/dokploy + # Generate secure random password for Postgres + POSTGRES_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32) + + # Store password as Docker Secret (encrypted and secure) + echo "$POSTGRES_PASSWORD" | docker secret create dokploy_postgres_password - 2>/dev/null || true + + echo "Generated secure database credentials (stored in Docker Secrets)" + docker service create \ --name dokploy-postgres \ --constraint 'node.role==manager' \ --network dokploy-network \ --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ - --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ + --env POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 @@ -151,9 +160,6 @@ install_dokploy() { --mount type=volume,source=dokploy-redis,target=/data \ redis:7 - docker pull traefik:v3.6.1 - docker pull dokploy/dokploy:latest - # Installation docker service create \ --name dokploy \ @@ -162,11 +168,13 @@ install_dokploy() { --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ --mount type=volume,source=dokploy,target=/root/.docker \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ --constraint 'node.role == manager' \ -e ADVERTISE_ADDR=$advertise_addr \ + -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ dokploy/dokploy:latest @@ -258,6 +266,23 @@ To customize the --advertise-addr parameter, replace the line: `advertise_addr=$ :warning: This IP address should be accessible to all nodes that will join the Swarm. +## Proxmox LXC Considerations + +If you're installing Dokploy in a Proxmox LXC container, the installation script automatically detects the environment and adds `--endpoint-mode dnsrr` to Docker services for compatibility. + +For manual installations in LXC, add this flag to your service creation commands: + +```bash +docker service create \ + --name dokploy-postgres \ + --endpoint-mode dnsrr \ + # ... rest of the configuration +``` + + + **Note:** The `--endpoint-mode dnsrr` flag is required for Docker services to work properly in Proxmox LXC containers due to networking limitations. + + ## Existing Docker swarm If you already have a Docker swarm running on your server and you want to use dokploy, you can use the following command to join it: @@ -303,17 +328,47 @@ To upgrade Dokploy manually, you can use the following command: curl -sSL https://dokploy.com/install.sh | sh -s update ``` -To use a specific version, you can use the following command: +### Version-Specific Installation & Updates +The installation script automatically detects the latest stable version from GitHub. You can also specify a particular version: + +**Install/Update to Canary (Development):** ```bash export DOKPLOY_VERSION=canary && curl -sSL https://dokploy.com/install.sh | sh -export DOKPLOY_VERSION=feature && curl -sSL https://dokploy.com/install.sh | sh -curl -sSL https://dokploy.com/install.sh | sh (defaults to latest) ``` -Alternatively, you can use `bash -s`: +**Install/Update to Latest Stable:** +```bash +export DOKPLOY_VERSION=latest && curl -sSL https://dokploy.com/install.sh | sh +``` + +**Install/Update to Specific Version:** +```bash +export DOKPLOY_VERSION=v0.26.6 && curl -sSL https://dokploy.com/install.sh | sh +``` + +**Auto-detect Latest Stable (Default):** +```bash +curl -sSL https://dokploy.com/install.sh | sh +``` + +Alternatively, you can use `bash -s` for inline version specification: ```bash DOKPLOY_VERSION=canary bash -s < <(curl -sSL https://dokploy.com/install.sh) -DOKPLOY_VERSION=feature bash -s < <(curl -sSL https://dokploy.com/install.sh) +DOKPLOY_VERSION=v0.26.6 bash -s < <(curl -sSL https://dokploy.com/install.sh) +``` + +### Additional Environment Variables + +**Custom Docker Swarm Network Configuration:** +```bash +export DOCKER_SWARM_INIT_ARGS="--default-addr-pool 172.20.0.0/16 --default-addr-pool-mask-length 24" +curl -sSL https://dokploy.com/install.sh | sh +``` + +**Manual Advertise Address:** +```bash +export ADVERTISE_ADDR=192.168.1.100 +curl -sSL https://dokploy.com/install.sh | sh ``` diff --git a/apps/docs/content/docs/core/troubleshooting.mdx b/apps/docs/content/docs/core/troubleshooting.mdx index a3564ca..830a457 100644 --- a/apps/docs/content/docs/core/troubleshooting.mdx +++ b/apps/docs/content/docs/core/troubleshooting.mdx @@ -460,13 +460,18 @@ You should now be able to access the user interface. In the case you want to recreate the dokploy services, you can do the following: + + **Important:** Before recreating services, make sure you have backups of your data. Recreating services will not delete your volumes, but it's always good to have backups. + -Remove the dokploy-redis service: +### Recreate Redis Service + +Remove and recreate the dokploy-redis service: ```bash docker service rm dokploy-redis # Create a new dokploy-redis service - docker service create \ +docker service create \ --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ @@ -479,18 +484,23 @@ Remove the dokploy-postgres service: ```bash docker service rm dokploy-postgres -# Create a new dokploy-postgres service - docker service create \ +# Create a new dokploy-postgres service with Docker Secrets +docker service create \ --name dokploy-postgres \ --constraint 'node.role==manager' \ --network dokploy-network \ --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ - --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ + --env POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 ``` + + **Note:** Using Docker Secrets is the recommended approach for managing sensitive data like passwords. The secret is encrypted and only available to services that have been granted access to it. + + Remove the dokploy-traefik service: @@ -528,21 +538,24 @@ docker service create \ traefik:v3.6.1 ``` -Remove the dokploy service: +### Recreate Dokploy Service + +First, get the private IP of your server for the ADVERTISE_ADDR: + +```bash +# Get the private IP of your server +ip addr show | grep -E "inet (192\.168\.|10\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.)" | head -n1 | awk '{print $2}' | cut -d/ -f1 +``` + +Copy the IP address from the output and use it in the command below. + +Remove and recreate the dokploy service: ```bash docker service rm dokploy -# Create a new dokploy service - -# We need the advertise address to be set which is the Private IP of your server, you can get it by running the following command: - -# Run this command to get the private IP of your server: - -# Copy this value and paste in the ADVERTISE_ADDR variable: -ip addr show | grep -E "inet (192\.168\.|10\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[0-1]\.)" | head -n1 | awk '{print $2}' | cut -d/ -f1 - # Create the dokploy service +# Replace with the IP you got from the command above docker service create \ --name dokploy \ --replicas 1 \ @@ -550,11 +563,34 @@ docker service create \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ --mount type=volume,source=dokploy,target=/root/.docker \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ --constraint 'node.role == manager' \ - -e ADVERTISE_ADDR="Eg: 192.168.1.100" \ + -e ADVERTISE_ADDR= \ + -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ + dokploy/dokploy:latest +``` + +**For Proxmox LXC environments**, add the `--endpoint-mode dnsrr` flag to all services: + +```bash +docker service create \ + --name dokploy \ + --replicas 1 \ + --network dokploy-network \ + --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ + --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ + --mount type=volume,source=dokploy,target=/root/.docker \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ + --publish published=3000,target=3000,mode=host \ + --update-parallelism 1 \ + --update-order stop-first \ + --constraint 'node.role == manager' \ + --endpoint-mode dnsrr \ + -e ADVERTISE_ADDR= \ + -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ dokploy/dokploy:latest ``` diff --git a/apps/website/public/install.sh b/apps/website/public/install.sh index d143bfd..21e7466 100644 --- a/apps/website/public/install.sh +++ b/apps/website/public/install.sh @@ -47,6 +47,37 @@ is_proxmox_lxc() { return 1 # Not LXC } +generate_random_password() { + # Generate a secure random password using multiple methods with fallbacks + local password="" + + # Try using openssl (most reliable, available on most systems) + if command -v openssl >/dev/null 2>&1; then + password=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32) + # Fallback to /dev/urandom with tr (most Linux systems) + elif [ -r /dev/urandom ]; then + password=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32) + # Last resort fallback using date and simple hashing + else + if command -v sha256sum >/dev/null 2>&1; then + password=$(date +%s%N | sha256sum | base64 | head -c 32) + elif command -v shasum >/dev/null 2>&1; then + password=$(date +%s%N | shasum -a 256 | base64 | head -c 32) + else + # Very basic fallback - combines multiple sources of entropy + password=$(echo "$(date +%s%N)-$(hostname)-$$-$RANDOM" | base64 | tr -d "=+/" | head -c 32) + fi + fi + + # Ensure we got a password of correct length + if [ -z "$password" ] || [ ${#password} -lt 20 ]; then + echo "Error: Failed to generate random password" >&2 + exit 1 + fi + + echo "$password" +} + install_dokploy() { # Detect version tag VERSION_TAG=$(detect_version) @@ -199,13 +230,22 @@ install_dokploy() { chmod 777 /etc/dokploy + # Generate secure random password for Postgres + POSTGRES_PASSWORD=$(generate_random_password) + + # Store password as Docker Secret (encrypted and secure) + echo "$POSTGRES_PASSWORD" | docker secret create dokploy_postgres_password - 2>/dev/null || true + + echo "Generated secure database credentials (stored in Docker Secrets)" + docker service create \ --name dokploy-postgres \ --constraint 'node.role==manager' \ --network dokploy-network \ --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ - --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ + --env POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ $endpoint_mode \ postgres:16 @@ -232,6 +272,7 @@ install_dokploy() { --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ --mount type=volume,source=dokploy,target=/root/.docker \ + --secret source=dokploy_postgres_password,target=/run/secrets/postgres_password \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ @@ -239,6 +280,7 @@ install_dokploy() { $endpoint_mode \ $release_tag_env \ -e ADVERTISE_ADDR=$advertise_addr \ + -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \ $DOCKER_IMAGE sleep 4 @@ -315,4 +357,4 @@ if [ "$1" = "update" ]; then update_dokploy else install_dokploy -fi +fi \ No newline at end of file From 6ec1508038cc535a994bd75dc5780ebbb50e248c Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Wed, 28 Jan 2026 03:17:09 +0000 Subject: [PATCH 06/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@4e8cdfbc80702e392a00a1db7f61166933809cff Updated: 2026-01-28 03:17:09 UTC --- apps/docs/public/openapi.json | 260 ++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json index ddabd38..7c2ed59 100644 --- a/apps/docs/public/openapi.json +++ b/apps/docs/public/openapi.json @@ -17031,6 +17031,266 @@ } } }, + "/notification.createPushover": { + "post": { + "operationId": "notification-createPushover", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "volumeBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "serverThreshold": { + "type": "boolean" + }, + "userKey": { + "type": "string", + "minLength": 1 + }, + "apiToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": -2, + "maximum": 2, + "default": 0 + }, + "retry": { + "type": "number", + "minimum": 30, + "nullable": true + }, + "expire": { + "type": "number", + "minimum": 1, + "maximum": 10800, + "nullable": true + } + }, + "required": [ + "name", + "userKey", + "apiToken" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.updatePushover": { + "post": { + "operationId": "notification-updatePushover", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "notificationId": { + "type": "string", + "minLength": 1 + }, + "pushoverId": { + "type": "string", + "minLength": 1 + }, + "organizationId": { + "type": "string" + }, + "userKey": { + "type": "string", + "minLength": 1 + }, + "apiToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": -2, + "maximum": 2 + }, + "retry": { + "type": "number", + "minimum": 30, + "nullable": true + }, + "expire": { + "type": "number", + "minimum": 1, + "maximum": 10800, + "nullable": true + }, + "appBuildError": { + "type": "boolean" + }, + "databaseBackup": { + "type": "boolean" + }, + "volumeBackup": { + "type": "boolean" + }, + "dokployRestart": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "appDeploy": { + "type": "boolean" + }, + "dockerCleanup": { + "type": "boolean" + }, + "serverThreshold": { + "type": "boolean" + } + }, + "required": [ + "notificationId", + "pushoverId" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, + "/notification.testPushoverConnection": { + "post": { + "operationId": "notification-testPushoverConnection", + "tags": [ + "notification" + ], + "security": [ + { + "Authorization": [] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "userKey": { + "type": "string", + "minLength": 1 + }, + "apiToken": { + "type": "string", + "minLength": 1 + }, + "priority": { + "type": "number", + "minimum": -2, + "maximum": 2 + }, + "retry": { + "type": "number", + "minimum": 30, + "nullable": true + }, + "expire": { + "type": "number", + "minimum": 1, + "maximum": 10800, + "nullable": true + } + }, + "required": [ + "userKey", + "apiToken", + "priority" + ], + "additionalProperties": false + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": {} + } + }, + "default": { + "$ref": "#/components/responses/error" + } + } + } + }, "/notification.getEmailProviders": { "get": { "operationId": "notification-getEmailProviders", From 6652c965194d935b3ac1bf0ae18d08f1cb83f917 Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Wed, 28 Jan 2026 03:19:24 +0000 Subject: [PATCH 07/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@5c89973cc2fa566a246d8ece339548b97c34627a Updated: 2026-01-28 03:19:24 UTC --- apps/docs/public/openapi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json index 7c2ed59..b7b4d64 100644 --- a/apps/docs/public/openapi.json +++ b/apps/docs/public/openapi.json @@ -3911,7 +3911,7 @@ }, "dockerImage": { "type": "string", - "default": "postgres:15" + "default": "postgres:18" }, "environmentId": { "type": "string" @@ -4408,7 +4408,7 @@ }, "dockerImage": { "type": "string", - "default": "postgres:15" + "default": "postgres:18" }, "command": { "type": "string", From e532c9837029338e159a8a1e136a8921b593007e Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Wed, 28 Jan 2026 03:47:53 +0000 Subject: [PATCH 08/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@ec6849205a768762bed6f8f9b8df26146162b6da Updated: 2026-01-28 03:47:53 UTC From 29162b8c19e4d299e6798fa636f09c26d5cb452e Mon Sep 17 00:00:00 2001 From: Dokploy Bot Date: Wed, 28 Jan 2026 06:14:55 +0000 Subject: [PATCH 09/10] chore: sync OpenAPI specification [skip ci] Source: Dokploy/dokploy@b9419ed5f1a8f86c1193fdc7fb2ce9b1db73a0f2 Updated: 2026-01-28 06:14:55 UTC --- apps/docs/public/openapi.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/docs/public/openapi.json b/apps/docs/public/openapi.json index b7b4d64..abc2a1e 100644 --- a/apps/docs/public/openapi.json +++ b/apps/docs/public/openapi.json @@ -1477,6 +1477,10 @@ "type": "string", "nullable": true }, + "bitbucketRepositorySlug": { + "type": "string", + "nullable": true + }, "bitbucketId": { "type": "string", "nullable": true @@ -1500,6 +1504,7 @@ "bitbucketBuildPath", "bitbucketOwner", "bitbucketRepository", + "bitbucketRepositorySlug", "bitbucketId", "applicationId", "enableSubmodules" @@ -2067,6 +2072,10 @@ "type": "string", "nullable": true }, + "bitbucketRepositorySlug": { + "type": "string", + "nullable": true + }, "bitbucketOwner": { "type": "string", "nullable": true @@ -7961,6 +7970,10 @@ "type": "string", "nullable": true }, + "bitbucketRepositorySlug": { + "type": "string", + "nullable": true + }, "bitbucketOwner": { "type": "string", "nullable": true From a17065863a1385ef91003abd985909f86900e333 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Wed, 28 Jan 2026 00:18:04 -0600 Subject: [PATCH 10/10] chore: update Traefik version in installation scripts - Updated Traefik version from v3.6.1 to v3.6.7 in both manual installation documentation and install script. https://github.com/Dokploy/dokploy/issues/3491 --- apps/docs/content/docs/core/manual-installation.mdx | 4 ++-- apps/docs/content/docs/core/troubleshooting.mdx | 4 ++-- apps/website/public/install.sh | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/docs/content/docs/core/manual-installation.mdx b/apps/docs/content/docs/core/manual-installation.mdx index 02e2929..5f68abc 100644 --- a/apps/docs/content/docs/core/manual-installation.mdx +++ b/apps/docs/content/docs/core/manual-installation.mdx @@ -187,7 +187,7 @@ install_dokploy() { -p 80:80/tcp \ -p 443:443/tcp \ -p 443:443/udp \ - traefik:v3.6.1 + traefik:v3.6.7 docker network connect dokploy-network dokploy-traefik @@ -203,7 +203,7 @@ install_dokploy() { # --publish mode=host,published=443,target=443 \ # --publish mode=host,published=80,target=80 \ # --publish mode=host,published=443,target=443,protocol=udp \ - # traefik:v3.6.1 + # traefik:v3.6.7 GREEN="\033[0;32m" YELLOW="\033[1;33m" diff --git a/apps/docs/content/docs/core/troubleshooting.mdx b/apps/docs/content/docs/core/troubleshooting.mdx index 830a457..1b662d3 100644 --- a/apps/docs/content/docs/core/troubleshooting.mdx +++ b/apps/docs/content/docs/core/troubleshooting.mdx @@ -517,7 +517,7 @@ docker run -d \ -p 80:80/tcp \ -p 443:443/tcp \ -p 443:443/udp \ - traefik:v3.6.1 + traefik:v3.6.7 docker network connect dokploy-network dokploy-traefik @@ -535,7 +535,7 @@ docker service create \ --publish mode=host,published=443,target=443 \ --publish mode=host,published=80,target=80 \ --publish mode=host,published=443,target=443,protocol=udp \ - traefik:v3.6.1 + traefik:v3.6.7 ``` ### Recreate Dokploy Service diff --git a/apps/website/public/install.sh b/apps/website/public/install.sh index 21e7466..6624c16 100644 --- a/apps/website/public/install.sh +++ b/apps/website/public/install.sh @@ -294,7 +294,7 @@ install_dokploy() { -p 80:80/tcp \ -p 443:443/tcp \ -p 443:443/udp \ - traefik:v3.6.1 + traefik:v3.6.7 docker network connect dokploy-network dokploy-traefik @@ -310,7 +310,7 @@ install_dokploy() { # --publish mode=host,published=443,target=443 \ # --publish mode=host,published=80,target=80 \ # --publish mode=host,published=443,target=443,protocol=udp \ - # traefik:v3.6.1 + # traefik:v3.6.7 GREEN="\033[0;32m" YELLOW="\033[1;33m"