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"