mirror of
https://github.com/Dokploy/website.git
synced 2026-07-22 06:15:26 +02:00
Merge branch 'main' into main
This commit is contained in:
@@ -78,6 +78,15 @@ _openapi:
|
||||
- depth: 2
|
||||
title: Notification test Lark Connection
|
||||
url: '#notification-test-lark-connection'
|
||||
- depth: 2
|
||||
title: Notification create Pushover
|
||||
url: '#notification-create-pushover'
|
||||
- depth: 2
|
||||
title: Notification update Pushover
|
||||
url: '#notification-update-pushover'
|
||||
- depth: 2
|
||||
title: Notification test Pushover Connection
|
||||
url: '#notification-test-pushover-connection'
|
||||
- depth: 2
|
||||
title: Notification get Email Providers
|
||||
url: '#notification-get-email-providers'
|
||||
@@ -133,9 +142,15 @@ _openapi:
|
||||
id: notification-update-lark
|
||||
- content: Notification test Lark Connection
|
||||
id: notification-test-lark-connection
|
||||
- content: Notification create Pushover
|
||||
id: notification-create-pushover
|
||||
- content: Notification update Pushover
|
||||
id: notification-update-pushover
|
||||
- content: Notification test Pushover Connection
|
||||
id: notification-test-pushover-connection
|
||||
- content: Notification get Email Providers
|
||||
id: notification-get-email-providers
|
||||
contents: []
|
||||
---
|
||||
|
||||
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/notification.createSlack"},{"method":"post","path":"/notification.updateSlack"},{"method":"post","path":"/notification.testSlackConnection"},{"method":"post","path":"/notification.createTelegram"},{"method":"post","path":"/notification.updateTelegram"},{"method":"post","path":"/notification.testTelegramConnection"},{"method":"post","path":"/notification.createDiscord"},{"method":"post","path":"/notification.updateDiscord"},{"method":"post","path":"/notification.testDiscordConnection"},{"method":"post","path":"/notification.createEmail"},{"method":"post","path":"/notification.updateEmail"},{"method":"post","path":"/notification.testEmailConnection"},{"method":"post","path":"/notification.remove"},{"method":"get","path":"/notification.one"},{"method":"get","path":"/notification.all"},{"method":"post","path":"/notification.receiveNotification"},{"method":"post","path":"/notification.createGotify"},{"method":"post","path":"/notification.updateGotify"},{"method":"post","path":"/notification.testGotifyConnection"},{"method":"post","path":"/notification.createNtfy"},{"method":"post","path":"/notification.updateNtfy"},{"method":"post","path":"/notification.testNtfyConnection"},{"method":"post","path":"/notification.createLark"},{"method":"post","path":"/notification.updateLark"},{"method":"post","path":"/notification.testLarkConnection"},{"method":"get","path":"/notification.getEmailProviders"}]} hasHead={true} />
|
||||
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/notification.createSlack"},{"method":"post","path":"/notification.updateSlack"},{"method":"post","path":"/notification.testSlackConnection"},{"method":"post","path":"/notification.createTelegram"},{"method":"post","path":"/notification.updateTelegram"},{"method":"post","path":"/notification.testTelegramConnection"},{"method":"post","path":"/notification.createDiscord"},{"method":"post","path":"/notification.updateDiscord"},{"method":"post","path":"/notification.testDiscordConnection"},{"method":"post","path":"/notification.createEmail"},{"method":"post","path":"/notification.updateEmail"},{"method":"post","path":"/notification.testEmailConnection"},{"method":"post","path":"/notification.remove"},{"method":"get","path":"/notification.one"},{"method":"get","path":"/notification.all"},{"method":"post","path":"/notification.receiveNotification"},{"method":"post","path":"/notification.createGotify"},{"method":"post","path":"/notification.updateGotify"},{"method":"post","path":"/notification.testGotifyConnection"},{"method":"post","path":"/notification.createNtfy"},{"method":"post","path":"/notification.updateNtfy"},{"method":"post","path":"/notification.testNtfyConnection"},{"method":"post","path":"/notification.createLark"},{"method":"post","path":"/notification.updateLark"},{"method":"post","path":"/notification.testLarkConnection"},{"method":"post","path":"/notification.createPushover"},{"method":"post","path":"/notification.updatePushover"},{"method":"post","path":"/notification.testPushoverConnection"},{"method":"get","path":"/notification.getEmailProviders"}]} hasHead={true} />
|
||||
@@ -21,6 +21,9 @@ _openapi:
|
||||
- depth: 2
|
||||
title: Registry test Registry
|
||||
url: '#registry-test-registry'
|
||||
- depth: 2
|
||||
title: Registry test Registry By Id
|
||||
url: '#registry-test-registry-by-id'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Registry create
|
||||
@@ -35,9 +38,11 @@ _openapi:
|
||||
id: registry-one
|
||||
- content: Registry test Registry
|
||||
id: registry-test-registry
|
||||
- content: Registry test Registry By Id
|
||||
id: registry-test-registry-by-id
|
||||
contents: []
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./public/openapi.json"} webhooks={[]} operations={[{"path":"/registry.create","method":"post"},{"path":"/registry.remove","method":"post"},{"path":"/registry.update","method":"post"},{"path":"/registry.all","method":"get"},{"path":"/registry.one","method":"get"},{"path":"/registry.testRegistry","method":"post"}]} showTitle={true} />
|
||||
<APIPage document={"./public/openapi.json"} webhooks={[]} operations={[{"path":"/registry.create","method":"post"},{"path":"/registry.remove","method":"post"},{"path":"/registry.update","method":"post"},{"path":"/registry.all","method":"get"},{"path":"/registry.one","method":"get"},{"path":"/registry.testRegistry","method":"post"},{"path":"/registry.testRegistryById","method":"post"}]} showTitle={true} />
|
||||
@@ -3,6 +3,9 @@ title: Settings
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Settings get Web Server Settings
|
||||
url: '#settings-get-web-server-settings'
|
||||
- depth: 2
|
||||
title: Settings reload Server
|
||||
url: '#settings-reload-server'
|
||||
@@ -93,6 +96,9 @@ _openapi:
|
||||
- depth: 2
|
||||
title: Settings get Ip
|
||||
url: '#settings-get-ip'
|
||||
- depth: 2
|
||||
title: Settings update Server Ip
|
||||
url: '#settings-update-server-ip'
|
||||
- depth: 2
|
||||
title: Settings get Open Api Document
|
||||
url: '#settings-get-open-api-document'
|
||||
@@ -143,6 +149,8 @@ _openapi:
|
||||
url: '#settings-get-dokploy-cloud-ips'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Settings get Web Server Settings
|
||||
id: settings-get-web-server-settings
|
||||
- content: Settings reload Server
|
||||
id: settings-reload-server
|
||||
- content: Settings clean Redis
|
||||
@@ -203,6 +211,8 @@ _openapi:
|
||||
id: settings-read-traefik-file
|
||||
- content: Settings get Ip
|
||||
id: settings-get-ip
|
||||
- content: Settings update Server Ip
|
||||
id: settings-update-server-ip
|
||||
- content: Settings get Open Api Document
|
||||
id: settings-get-open-api-document
|
||||
- content: Settings read Traefik Env
|
||||
@@ -240,4 +250,4 @@ _openapi:
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./public/openapi.json"} webhooks={[]} operations={[{"path":"/settings.reloadServer","method":"post"},{"path":"/settings.cleanRedis","method":"post"},{"path":"/settings.reloadRedis","method":"post"},{"path":"/settings.reloadTraefik","method":"post"},{"path":"/settings.toggleDashboard","method":"post"},{"path":"/settings.cleanUnusedImages","method":"post"},{"path":"/settings.cleanUnusedVolumes","method":"post"},{"path":"/settings.cleanStoppedContainers","method":"post"},{"path":"/settings.cleanDockerBuilder","method":"post"},{"path":"/settings.cleanDockerPrune","method":"post"},{"path":"/settings.cleanAll","method":"post"},{"path":"/settings.cleanMonitoring","method":"post"},{"path":"/settings.saveSSHPrivateKey","method":"post"},{"path":"/settings.assignDomainServer","method":"post"},{"path":"/settings.cleanSSHPrivateKey","method":"post"},{"path":"/settings.updateDockerCleanup","method":"post"},{"path":"/settings.readTraefikConfig","method":"get"},{"path":"/settings.updateTraefikConfig","method":"post"},{"path":"/settings.readWebServerTraefikConfig","method":"get"},{"path":"/settings.updateWebServerTraefikConfig","method":"post"},{"path":"/settings.readMiddlewareTraefikConfig","method":"get"},{"path":"/settings.updateMiddlewareTraefikConfig","method":"post"},{"path":"/settings.getUpdateData","method":"post"},{"path":"/settings.updateServer","method":"post"},{"path":"/settings.getDokployVersion","method":"get"},{"path":"/settings.getReleaseTag","method":"get"},{"path":"/settings.readDirectories","method":"get"},{"path":"/settings.updateTraefikFile","method":"post"},{"path":"/settings.readTraefikFile","method":"get"},{"path":"/settings.getIp","method":"get"},{"path":"/settings.getOpenApiDocument","method":"get"},{"path":"/settings.readTraefikEnv","method":"get"},{"path":"/settings.writeTraefikEnv","method":"post"},{"path":"/settings.haveTraefikDashboardPortEnabled","method":"get"},{"path":"/settings.haveActivateRequests","method":"get"},{"path":"/settings.toggleRequests","method":"post"},{"path":"/settings.isCloud","method":"get"},{"path":"/settings.isUserSubscribed","method":"get"},{"path":"/settings.health","method":"get"},{"path":"/settings.setupGPU","method":"post"},{"path":"/settings.checkGPUStatus","method":"get"},{"path":"/settings.updateTraefikPorts","method":"post"},{"path":"/settings.getTraefikPorts","method":"get"},{"path":"/settings.updateLogCleanup","method":"post"},{"path":"/settings.getLogCleanupStatus","method":"get"},{"path":"/settings.getDokployCloudIps","method":"get"}]} showTitle={true} />
|
||||
<APIPage document={"./public/openapi.json"} webhooks={[]} operations={[{"path":"/settings.getWebServerSettings","method":"get"},{"path":"/settings.reloadServer","method":"post"},{"path":"/settings.cleanRedis","method":"post"},{"path":"/settings.reloadRedis","method":"post"},{"path":"/settings.reloadTraefik","method":"post"},{"path":"/settings.toggleDashboard","method":"post"},{"path":"/settings.cleanUnusedImages","method":"post"},{"path":"/settings.cleanUnusedVolumes","method":"post"},{"path":"/settings.cleanStoppedContainers","method":"post"},{"path":"/settings.cleanDockerBuilder","method":"post"},{"path":"/settings.cleanDockerPrune","method":"post"},{"path":"/settings.cleanAll","method":"post"},{"path":"/settings.cleanMonitoring","method":"post"},{"path":"/settings.saveSSHPrivateKey","method":"post"},{"path":"/settings.assignDomainServer","method":"post"},{"path":"/settings.cleanSSHPrivateKey","method":"post"},{"path":"/settings.updateDockerCleanup","method":"post"},{"path":"/settings.readTraefikConfig","method":"get"},{"path":"/settings.updateTraefikConfig","method":"post"},{"path":"/settings.readWebServerTraefikConfig","method":"get"},{"path":"/settings.updateWebServerTraefikConfig","method":"post"},{"path":"/settings.readMiddlewareTraefikConfig","method":"get"},{"path":"/settings.updateMiddlewareTraefikConfig","method":"post"},{"path":"/settings.getUpdateData","method":"post"},{"path":"/settings.updateServer","method":"post"},{"path":"/settings.getDokployVersion","method":"get"},{"path":"/settings.getReleaseTag","method":"get"},{"path":"/settings.readDirectories","method":"get"},{"path":"/settings.updateTraefikFile","method":"post"},{"path":"/settings.readTraefikFile","method":"get"},{"path":"/settings.getIp","method":"get"},{"path":"/settings.updateServerIp","method":"post"},{"path":"/settings.getOpenApiDocument","method":"get"},{"path":"/settings.readTraefikEnv","method":"get"},{"path":"/settings.writeTraefikEnv","method":"post"},{"path":"/settings.haveTraefikDashboardPortEnabled","method":"get"},{"path":"/settings.haveActivateRequests","method":"get"},{"path":"/settings.toggleRequests","method":"post"},{"path":"/settings.isCloud","method":"get"},{"path":"/settings.isUserSubscribed","method":"get"},{"path":"/settings.health","method":"get"},{"path":"/settings.setupGPU","method":"post"},{"path":"/settings.checkGPUStatus","method":"get"},{"path":"/settings.updateTraefikPorts","method":"post"},{"path":"/settings.getTraefikPorts","method":"get"},{"path":"/settings.updateLogCleanup","method":"post"},{"path":"/settings.getLogCleanupStatus","method":"get"},{"path":"/settings.getDokployCloudIps","method":"get"}]} showTitle={true} />
|
||||
@@ -10,6 +10,7 @@
|
||||
"resend",
|
||||
"gotify",
|
||||
"ntfy",
|
||||
"pushover",
|
||||
"webhook"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -30,5 +30,6 @@ Dokploy supports the following notification providers:
|
||||
6. **Resend**: Resend is a modern email API for developers to send transactional emails.
|
||||
7. **Gotify**: Gotify is a self-hosted push notification service.
|
||||
8. **Ntfy**: Ntfy is a simple HTTP-based pub-sub notification service.
|
||||
8. **Pushover**: Pushover is a service for sending real-time notifications to Android, iOS, and desktop devices.
|
||||
9. **Webhook**: Webhook is a generic webhook notification service.
|
||||
|
||||
|
||||
27
apps/docs/content/docs/core/(Notifications)/pushover.mdx
Normal file
27
apps/docs/content/docs/core/(Notifications)/pushover.mdx
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Pushover
|
||||
description: 'Configure Pushover notifications for your applications.'
|
||||
---
|
||||
|
||||
Pushover notifications are a great way to stay up to date with important events in your Dokploy panel. You can choose to receive notifications for specific events or all events.
|
||||
|
||||
## Pushover Notifications
|
||||
|
||||
To start receiving Pushover notifications, you need to fill the form with the following details:
|
||||
|
||||
- **Name**: Enter any name you want.
|
||||
- **User Key**: Enter your Pushover user key. eg. `ub3de9kl2q...`
|
||||
- **API Token**: Enter your Pushover application API token. eg. `a3d9k2q7m4...`
|
||||
- **Priority**: Enter the priority of the notification (-2 to 2, default: 0).
|
||||
- `-2`: Lowest priority (no sound/vibration)
|
||||
- `-1`: Low priority (no sound/vibration)
|
||||
- `0`: Normal priority (default)
|
||||
- `1`: High priority (bypasses quiet hours)
|
||||
- `2`: Emergency priority (requires acknowledgment)
|
||||
|
||||
For emergency priority (2), you must also provide:
|
||||
|
||||
- **Retry**: How often (in seconds) Pushover will retry the notification. Minimum 30 seconds.
|
||||
- **Expire**: How long (in seconds) to keep retrying. Maximum 10800 seconds (3 hours).
|
||||
|
||||
To setup the Pushover notifications, you can read the [Pushover Documentation](https://pushover.net/api).
|
||||
@@ -36,11 +36,11 @@ The repo have everything you need, however you can follow the same idea for your
|
||||
</Callout>
|
||||
|
||||
|
||||
3. The repository already have a Dockerfile, so we will use that, in the case your application is different create your own Dockerfile is required for this guide.
|
||||
4. We will use `Dockerhub` as an example, but you can use any container registry that you want.
|
||||
5. Make sure to create the repository in the `Dockerhub` , `namespace` is your username and `repository` is `example`.
|
||||
6. Create a new Github Actions workflow in `.github/workflows/deploy.yml`
|
||||
7. Add the following code to the workflow:
|
||||
2. The repository already have a Dockerfile, so we will use that, in the case your application is different create your own Dockerfile is required for this guide.
|
||||
3. We will use `Dockerhub` as an example, but you can use any container registry that you want.
|
||||
4. Make sure to create the repository in the `Dockerhub` , `namespace` is your username and `repository` is `example`.
|
||||
5. Create a new Github Actions workflow in `.github/workflows/deploy.yml`
|
||||
6. Add the following code to the workflow:
|
||||
|
||||
```yaml
|
||||
name: Build Docker images
|
||||
@@ -74,7 +74,7 @@ jobs:
|
||||
namespace/example:latest
|
||||
platforms: linux/amd64
|
||||
```
|
||||
8. Create your own Dockerfile, in this case we will use the `Dockerfile` from the repository.
|
||||
7. Create your own Dockerfile, in this case we will use the `Dockerfile` from the repository.
|
||||
|
||||
```properties
|
||||
FROM node:18-alpine AS base
|
||||
@@ -103,14 +103,14 @@ EXPOSE 3000
|
||||
CMD ["pnpm", "start"]
|
||||
```
|
||||
|
||||
9. Now when you make a commit to your repository, the workflow will be triggered and the application will build and push to `Dockerhub`.
|
||||
10. Now let's create application in Dokploy.
|
||||
11. In `Source Type` select `Docker`
|
||||
12. In the docker image field enter `namespace/example:latest`
|
||||
13. Click on `Save`.
|
||||
14. Click on `Deploy`.
|
||||
15. Go to `Domains` and click `Dices` icon to generate a domain and the port set to `3000`.
|
||||
16. Now you can access your application.
|
||||
8. Now when you make a commit to your repository, the workflow will be triggered and the application will build and push to `Dockerhub`.
|
||||
9. Now let's create application in Dokploy.
|
||||
10. In `Source Type` select `Docker`
|
||||
11. In the docker image field enter `namespace/example:latest`
|
||||
12. Click on `Save`.
|
||||
13. Click on `Deploy`.
|
||||
14. Go to `Domains` and click `Dices` icon to generate a domain and the port set to `3000`.
|
||||
15. Now you can access your application.
|
||||
|
||||
### Auto deploy
|
||||
|
||||
|
||||
44
apps/docs/content/docs/core/enterprise/audit-logs.txt
Normal file
44
apps/docs/content/docs/core/enterprise/audit-logs.txt
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Audit logs
|
||||
description: Track user actions and changes for compliance and security
|
||||
---
|
||||
|
||||
## What is logged
|
||||
|
||||
Typical events include:
|
||||
|
||||
- **Authentication** — Logins, logouts, failed attempts, SSO redirects.
|
||||
- **Users and access** — User creation, updates, deletion, role changes, invite/revoke.
|
||||
- **Resources** — Creation, update, and deletion of projects, applications, compose stacks, databases, domains, environment variables, and similar resources.
|
||||
- **Deployments** — Deploy triggers, rollbacks, and related actions.
|
||||
- **Settings** — Changes to organization, security, and whitelabel settings (where applicable).
|
||||
|
||||
Each entry usually includes:
|
||||
|
||||
- **Timestamp** (UTC)
|
||||
- **Actor** (user ID, email, or service account)
|
||||
- **Action** (e.g. `user.login`, `application.create`, `compose.deploy`)
|
||||
- **Resource** (type and identifier)
|
||||
- **Details** (e.g. old/new values or reason, when relevant)
|
||||
- **IP address** (when available)
|
||||
|
||||
## Accessing audit logs
|
||||
|
||||
1. Go to **Settings** → **Audit logs** (or **Organization** → **Audit logs** in Enterprise).
|
||||
2. Use filters by date range, user, action type, or resource.
|
||||
3. Export results (e.g. CSV or JSON) for external tools or compliance reviews.
|
||||
|
||||
## Retention and storage
|
||||
|
||||
- Retention period and storage backend (e.g. database, external logging) depend on your Enterprise agreement.
|
||||
- Configure retention and any archiving according to your compliance and security policies.
|
||||
|
||||
## Compliance
|
||||
|
||||
Audit logs help support:
|
||||
|
||||
- **SOC 2** — Evidence of access control and change management.
|
||||
- **GDPR** — Documentation of access to and changes in personal data and configurations.
|
||||
- **Internal policies** — Review of who changed what and when.
|
||||
|
||||
For retention, export formats, or integration with your SIEM or log pipeline, [contact us](https://dokploy.com/contact).
|
||||
21
apps/docs/content/docs/core/enterprise/index.mdx
Normal file
21
apps/docs/content/docs/core/enterprise/index.mdx
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: Enterprise features for SSO, whitelabeling, and audit logs
|
||||
---
|
||||
|
||||
|
||||
## What's included
|
||||
|
||||
- **Single Sign-On (SSO)** — Integrate with Auth0, Keycloak, or other OIDC/SAML providers.
|
||||
{/* - **Whitelabeling** — Rebrand the UI with your logo, colors, and domain (self-hosted only) (). */}
|
||||
{/* - **Audit logs** — Track user actions and changes for compliance and security. */}
|
||||
|
||||
More Enterprise features are on the way. [Contact us](https://dokploy.com/contact) if you want early access or have specific requirements.
|
||||
|
||||
## Contact us
|
||||
|
||||
For pricing and to enable Enterprise features on your instance, get in touch with our team:
|
||||
|
||||
**[Contact us →](https://dokploy.com/contact)**
|
||||
|
||||
We'll help you configure SSO, whitelabeling, and audit logs for your organization.
|
||||
23
apps/docs/content/docs/core/enterprise/license-keys.mdx
Normal file
23
apps/docs/content/docs/core/enterprise/license-keys.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: License Keys
|
||||
description: Activate and manage your Enterprise license
|
||||
---
|
||||
|
||||
To use Enterprise features (SSO, whitelabeling, audit logs, and more), you need a valid license issued by the Dokploy team.
|
||||
|
||||
By default, all Dokploy instances run in the standard edition. If you are interested in switching to the Enterprise version, [contact us](https://dokploy.com/contact). Once you receive your license key, you can activate it in your instance.
|
||||
|
||||
## Activating your license
|
||||
|
||||
1. Go to **Settings** → **License** (or **Organization** → **License** in Enterprise).
|
||||
2. Enter your license key and click **Activate**.
|
||||
|
||||
Your instance will then have access to Enterprise features for the duration of the license.
|
||||
|
||||
## How validation works
|
||||
|
||||
- The license is validated **every day** against our servers to verify that it is still valid.
|
||||
- The **only data** used for validation is the **IP address** of your server. We check it against our license server to confirm that the key is valid and active for that server.
|
||||
- No other data is sent or stored for license validation.
|
||||
|
||||
If your server’s IP changes, or you have questions about your license, [contact us](https://dokploy.com/contact).
|
||||
107
apps/docs/content/docs/core/enterprise/sso/auth0.mdx
Normal file
107
apps/docs/content/docs/core/enterprise/sso/auth0.mdx
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: Auth0
|
||||
description: Configure SSO with Auth0 (OIDC or SAML)
|
||||
---
|
||||
|
||||
<Tabs items={['SSO (OIDC)', 'SAML']}>
|
||||
<Tab value="SSO (OIDC)">
|
||||
|
||||
## 1. Create an application in Auth0
|
||||
|
||||
1. Log in to the [Auth0 Dashboard](https://manage.auth0.com/).
|
||||
2. Go to **Applications** → **Applications** → **Create Application**.
|
||||
3. Choose **Regular Web Application** and create it.
|
||||
4. Note your **Domain**, **Client ID**, and **Client Secret**.
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **OpenID Connect**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-auth0 (Unique)
|
||||
- **Issuer URL**: `https://YOUR_AUTH0_DOMAIN/` (Make sure add the trailing slash)
|
||||
- **Domain**: the domain users use to authenticate via Auth0 (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
- **Client ID**: from Auth0 application
|
||||
- **Client Secret**: from Auth0 application
|
||||
- **Scopes**: openid email profile
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Auth0
|
||||
|
||||
1. In your application, go to **Settings**.
|
||||
2. Set **Allowed Callback URLs** to your Dokploy URL, for example:
|
||||
- `https://your-dokploy-domain.com/api/auth/callback/myorg-name-auth0`
|
||||
3. Set **Allowed Logout URLs** to:
|
||||
- `https://your-dokploy-domain.com`
|
||||
4. Set **Allowed Origins** to:
|
||||
- `https://your-dokploy-domain.com`
|
||||
5. Save changes.
|
||||
|
||||
## Troubleshooting (OIDC)
|
||||
|
||||
- **Redirect URI mismatch** — Ensure the callback URL in Dokploy matches exactly what is configured in Auth0 (including protocol and path).
|
||||
- **Invalid client** — Double-check Client ID and Client Secret, and that the application is a web application.
|
||||
- **Scopes** — Ensure Auth0 is configured to return `openid` and, if required, `email` and `profile`.
|
||||
|
||||
</Tab>
|
||||
<Tab value="SAML">
|
||||
|
||||
## 1. Create a SAML application in Auth0
|
||||
|
||||
1. Log in to the [Auth0 Dashboard](https://manage.auth0.com/).
|
||||
2. Go to **Applications** → **Applications** → **Create Application**.
|
||||
3. Choose **Regular Web Application** and create it.
|
||||
4. In the application, go to **Add Ons** → enable **SAML 2 Web App** and configure it, in the settings specify this callback URL: `https://your-dokploy-domain.com/api/auth/sso/saml2/callback/myorg-name-auth0-saml`.
|
||||
5. Next & Save.
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **SAML**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-auth0-saml (unique name for this provider)
|
||||
- **Issuer URL**: the Auth0 SAML Entity ID / Issuer located in `Add Ons` tab called `SAML 2 Web App` called `Entity ID` (e.g. `urn:auth0:your-tenant:your-app`)
|
||||
- **SSO URL**: the Auth0 SAML Single Sign-On URL located in `Add Ons` tab called `SAML 2 Web App` called `Single Sign-On URL` (e.g. `https://dev-ladsadb.us.auth0.com/samlp/wgJe9bWmwhVnuAC7eNtyUsiou4b6wxuf`)
|
||||
- **Certificate**: download the certificate active (x509) from the `Add Ons` tab called `SAML 2 Web App` called `Identity Provider Certificate` and paste it in the `Certificate` field.
|
||||
- **Federation Metadata XML**: copy the Identity Provider Metadata XML from the certificate active and paste it in the `Metadata XML` field.
|
||||
- **Domain**: the domain users use to authenticate via Auth0 (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Auth0 (SAML)
|
||||
|
||||
1. In your Auth0 SAML application, set the **Application Callback URL** (ACS URL) to your Dokploy SAML ACS URL, for example:
|
||||
- `https://your-dokploy-domain.com/api/auth/sso/saml2/callback/myorg-name-auth0-saml`
|
||||
2. In the **SAML 2 Web App** add-on, open **Settings** and paste the following JSON in the **Settings** (Application Settings) field. Replace `https://your-dokploy-domain.com` with your Dokploy base URL and `myorg-name-auth0-saml` with the **exact same provider name** you entered in Dokploy in step 2 (the callback URL path must match), so Dokploy can read email, display name, and other attributes:
|
||||
|
||||
```json
|
||||
{
|
||||
"audience": "https://your-dokploy-domain.com/saml/metadata",
|
||||
"recipient": "https://your-dokploy-domain.com/api/auth/sso/saml2/callback/myorg-name-auth0-saml",
|
||||
"destination": "https://your-dokploy-domain.com/api/auth/sso/saml2/callback/myorg-name-auth0-saml",
|
||||
"signResponse": true,
|
||||
"signAssertion": true,
|
||||
"nameIdentifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
|
||||
"nameIdentifierProbes": [
|
||||
"email"
|
||||
],
|
||||
"mappings": {
|
||||
"email": "email",
|
||||
"displayName": "name",
|
||||
"givenName": "given_name",
|
||||
"surname": "family_name"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
4. Save.
|
||||
|
||||
## Troubleshooting (SAML)
|
||||
|
||||
- **ACS URL mismatch** — Ensure the callback/ACS URL in Auth0 matches exactly what Dokploy provides (including protocol and path).
|
||||
- **Certificate** — Use the full x509 certificate from Auth0 (PEM format); ensure no extra spaces or line breaks.
|
||||
- **Entity ID** — The Entity ID in Dokploy must match the Issuer/Entity ID configured in Auth0.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
For help with your setup, [contact us](https://dokploy.com/contact).
|
||||
88
apps/docs/content/docs/core/enterprise/sso/azure.mdx
Normal file
88
apps/docs/content/docs/core/enterprise/sso/azure.mdx
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Azure AD (Microsoft Entra ID)
|
||||
description: Configure SSO with Azure AD / Microsoft Entra ID (OIDC or SAML)
|
||||
---
|
||||
|
||||
<Tabs items={['SSO (OIDC)', 'SAML']}>
|
||||
<Tab value="SSO (OIDC)">
|
||||
|
||||
## 1. Register an application in Azure
|
||||
|
||||
1. Log in to the [Azure Portal](https://portal.azure.com/).
|
||||
2. Go to **Microsoft Entra ID** (or **Azure Active Directory**) → **App registrations** → **New registration**.
|
||||
3. Enter a **Name** (e.g. Dokploy), choose supported account types, and set **Redirect URI** to **Web** with a placeholder for now (e.g. `https://your-dokploy-domain.com/api/auth/callback/myorg-name-azure`).
|
||||
4. Register and note the **Application (client) ID** and **Directory (tenant) ID**.
|
||||
5. Go to **Certificates & secrets** → **New client secret**, create a secret and note its **Value** (you won’t see it again).
|
||||
6. The **Issuer URL** for OpenID Connect is: `https://login.microsoftonline.com/{tenant-id}/v2.0` (replace `{tenant-id}` with your Directory (tenant) ID). Some setups expect a trailing slash.
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **OpenID Connect**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-azure (unique name for this provider)
|
||||
- **Issuer URL**: `https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0` (use your Directory (tenant) ID; add a trailing slash if required for discovery)
|
||||
- **Domain**: the domain users use to authenticate via Azure AD (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
- **Client ID**: the Application (client) ID from Azure
|
||||
- **Client Secret**: the client secret value from Certificates & secrets
|
||||
- **Scopes**: openid email profile
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Azure
|
||||
|
||||
1. In your app registration, go to **Authentication**.
|
||||
2. Under **Web** → **Redirect URIs**, add:
|
||||
- `https://your-dokploy-domain.com/api/auth/callback/myorg-name-azure`
|
||||
3. Under **Front-channel logout URL** (optional), you can set:
|
||||
- `https://your-dokploy-domain.com`
|
||||
4. Go to **Token Configuration** and add optional claim, select **email**, **preferred_username** and **upn** from the list of claims.
|
||||
5. Save.
|
||||
|
||||
## Troubleshooting (OIDC)
|
||||
|
||||
- **Redirect URI mismatch** — Ensure the callback URL in Dokploy matches exactly what is configured in Azure (including protocol and path). Use the same **Provider** value in the path (e.g. `.../api/auth/callback/myorg-name-azure`).
|
||||
- **Invalid client** — Double-check Application (client) ID and client secret. Confirm the secret has not expired under **Certificates & secrets**.
|
||||
- **Tenant** — Use the correct Directory (tenant) ID in the Issuer URL. For multi-tenant apps, you may use `common` instead of the tenant ID (e.g. `https://login.microsoftonline.com/common/v2.0`).
|
||||
- **Scopes** — Ensure the app registration has the right API permissions (e.g. **OpenID permissions**, **User.Read**) if required for `openid`, `email`, and `profile`.
|
||||
|
||||
</Tab>
|
||||
<Tab value="SAML">
|
||||
|
||||
## 1. Create an Enterprise Application (SAML) in Azure
|
||||
|
||||
1. Log in to the [Azure Portal](https://portal.azure.com/).
|
||||
2. Go to **Microsoft Entra ID** → **Enterprise applications** → **New application** → **Create your own application** (or **Non-gallery application**).
|
||||
3. Enter a **Name** (e.g. Dokploy) and create.
|
||||
4. Go to **Single sign-on** → **SAML**.
|
||||
5. Note the **Identifier (Entity ID)** and **Login URL** (SSO URL). Under **SAML Certificates**, download or copy the **Certificate (Base64)** (x509) and download the **Federation Metadata XML** file.
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **SAML**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-azure-saml (unique name for this provider)
|
||||
- **Issuer URL**: the Azure SAML Entity ID (Identifier) from the Enterprise application (eg. `https://sts.windows.net/YOUR_TENANT_ID/`).
|
||||
- **SSO URL**: the Azure Login URL (Single Sign-On URL) (eg. `https://login.microsoftonline.com/YOUR_TENANT_ID/saml2`)
|
||||
- **Certificate**: the IdP signing certificate (x509 Base64) from Azure
|
||||
- **Federation Metadata XML**: the Federation Metadata XML file from Azure
|
||||
- **Domain**: the domain users use to authenticate via Azure AD (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Azure (SAML)
|
||||
|
||||
1. In your Enterprise application, go to **Single sign-on** → **SAML**.
|
||||
2. Under **Basic SAML Configuration**, set **Identifier (Entity ID)** if required (SP Entity ID from Dokploy) (eg. `https://your-dokploy-instance.com`).
|
||||
3. Set **Reply URL (Assertion Consumer Service URL)** to your Dokploy SAML ACS URL (eg. `https://your-dokploy-instance.com/api/auth/sso/saml2/callback/myorg-name-azure-saml`).
|
||||
3. Save.
|
||||
|
||||
## Troubleshooting (SAML)
|
||||
|
||||
- **ACS URL mismatch** — Ensure the Reply URL (ACS) in Azure matches exactly what Dokploy provides (including protocol and path).
|
||||
- **Certificate** — Use the Certificate (Base64) from Azure; paste as-is or convert to PEM if Dokploy expects PEM.
|
||||
- **Entity ID** — The Entity ID in Dokploy must match the Identifier (Entity ID) of the Azure Enterprise application.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
For help with your setup, [contact us](https://dokploy.com/contact).
|
||||
17
apps/docs/content/docs/core/enterprise/sso/index.mdx
Normal file
17
apps/docs/content/docs/core/enterprise/sso/index.mdx
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Single Sign-On (SSO)
|
||||
description: Configure SSO with Auth0, Keycloak, or other OIDC/SAML providers
|
||||
---
|
||||
|
||||
Enterprise supports Single Sign-On via OpenID Connect (OIDC) and SAML. You can use Auth0, Keycloak, or any compatible identity provider.
|
||||
|
||||
Choose a provider below for step-by-step configuration:
|
||||
|
||||
- **[Auth0](/docs/core/enterprise/sso/auth0)** — Cloud identity platform
|
||||
- **[Azure AD (Microsoft Entra ID)](/docs/core/enterprise/sso/azure)** — Microsoft's cloud identity platform
|
||||
- **[Okta](/docs/core/enterprise/sso/okta)** — Cloud identity platform
|
||||
- **[Keycloak](/docs/core/enterprise/sso/keycloak)** — Open-source identity and access management
|
||||
|
||||
You can also use any other OIDC/SAML provider by configuring the endpoints and flow manually.
|
||||
|
||||
For other OIDC/SAML providers, use the same endpoints and flow; [contact us](https://dokploy.com/contact) if you need help.
|
||||
48
apps/docs/content/docs/core/enterprise/sso/keycloak.mdx
Normal file
48
apps/docs/content/docs/core/enterprise/sso/keycloak.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Keycloak
|
||||
description: Configure SSO with Keycloak
|
||||
---
|
||||
|
||||
## 1. Create a client in Keycloak
|
||||
|
||||
1. Log in to your Keycloak Admin Console.
|
||||
2. Select your realm (or create one).
|
||||
3. Go to **Clients** → **Create client**.
|
||||
4. Set **Client ID** (e.g. `my-client-id`) and **Client type** to **OpenID Connect**.
|
||||
5. Set **Root URL** to your Dokploy base URL, e.g. `https://your-dokploy-domain.com`.
|
||||
6. Save.
|
||||
7. Open the client, set **Access type** to **confidential**, then open the **Credentials** tab and note the **Secret**.
|
||||
8. From **Realm settings** → **OpenID Endpoint Configuration**, note the **Issuer** (e.g. `https://keycloak.example.com/realms/your-realm`).
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **OpenID Connect**.
|
||||
3. Enter:
|
||||
- **Provider**: my-client-id (Unique)
|
||||
- **Issuer URL**: your Keycloak realm URL (e.g. `https://keycloak.example.com/realms/your-realm`)
|
||||
- **Domain**: the domain users use to authenticate via Keycloak (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
- **Client ID**: my-client-id
|
||||
- **Client Secret**: the secret from the Keycloak client Credentials tab
|
||||
- **Scopes**: openid email profile
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Keycloak
|
||||
|
||||
1. In your Keycloak client, go to **Settings**.
|
||||
2. Set **Valid redirect URIs** to your Dokploy callback URL, for example:
|
||||
- `https://your-dokploy-domain.com/api/auth/callback/my-client-id`
|
||||
3. Set **Valid post logout redirect URIs** to:
|
||||
- `https://your-dokploy-domain.com`
|
||||
4. Set **Allowed Origins** to:
|
||||
- `https://your-dokploy-domain.com`
|
||||
5. Save changes.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Redirect URI mismatch** — Ensure the callback URL in Dokploy matches exactly what is configured in Keycloak (including protocol and path). Use the same **Provider** value in the path (e.g. `.../api/auth/callback/myorg-name-keycloak`).
|
||||
- **Invalid client** — Double-check Client ID and Client Secret, and that the client is enabled and set to confidential access.
|
||||
- **Scopes** — Ensure the client is configured to request `openid` and, if required, `email` and `profile`.
|
||||
- **Attribute mapping** — If user email or name is missing, map Keycloak attributes (e.g. email, preferred_username) in Dokploy if your setup supports it.
|
||||
|
||||
For help with your setup, [contact us](https://dokploy.com/contact).
|
||||
9
apps/docs/content/docs/core/enterprise/sso/meta.json
Normal file
9
apps/docs/content/docs/core/enterprise/sso/meta.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"title": "SSO",
|
||||
"pages": [
|
||||
"auth0",
|
||||
"azure",
|
||||
"keycloak",
|
||||
"okta"
|
||||
]
|
||||
}
|
||||
80
apps/docs/content/docs/core/enterprise/sso/okta.mdx
Normal file
80
apps/docs/content/docs/core/enterprise/sso/okta.mdx
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Okta
|
||||
description: Configure SSO with Okta (OIDC or SAML)
|
||||
---
|
||||
|
||||
<Tabs items={['SSO (OIDC)', 'SAML']}>
|
||||
<Tab value="SSO (OIDC)">
|
||||
|
||||
## 1. Create an application in Okta
|
||||
|
||||
1. Log in to the [Okta Admin Console](https://login.okta.com/) (or your Okta domain).
|
||||
2. Go to **Applications** → **Applications** → **Create App Integration**.
|
||||
3. Choose **OIDC - OpenID Connect** and **Web Application**, then create it.
|
||||
4. Note your **Client ID** and **Client Secret** (under **General** or **Client credentials**).
|
||||
5. Note your Okta **domain** (e.g. `https://your-domain.okta.com`) and, if using a custom authorization server, its **issuer** (e.g. `https://your-domain.okta.com/oauth2/default`) or go to **Security** → **API** → **Authorization Servers** and note the **Issuer** (e.g. `https://your-domain.okta.com`).
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **OpenID Connect**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-okta (unique name for this provider)
|
||||
- **Issuer URL**: your Okta issuer URL (e.g. `https://your-domain.okta.com`)
|
||||
- **Domain**: the domain users use to authenticate via Okta (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
- **Client ID**: from the Okta application
|
||||
- **Client Secret**: from the Okta application
|
||||
- **Scopes**: openid email profile
|
||||
4. Save.
|
||||
|
||||
## 3. Configure Okta
|
||||
|
||||
1. In your Okta application, go to **General** (or **Sign-in** / **Assignments** as needed).
|
||||
2. Set **Sign-in redirect URIs** to your Dokploy callback URL, for example:
|
||||
- `https://your-dokploy-domain.com/api/auth/callback/myorg-name-okta`
|
||||
3. Set **Sign-out redirect URIs** (optional) to:
|
||||
- `https://your-dokploy-domain.com`
|
||||
4. Under **Trusted Origins**, add your Dokploy URL as an origin (e.g. `https://your-dokploy-domain.com`) if required for CORS.
|
||||
5. Save.
|
||||
|
||||
## Troubleshooting (OIDC)
|
||||
|
||||
- **Redirect URI mismatch** — Ensure the callback URL in Dokploy matches exactly what is configured in Okta (including protocol and path). Use the same **Provider** value in the path (e.g. `.../api/auth/callback/myorg-name-okta`).
|
||||
- **Invalid client** — Double-check Client ID and Client Secret, and that the application is a Web Application with the correct grant types (e.g. Authorization Code).
|
||||
- **Issuer URL** — Use the full issuer URL for your authorization server (e.g. `https://your-domain.okta.com`).
|
||||
- **Scopes** — Ensure the Okta authorization server is configured to allow `openid`, and if needed `email` and `profile`.
|
||||
|
||||
</Tab>
|
||||
<Tab value="SAML">
|
||||
|
||||
## 1. Create a SAML application in Okta
|
||||
|
||||
1. Log in to the [Okta Admin Console](https://login.okta.com/) (or your Okta domain).
|
||||
2. Go to **Applications** → **Applications** → **Create App Integration**.
|
||||
3. Choose **SAML 2.0** and create it.
|
||||
4. Enter an **App name** (e.g. Dokploy). Under **Configure SAML**, in the Single sign-on URL field, set the SAML ACS URL (eg. `https://your-dokploy-instance.com/api/auth/sso/saml2/callback/myorg-name-okta-saml`) and in the Audience URI (SP Entity ID) field, set the SP Entity ID (eg. `https://your-dokploy-instance.com`).
|
||||
5. Next & Save.
|
||||
|
||||
## 2. Configure Dokploy
|
||||
|
||||
1. In Dokploy, go to **Settings** (or **Organization** / **Security** in Enterprise).
|
||||
2. Enable **SSO** and choose **SAML**.
|
||||
3. Enter:
|
||||
- **Provider**: myorg-name-okta-saml (unique name for this provider)
|
||||
- **Issuer URL**: the Okta Identity Provider issuer (Entity ID) located in `Sign On` tab called `Issuer` (eg. `http://www.okta.com/exkzq3acyuEtIuNrW697`)
|
||||
- **SSO URL**: the Okta Identity Provider single sign-on URL located in `Sign On` tab called `Single sign-on URL` (eg. `https://trial-2804699.okta.com/app/trial-2802699_something/exkzqi3cyuEtIuNrW697/sso/saml`)
|
||||
- **Certificate**: go to `Signing Certificate` tab and download the certificate active (x509) and paste it in the `Certificate` field.
|
||||
- **Federation Metadata XML**: copy the idp metadata XML from the certificate active and paste it in the `Metadata XML` field.
|
||||
- **Domain**: the domain users use to authenticate via Okta (e.g. your organization domain like `acme.com`), not the Dokploy instance URL
|
||||
4. Save.
|
||||
|
||||
## Troubleshooting (SAML)
|
||||
|
||||
- **ACS URL mismatch** — Ensure the Single sign-on URL (ACS) in Okta matches exactly what Dokploy provides (including protocol and path).
|
||||
- **Certificate** — Use the x509 certificate from Okta’s IdP metadata (PEM or Base64); ensure it is the one used to sign assertions.
|
||||
- **Entity ID** — The Entity ID in Dokploy must match the Identity Provider issuer in Okta.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
For help with your setup, [contact us](https://dokploy.com/contact).
|
||||
37
apps/docs/content/docs/core/enterprise/whitelabeling.txt
Normal file
37
apps/docs/content/docs/core/enterprise/whitelabeling.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: Whitelabeling
|
||||
description: Rebrand Dokploy with your logo, colors, and domain
|
||||
---
|
||||
|
||||
|
||||
## What you can customize
|
||||
|
||||
- **Logo** — Header and login logo.
|
||||
- **Favicon** — Browser tab icon.
|
||||
- **Colors** — Primary color and accent (e.g. buttons, links).
|
||||
- **Custom domain** — Serve the app from your own domain (e.g. `deploy.yourcompany.com`).
|
||||
|
||||
## Configuration
|
||||
|
||||
Whitelabel settings are managed in the Enterprise admin area (or via environment variables, depending on your deployment).
|
||||
|
||||
1. Go to **Settings** → **Whitelabel** (or equivalent in your Enterprise setup).
|
||||
2. Upload your **logo** (recommended: SVG or PNG, transparent background).
|
||||
3. Upload your **favicon** (e.g. ICO or PNG).
|
||||
4. Set **primary color** and **accent color** (hex codes).
|
||||
5. If using a custom domain, configure your reverse proxy (e.g. Traefik, Nginx) and DNS to point to your Dokploy instance, and set the **base URL** in Dokploy to match.
|
||||
|
||||
## Custom domain
|
||||
|
||||
1. Create a CNAME (or A) record pointing your domain to the server or load balancer where Dokploy runs.
|
||||
2. Configure TLS (e.g. Let's Encrypt) on your reverse proxy for that hostname.
|
||||
3. In Dokploy, set the **Application URL** (or equivalent) to `https://your-domain.com`.
|
||||
4. Restart or reload Dokploy so it uses the new base URL for redirects and links.
|
||||
|
||||
## Best practices
|
||||
|
||||
- Use high-resolution logos (e.g. 2x) for sharp display on retina screens.
|
||||
- Keep primary and accent colors accessible (sufficient contrast for text and buttons).
|
||||
- Test login and main flows after changing logo and colors to ensure nothing is broken or hard to read.
|
||||
|
||||
For help enabling or configuring whitelabeling, [contact us](https://dokploy.com/contact).
|
||||
@@ -372,3 +372,34 @@ curl -sSL https://dokploy.com/install.sh | sh
|
||||
export ADVERTISE_ADDR=192.168.1.100
|
||||
curl -sSL https://dokploy.com/install.sh | sh
|
||||
```
|
||||
|
||||
## Updating Traefik Manually
|
||||
|
||||
Dokploy does not update the Traefik container automatically when you upgrade. This is intentional to avoid unexpected downtime for your services. If you need a newer Traefik version (for example, due to a breaking change or security fix), you can update it manually.
|
||||
|
||||
1. Remove the existing Traefik container.
|
||||
2. Create a new container with the desired Traefik image version and the same configuration.
|
||||
3. Connect the new container to the Dokploy network.
|
||||
|
||||
Example (replace `v3.6.7` with the version you want):
|
||||
|
||||
```bash
|
||||
docker rm -f dokploy-traefik
|
||||
|
||||
docker run -d \
|
||||
--name dokploy-traefik \
|
||||
--restart always \
|
||||
-v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \
|
||||
-v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
-p 80:80/tcp \
|
||||
-p 443:443/tcp \
|
||||
-p 443:443/udp \
|
||||
traefik:v3.6.7
|
||||
|
||||
docker network connect dokploy-network dokploy-traefik
|
||||
```
|
||||
|
||||
<Callout type='warn'>
|
||||
**Breaking changes:** Some Traefik versions introduce breaking changes that may not be compatible with the configuration and structure Dokploy uses. Before upgrading, check the [Traefik release notes](https://github.com/traefik/traefik/releases) and [Dokploy releases](https://github.com/Dokploy/dokploy/releases) for any announced breaking changes. Using an incompatible version can cause routing issues (e.g. 404s for applications using domains).
|
||||
</Callout>
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
"applications",
|
||||
"docker-compose",
|
||||
"databases",
|
||||
"templates",
|
||||
"(examples)",
|
||||
"auto-deploy",
|
||||
"schedule-jobs",
|
||||
@@ -49,11 +48,17 @@
|
||||
"remote-servers/deployments",
|
||||
"remote-servers/security",
|
||||
"remote-servers/validate",
|
||||
"---Advanced---",
|
||||
"cluster",
|
||||
"---Enterprise---",
|
||||
"enterprise/index",
|
||||
"enterprise/license-keys",
|
||||
"enterprise/sso",
|
||||
"enterprise/whitelabeling",
|
||||
"enterprise/audit-logs",
|
||||
"---Guides---",
|
||||
"guides/cloudflare-tunnels",
|
||||
"guides/tailscale",
|
||||
"guides/ec2-instructions",
|
||||
"---Advanced---",
|
||||
"cluster"
|
||||
"guides/ec2-instructions"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
---
|
||||
title: Open Source Templates
|
||||
description: Deploy open source templates with Dokploy
|
||||
---
|
||||
|
||||
By default we include a set of templates, that you can use to spin up templates quickly. You can also create your own templates.
|
||||
|
||||
## Templates
|
||||
|
||||
The following templates are available (100):
|
||||
|
||||
- **Appwrite**: End-to-end backend server for Web, Mobile, Native, or Backend apps with user authentication, database, storage, and more.
|
||||
- **Outline**: Self-hosted knowledge base and documentation platform.
|
||||
- **Supabase**: The open-source Firebase alternative with a dedicated Postgres database for web, mobile, and AI applications.
|
||||
- **Pocketbase**: Open-source backend for your next SaaS and Mobile app in 1 file.
|
||||
- **Plausible**: Open-source, privacy-focused, self-hosted web analytics platform.
|
||||
- **Calcom**: Open-source alternative to Calendly for creating scheduling and booking services.
|
||||
- **Grafana**: Open-source platform for data visualization and monitoring.
|
||||
- **Directus**: API-first, open-source headless CMS for building custom backends.
|
||||
- **Baserow**: Open-source database management tool.
|
||||
- **Budibase**: Open-source low-code platform for building forms, portals, and approval apps.
|
||||
- **Ghost**: Professional publishing platform built on Node.js.
|
||||
- **Uptime Kuma**: Free and open-source monitoring tool.
|
||||
- **n8n**: Open-source low-code platform for automating workflows.
|
||||
- **Wordpress**: Free and open-source CMS for publishing websites.
|
||||
- **Odoo**: Free and open-source business management software.
|
||||
- **Appsmith**: Open-source platform for building internal tools.
|
||||
- **Excalidraw**: Open-source online diagramming tool.
|
||||
- **Documenso**: Open-source alternative to DocuSign.
|
||||
- **NocoDB**: Airtable alternative for databases.
|
||||
- **Meilisearch**: Free and open-source search engine.
|
||||
- **Phpmyadmin**: Web interface for MySQL/MariaDB management.
|
||||
- **Rocketchat**: Open-source web chat platform.
|
||||
- **Minio**: Open-source object storage server.
|
||||
- **Metabase**: Open-source business intelligence tool.
|
||||
- **Glitchtip**: Simple, open-source error tracking.
|
||||
- **Open WebUI**: Open-source ChatGPT alternative.
|
||||
- **Listmonk**: Self-hosted newsletter manager.
|
||||
- **Double Zero**: Self-hostable SES dashboard.
|
||||
- **Umami**: Privacy-focused analytics alternative.
|
||||
- **Jellyfin**: Free software media system.
|
||||
- **Teable**: No-code database with spreadsheet interface.
|
||||
- **Zipline**: ShareX/file upload server.
|
||||
- **Soketi**: Open-source WebSockets server.
|
||||
- **Aptabase**: Self-hosted analytics platform.
|
||||
- **Typebot**: Open-source chatbot builder.
|
||||
- **Gitea**: Self-hosted software development service.
|
||||
- **Roundcube**: Open-source webmail software.
|
||||
- **File Browser**: Web-based file manager.
|
||||
- **Tolgee**: Web-based localization platform.
|
||||
- **Portainer**: Container management tool.
|
||||
- **InfluxDB**: Time-series data platform.
|
||||
- **Infisical**: Configuration and secrets manager.
|
||||
- **Docmost**: Collaborative wiki software.
|
||||
- **Vaultwarden**: Bitwarden-compatible server.
|
||||
- **Hi.events**: Event management platform.
|
||||
- **Windows/MacOS**: Dockerized operating systems.
|
||||
- **Coder**: Cloud development environment.
|
||||
- **Stirling PDF**: PDF tools suite.
|
||||
- **Lobe Chat**: Modern AI chat framework.
|
||||
- **Peppermint**: API development platform.
|
||||
- **Windmill**: Workflow and internal apps platform.
|
||||
- **Activepieces**: No-code automation tool.
|
||||
- **InvoiceShelf**: Self-hosted invoicing system.
|
||||
- **Postiz**: Content management platform.
|
||||
- **Slash**: Bookmarking and link shortener.
|
||||
- **Discord Tickets**: Support ticket bot.
|
||||
- **Nextcloud AIO**: File storage and collaboration.
|
||||
- **Blender**: 3D creation suite.
|
||||
- **HeyForm**: Conversational form builder.
|
||||
- **Chatwoot**: Customer engagement platform.
|
||||
- **Discourse**: Modern forum software.
|
||||
- **Immich**: Photo/video backup solution.
|
||||
- **Twenty CRM**: Modern CRM alternative.
|
||||
- **YOURLS**: URL shortening service.
|
||||
- **Ryot**: Media tracking platform.
|
||||
- **PhotoPrism**: AI-powered photos app.
|
||||
- **Ontime**: Event rundown manager.
|
||||
- **Trigger.dev**: Event-driven application platform.
|
||||
- **Browserless**: Headless browser automation.
|
||||
- **draw.io**: Diagramming application.
|
||||
- **Kimai**: Time-tracking application.
|
||||
- **Logto**: Identity management platform.
|
||||
- **Penpot**: Open-source design tool.
|
||||
- **Huly**: Project management platform.
|
||||
- **Unsend**: Email service platform.
|
||||
- **Langflow**: Low-code AI application builder.
|
||||
- **Elasticsearch**: Search and analytics engine.
|
||||
- **OneDev**: Git server with CI/CD.
|
||||
- **Unifi Network**: Network management platform.
|
||||
- **GLPI**: Service management software.
|
||||
- **Checkmate**: Server monitoring tool.
|
||||
- **Gotenberg**: PDF generation API.
|
||||
- **Actual Budget**: Privacy-focused finance app.
|
||||
- **Conduit/Conduwuit**: Matrix chat servers.
|
||||
- **Cloudflared**: Cloudflare Tunnel daemon.
|
||||
- **CouchDB**: Document-oriented database.
|
||||
- **IT Tools**: Developer utilities collection.
|
||||
- **Superset**: Data visualization platform.
|
||||
- **Glance/Homarr**: Dashboard solutions.
|
||||
- **ERPNext**: Open-source ERP software.
|
||||
- **Maybe**: Finance tracking application.
|
||||
- **Spacedrive**: Cross-platform file manager.
|
||||
- **AList**: Multi-storage file manager.
|
||||
- **Answer**: Q&A platform.
|
||||
- **Shlink**: URL shortener.
|
||||
- **Frappe HR**: HR & Payroll software.
|
||||
- **Formbricks**: Survey platform.
|
||||
- **Trilium**: Note-taking application.
|
||||
- **Convex**: Reactive database platform.
|
||||
|
||||
For an up to date list of available template you can visit [Dokploy templates website](https://templates.dokploy.com/).
|
||||
|
||||
## Create your own template
|
||||
|
||||
We accept contributions to upload new templates to the dokploy repository.
|
||||
|
||||
Make sure to follow the guidelines for creating a template:
|
||||
|
||||
[Steps to create your own template](https://github.com/Dokploy/templates)
|
||||
|
||||
[^1]: Please note that if you're self-hosting a mail server you need port 25 to be open for SMTP (Mail Transmission Protocol that allows you to send and receive) to work properly. Some VPS providers like [Hetzner](https://docs.hetzner.com/cloud/servers/faq/#why-can-i-not-send-any-mails-from-my-server) block this port by default for new clients.
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"pages": ["core", "cli", "api"]
|
||||
"pages": ["core", "cli", "api", "templates"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user