mirror of
https://github.com/Dokploy/website.git
synced 2026-06-15 20:25:25 +02:00
Merge branch 'main' into main
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ node_modules
|
||||
.pnp.js
|
||||
.docker
|
||||
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.local
|
||||
|
||||
@@ -14,6 +14,8 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --filter=./apps/d
|
||||
# Generate OpenAPI documentation from apps/docs/public/openapi.json
|
||||
RUN pnpm --filter=./apps/docs run build:docs
|
||||
|
||||
# Generate templates
|
||||
RUN pnpm --filter=./apps/docs run generate-templates
|
||||
# Deploy only the dokploy app
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
@@ -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"]
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { APIPage } from "@/lib/source";
|
||||
import { Callout } from "fumadocs-ui/components/callout";
|
||||
import { ImageZoom } from "fumadocs-ui/components/image-zoom";
|
||||
import { Tab, Tabs } from "fumadocs-ui/components/tabs";
|
||||
import defaultMdxComponents from "fumadocs-ui/mdx";
|
||||
import type { MDXComponents } from "mdx/types";
|
||||
|
||||
@@ -9,6 +10,8 @@ export function getMDXComponents(components?: MDXComponents): MDXComponents {
|
||||
...defaultMdxComponents,
|
||||
ImageZoom,
|
||||
Callout,
|
||||
Tab,
|
||||
Tabs,
|
||||
APIPage,
|
||||
...components,
|
||||
p: ({ children }) => (
|
||||
|
||||
@@ -5,6 +5,14 @@ const withMDX = createMDX();
|
||||
/** @type {import('next').NextConfig} */
|
||||
const config = {
|
||||
reactStrictMode: true,
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: "https",
|
||||
hostname: "templates.dokploy.com",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export default withMDX(config);
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
"types:check": "fumadocs-mdx && tsc --noEmit",
|
||||
"postinstall": "fumadocs-mdx",
|
||||
"fix-openapi": "node scripts/fix-openapi.mjs",
|
||||
"build:docs": "npm run fix-openapi && node generate-docs.mjs"
|
||||
"generate-templates": "node scripts/generate-templates.mjs",
|
||||
"build:docs": "npm run fix-openapi && npm run generate-templates && node generate-docs.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@next/third-parties": "16.0.7",
|
||||
@@ -21,7 +22,7 @@
|
||||
"fumadocs-openapi": "10.1.1",
|
||||
"fumadocs-ui": "16.2.3",
|
||||
"lucide-react": "^0.552.0",
|
||||
"next": "16.0.10",
|
||||
"next": "16.1.5",
|
||||
"react": "^19.2.0",
|
||||
"react-dom": "^19.2.0",
|
||||
"shiki": "3.19.0",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
193
apps/docs/scripts/generate-templates.mjs
Normal file
193
apps/docs/scripts/generate-templates.mjs
Normal file
@@ -0,0 +1,193 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
|
||||
const TEMPLATES_URL = 'https://templates.dokploy.com/meta.json';
|
||||
const BASE_BLUEPRINT_URL = 'https://templates.dokploy.com/blueprints';
|
||||
const OUTPUT_DIR = './content/docs/templates';
|
||||
|
||||
async function fetchWithTimeout(url, options = {}, timeout = 10000) {
|
||||
const controller = new AbortController();
|
||||
const id = setTimeout(() => controller.abort(), timeout);
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
...options,
|
||||
signal: controller.signal
|
||||
});
|
||||
clearTimeout(id);
|
||||
return response;
|
||||
} catch (e) {
|
||||
clearTimeout(id);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
async function getTemplateFile(id, fileName) {
|
||||
try {
|
||||
const response = await fetchWithTimeout(`${BASE_BLUEPRINT_URL}/${id}/${fileName}`);
|
||||
if (!response.ok) return null;
|
||||
return await response.text();
|
||||
} catch (error) {
|
||||
console.error(`Error fetching ${fileName} for ${id}:`, error.message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/** Normalize and indent code so it renders correctly inside MDX code blocks (preserves YAML/TOML formatting). */
|
||||
function formatCodeForMdx(code) {
|
||||
if (!code || !code.trim()) return '# Not available';
|
||||
return code
|
||||
.replace(/\r\n/g, '\n')
|
||||
.trim()
|
||||
.split('\n')
|
||||
.map((line) => line.trimEnd())
|
||||
.join('\n')
|
||||
.split('\n')
|
||||
.map(line => ` ${line}`)
|
||||
.join('\n');
|
||||
}
|
||||
|
||||
/** Build Base64 payload for Dokploy import (same format as UI: compose + config as JSON, then base64). */
|
||||
function templateToBase64(dockerCompose, config) {
|
||||
const configObj = {
|
||||
compose: dockerCompose || '',
|
||||
config: config || '',
|
||||
};
|
||||
const jsonString = JSON.stringify(configObj, null, 2);
|
||||
return Buffer.from(jsonString, 'utf-8').toString('base64');
|
||||
}
|
||||
|
||||
async function generateTemplates() {
|
||||
try {
|
||||
console.log('Fetching templates metadata...');
|
||||
const response = await fetch(TEMPLATES_URL);
|
||||
const templates = await response.json();
|
||||
|
||||
console.log(`Found ${templates.length} templates. Starting data collection...`);
|
||||
|
||||
if (!fs.existsSync(OUTPUT_DIR)) {
|
||||
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
}
|
||||
|
||||
const batchSize = 10;
|
||||
for (let i = 0; i < templates.length; i += batchSize) {
|
||||
const batch = templates.slice(i, i + batchSize);
|
||||
console.log(`Processing batch ${i / batchSize + 1}/${Math.ceil(templates.length / batchSize)}...`);
|
||||
|
||||
await Promise.all(batch.map(async (template) => {
|
||||
const composeYaml = await getTemplateFile(template.id, 'docker-compose.yml');
|
||||
const templateToml = await getTemplateFile(template.id, 'template.toml');
|
||||
const instructionsRaw = await getTemplateFile(template.id, 'instructions.md');
|
||||
const hasRealInstructions =
|
||||
instructionsRaw &&
|
||||
instructionsRaw.trim().length > 0 &&
|
||||
!/^\s*<!doctype/i.test(instructionsRaw.trim()) &&
|
||||
!/^\s*<html\b/i.test(instructionsRaw.trim());
|
||||
const instructionsSafe = hasRealInstructions
|
||||
? instructionsRaw.trim().replace(/\$\{/g, '\\${')
|
||||
: '';
|
||||
const safeDescription = template.description.replace(/"/g, '\\"');
|
||||
const safeName = template.name.replace(/"/g, '\\"');
|
||||
const logoUrl = `${BASE_BLUEPRINT_URL}/${template.id}/${template.logo}`;
|
||||
|
||||
const mdxContent = `---
|
||||
title: "${safeName}"
|
||||
description: "${safeDescription}"
|
||||
---
|
||||
|
||||
<ImageZoom
|
||||
src="${logoUrl}"
|
||||
alt="${template.name} logo"
|
||||
width={100}
|
||||
height={100}
|
||||
className="my-8 rounded-xl"
|
||||
/>
|
||||
|
||||
## Configuration
|
||||
|
||||
<Tabs items={["docker-compose.yml", "template.toml"]}>
|
||||
<Tab value="docker-compose.yml">
|
||||
\`\`\`yaml
|
||||
${formatCodeForMdx(composeYaml)}
|
||||
\`\`\`
|
||||
</Tab>
|
||||
<Tab value="template.toml">
|
||||
\`\`\`toml
|
||||
${formatCodeForMdx(templateToml)}
|
||||
\`\`\`
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Base64
|
||||
|
||||
To import this template in Dokploy: create a **Compose** service → **Advanced** → **Base64 import** and paste the content below:
|
||||
|
||||
\`\`\`text
|
||||
${templateToBase64(composeYaml, templateToml)}
|
||||
\`\`\`
|
||||
${instructionsSafe ? `
|
||||
|
||||
## Instructions
|
||||
|
||||
${instructionsSafe}
|
||||
` : ''}
|
||||
|
||||
## Links
|
||||
${template.links.website ? `- [Website](${template.links.website})` : ''}
|
||||
${template.links.github ? `- [Github](${template.links.github})` : ''}
|
||||
${template.links.docs ? `- [Documentation](${template.links.docs})` : ''}
|
||||
|
||||
## Tags
|
||||
${template.tags.map(tag => `\`${tag}\``).join(', ')}
|
||||
|
||||
---
|
||||
|
||||
Version: \`${template.version}\`
|
||||
`;
|
||||
fs.writeFileSync(path.join(OUTPUT_DIR, `${template.id}.mdx`), mdxContent);
|
||||
}));
|
||||
}
|
||||
|
||||
// Generate index.mdx
|
||||
const indexContent = `---
|
||||
title: Introduction
|
||||
description: Browse our collection of ${templates.length}+ self-hosted open source templates
|
||||
---
|
||||
|
||||
# Templates
|
||||
|
||||
Welcome to the Dokploy Templates collection. We currently have **${templates.length}+** pre-configured templates that you can deploy with a single click.
|
||||
|
||||
Our templates cover a wide range of categories, including:
|
||||
- **Databases**: PostgreSQL, MySQL, MongoDB, Redis, and more.
|
||||
- **CMS**: WordPress, Ghost, Straple, Directus.
|
||||
- **Analytics**: Umami, Plausible, Ackee.
|
||||
- **Development Tools**: Gitea, Jenkins, Woodpecker CI.
|
||||
- **And much more!**
|
||||
|
||||
Explore the sidebar to find the template you need.
|
||||
|
||||
`;
|
||||
fs.writeFileSync(path.join(OUTPUT_DIR, 'index.mdx'), indexContent);
|
||||
|
||||
// Update meta.json with all template IDs
|
||||
const metaContent = {
|
||||
title: "Templates",
|
||||
description: `Browse our collection of ${templates.length}+ self-hosted open source templates`,
|
||||
icon: "LayoutGrid",
|
||||
root: true,
|
||||
pages: [
|
||||
"index",
|
||||
"---Templates---",
|
||||
...templates.map(t => t.id)
|
||||
]
|
||||
};
|
||||
fs.writeFileSync(path.join(OUTPUT_DIR, 'meta.json'), JSON.stringify(metaContent, null, 2));
|
||||
|
||||
console.log('✓ Successfully generated template documentation');
|
||||
} catch (error) {
|
||||
console.error('Error generating templates:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
generateTemplates();
|
||||
@@ -30,7 +30,7 @@ export default function Home() {
|
||||
<Pricing />
|
||||
</div>
|
||||
<Faqs />
|
||||
<Sponsors />
|
||||
{/* <Sponsors /> */}
|
||||
<CallToAction />
|
||||
</main>
|
||||
</div>
|
||||
|
||||
@@ -16,6 +16,18 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
changeFrequency: "monthly",
|
||||
priority: 0.8,
|
||||
},
|
||||
{
|
||||
url: "https://dokploy.com/terms-of-service",
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "yearly",
|
||||
priority: 0.5,
|
||||
},
|
||||
{
|
||||
url: "https://dokploy.com/privacy",
|
||||
lastModified: new Date(),
|
||||
changeFrequency: "yearly",
|
||||
priority: 0.5,
|
||||
},
|
||||
...posts.map((post) => ({
|
||||
url: `https://dokploy.com/blog/${post.slug}`,
|
||||
lastModified: new Date(post.published_at),
|
||||
|
||||
957
apps/website/app/terms-of-service/page.tsx
Normal file
957
apps/website/app/terms-of-service/page.tsx
Normal file
@@ -0,0 +1,957 @@
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Terms of Service",
|
||||
description:
|
||||
"Terms of Service for Dokploy's cloud and on-premise deployment platform.",
|
||||
};
|
||||
|
||||
export default function TermsOfServicePage() {
|
||||
return (
|
||||
<div className="mx-auto flex w-full max-w-4xl flex-col gap-4 px-4 py-12">
|
||||
<h1 className="mb-6 text-center text-3xl font-bold">
|
||||
Terms of Service
|
||||
</h1>
|
||||
<p className="text-center text-sm text-muted-foreground">
|
||||
Dokploy.com · Last Updated: January 2026
|
||||
</p>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">Overview</h2>
|
||||
<p>
|
||||
This website and platform are operated by Dokploy Technologies, Inc.
|
||||
("Dokploy", "we", "us", or
|
||||
"our"). Dokploy provides a deployment and hosting platform
|
||||
available as both a cloud-hosted service ("Cloud Services")
|
||||
and self-hosted software ("On-Premise Software"),
|
||||
collectively referred to as the "Services."
|
||||
</p>
|
||||
<p>
|
||||
By accessing or using our Services, you ("Customer",
|
||||
"you", or "your") agree to be bound by these Terms
|
||||
of Service ("Terms"), including our Privacy Policy and
|
||||
Acceptable Use Policy incorporated herein by reference. If you are
|
||||
entering into these Terms on behalf of an organization, you represent
|
||||
that you have authority to bind that organization.
|
||||
</p>
|
||||
<p>
|
||||
If you do not agree to these Terms, you may not access or use the
|
||||
Services.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 1 – Definitions
|
||||
</h2>
|
||||
<ul className="list-inside list-disc space-y-1">
|
||||
<li>
|
||||
<strong>"Authorized Users"</strong> means individuals
|
||||
authorized by Customer to access and use the Services under
|
||||
Customer's account.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Cloud Services"</strong> means the hosted version
|
||||
of the Dokploy platform provided and maintained by us, accessible
|
||||
via the internet.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Customer Data"</strong> means all data, content,
|
||||
code, applications, and materials uploaded, stored, or processed by
|
||||
Customer or its Authorized Users, or on behalf of Customer or its
|
||||
Authorized users, through the Services.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Documentation"</strong> means the user guides,
|
||||
technical documentation, and other materials we provide describing
|
||||
the functionality and use of the Services.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Downtime"</strong> means periods when the Cloud
|
||||
Services are unavailable, excluding Scheduled Maintenance and
|
||||
exclusions defined in the SLA.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"On-Premise Software"</strong> means the
|
||||
self-hosted version of the Dokploy platform that Customer installs
|
||||
and operates on its own infrastructure.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Scheduled Maintenance"</strong> means planned
|
||||
maintenance windows communicated at least [48/72] hours in advance.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Services"</strong> means the Cloud Services
|
||||
and/or On-Premise Software, as applicable to Customer's
|
||||
subscription.
|
||||
</li>
|
||||
<li>
|
||||
<strong>"Subscription Term"</strong> means the period
|
||||
during which Customer has paid for and is entitled to use the
|
||||
Services.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 2 – Services Description
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">2.1 Cloud Services</h3>
|
||||
<p>
|
||||
The Cloud Services provide a managed deployment and hosting platform
|
||||
accessible via the internet. We are responsible for infrastructure
|
||||
maintenance, security updates, and platform availability in accordance
|
||||
with our Service Level Agreement (Section 7). The services provided
|
||||
are permitted to be used by businesses and individuals over the age
|
||||
of 18 years.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">2.2 On-Premise Software</h3>
|
||||
<p>
|
||||
The On-Premise Software is licensed for installation on
|
||||
Customer's own infrastructure. Customer is solely responsible for
|
||||
the installation, configuration, maintenance, security, backups, and
|
||||
availability of the On-Premise Software and the infrastructure on
|
||||
which it operates. The Service Level Agreement (Section 7) does not
|
||||
apply to On-Premise Software. The services provided are permitted to
|
||||
be used by businesses and individuals over the age of 18 years.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">2.3 Modifications to Services</h3>
|
||||
<p>
|
||||
We reserve the right to modify, update, or discontinue features of the
|
||||
Services at any time. For material changes that negatively affect
|
||||
functionality, we will provide thirty [30] days' notice in
|
||||
writing prior to the implementation of the change. Such modifications
|
||||
shall not materially reduce the core functionality of the Services
|
||||
during an active Subscription Term.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 3 – Account Registration and Responsibilities
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">3.1 Eligibility</h3>
|
||||
<p>
|
||||
You must be at least 18 years of age and capable of forming a binding
|
||||
contract to use the Services. By using the Services, you represent
|
||||
that you meet these requirements.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">3.2 Account Security</h3>
|
||||
<p>
|
||||
You are responsible for maintaining the confidentiality of your
|
||||
account credentials and for all activities that occur under your
|
||||
account. You must immediately notify us of any unauthorized use of your
|
||||
account or any other breach of security. We are not liable for any
|
||||
loss arising from unauthorized use of your account.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">3.3 Account Information</h3>
|
||||
<p>
|
||||
You agree to provide accurate, current, and complete information
|
||||
during registration and to update such information to keep it
|
||||
accurate, current, and complete. We reserve the right to suspend or
|
||||
terminate accounts with inaccurate or incomplete information.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">Section 4 – License Grant</h2>
|
||||
<h3 className="text-xl font-medium">4.1 Cloud Services License</h3>
|
||||
<p>
|
||||
Subject to these Terms and payment of applicable fees, we grant you a
|
||||
limited, non-exclusive, non-transferable, non-sublicensable right to
|
||||
access and use the Cloud Services during the Subscription Term for
|
||||
your internal business purposes.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">4.2 On-Premise Software License</h3>
|
||||
<p>
|
||||
Subject to these Terms and payment of applicable fees, we grant you a
|
||||
limited, non-exclusive, non-transferable, non-sublicensable license to
|
||||
install and use the On-Premise Software on your own infrastructure
|
||||
during the Subscription Term. This license is limited to the number
|
||||
of instances, nodes, or users specified in your subscription plan.
|
||||
The On-Premise Software may be used solely for Customer's internal
|
||||
business purposes and may not be used to provide services to third
|
||||
parties, operate as a managed service, or otherwise make the
|
||||
On-Premise Software available to any third party without our prior
|
||||
written consent.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">4.3 Documentation License</h3>
|
||||
<p>
|
||||
We grant you a limited, non-exclusive license to use the
|
||||
Documentation solely in connection with your authorized use of the
|
||||
Services.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">4.4 Restrictions</h3>
|
||||
<p>
|
||||
You shall not: (a) sublicense, sell, resell, transfer, assign, or
|
||||
distribute the Services; (b) modify or make derivative works based
|
||||
upon the Services; (c) reverse engineer, disassemble, or decompile the
|
||||
Services or attempt to discover the source code; (d) access the
|
||||
Services to build a competitive product or service; (e) copy any
|
||||
features, functions, or graphics of the Services; or (f) use the
|
||||
Services in violation of applicable laws.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">4.5 Usage Verification</h3>
|
||||
<p>
|
||||
We may, upon reasonable prior notice and not more than once annually,
|
||||
audit Customer's use of the On-Premise Software solely to verify
|
||||
compliance with the license scope and usage limits. Any such audit
|
||||
shall be conducted in a manner that does not unreasonably interfere
|
||||
with Customer's operations.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 5 – Acceptable Use Policy
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">5.1 General Prohibitions</h3>
|
||||
<p>
|
||||
You agree not to use the Services to: (a) violate any applicable law,
|
||||
regulation, or third-party rights; (b) upload, transmit, or store any
|
||||
content that is unlawful, harmful, threatening, abusive, defamatory,
|
||||
obscene, or otherwise objectionable; (c) infringe any intellectual
|
||||
property rights; (d) transmit viruses, malware, or other malicious
|
||||
code; (e) interfere with or disrupt the integrity or performance of
|
||||
the Services; (f) attempt to gain unauthorized access to the Services
|
||||
or related systems; (g) harass, abuse, or harm another person or
|
||||
entity; (h) collect personal information without proper consent; (i)
|
||||
access any computer systems without authorization or attempt to
|
||||
penetrate or disable any security system; or (j) issue fraudulent
|
||||
offers to sell or buy products, services, or investments or otherwise
|
||||
engage in fraud.
|
||||
</p>
|
||||
<p>
|
||||
If you discover a violation of the AUP, you must report it within 24
|
||||
(twenty-four) hours of the discovery to <insert contact email>
|
||||
with as much information as you have including, but not limited to,
|
||||
the date and time of the violation and any identifying information
|
||||
regarding the violator including e-mail or IP address, if available.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">5.2 Hosting-Specific Prohibitions</h3>
|
||||
<p>The following activities are strictly prohibited on our platform:</p>
|
||||
<ul className="list-inside list-disc space-y-1">
|
||||
<li>
|
||||
(a) Cryptocurrency mining or any resource-intensive computational
|
||||
activities not directly related to your hosted applications;
|
||||
</li>
|
||||
<li>
|
||||
(b) Hosting, distributing, or linking to malware, phishing sites,
|
||||
botnets, or any malicious software;
|
||||
</li>
|
||||
<li>
|
||||
(c) Hosting content that exploits minors in any way, including
|
||||
child sexual abuse material (CSAM);
|
||||
</li>
|
||||
<li>
|
||||
(d) Operating open proxies, anonymizers, or services designed to
|
||||
obscure network traffic origins;
|
||||
</li>
|
||||
<li>(e) Launching or facilitating denial-of-service (DoS/DDoS) attacks;</li>
|
||||
<li>
|
||||
(f) Sending spam, unsolicited bulk messages, or phishing
|
||||
communications;
|
||||
</li>
|
||||
<li>
|
||||
(g) Circumventing or attempting to circumvent resource limits,
|
||||
quotas, or usage restrictions;
|
||||
</li>
|
||||
<li>
|
||||
(h) Hosting content or applications that violate export control
|
||||
laws or sanctions.
|
||||
</li>
|
||||
</ul>
|
||||
<h3 className="text-xl font-medium">5.3 Resource Usage</h3>
|
||||
<p>
|
||||
Your use of computational resources must be consistent with your
|
||||
subscription plan. We reserve the right to throttle, suspend, or
|
||||
terminate access if your usage materially exceeds normal patterns or
|
||||
negatively impacts other customers.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">5.4 Enforcement</h3>
|
||||
<p>
|
||||
Violation of this Acceptable Use policy (hereinafter "AUP")
|
||||
may lead to suspension or termination of your account and legal
|
||||
action. We reserve the right to take any other remedial action
|
||||
including reporting illegal activities to appropriate law enforcement
|
||||
authorities. You may be required to pay for the costs of
|
||||
investigation and remedial action related to AUP violations.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 6 – Fees and Payment
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">6.1 Subscription Fees</h3>
|
||||
<p>
|
||||
You agree to pay all fees specified in your subscription plan or Order
|
||||
Form. Fees are charged in advance on a monthly or annual basis as
|
||||
stated in the subscription plan or Order Form and are non-refundable
|
||||
except as expressly provided in these Terms.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">6.2 Payment Terms</h3>
|
||||
<p>
|
||||
Payment is due upon invoice or at the start of each billing period.
|
||||
You authorize us to charge your designated payment method for all
|
||||
applicable fees. If payment fails, we may suspend access to the
|
||||
Services until payment is received.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">6.3 Taxes</h3>
|
||||
<p>
|
||||
All fees are exclusive of taxes. You are responsible for paying all
|
||||
applicable taxes, except for taxes based on our net income. If we are
|
||||
required to collect or pay taxes, those taxes will be invoiced to you.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">6.4 Price Changes</h3>
|
||||
<p>
|
||||
We may change our pricing at any time. Price changes will take effect
|
||||
at the start of your next Subscription Term following thirty [30]
|
||||
days' notice. Continued use after price changes constitutes
|
||||
acceptance of the new pricing.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">6.5 Refunds</h3>
|
||||
<p>
|
||||
All fees paid pursuant to these Terms of Service are non-refundable
|
||||
except as expressly stated in these Terms or required by applicable
|
||||
law. Service Credits under Section 7.3 of these Terms are
|
||||
Customer's sole and exclusive remedy for any failure to meet
|
||||
uptime commitments and are not cash refunds.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 7 – Service Level Agreement (Cloud Services Only)
|
||||
</h2>
|
||||
<p>
|
||||
This Section 7 applies only to Cloud Services. On-Premise Software
|
||||
customers are solely responsible for availability and performance of
|
||||
their self-hosted installations.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">7.1 Uptime Commitment</h3>
|
||||
<p>
|
||||
We commit to [99.9%] monthly uptime for the Cloud Services, measured
|
||||
as: ((Total Minutes in Month - Downtime Minutes) / Total Minutes in
|
||||
Month) × 100.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">7.2 Exclusions</h3>
|
||||
<p>
|
||||
The following are excluded from Downtime calculations: (a) Scheduled
|
||||
Maintenance; (b) outages caused by factors outside our reasonable
|
||||
control, including force majeure events, internet service provider
|
||||
failures, or third-party service outages; (c) outages resulting from
|
||||
Customer actions or inactions, including misconfiguration; (d)
|
||||
outages during beta or preview features.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">7.3 Service Credits</h3>
|
||||
<p>
|
||||
If we fail to meet our uptime commitment, you may request service
|
||||
credits as follows:
|
||||
</p>
|
||||
<ul className="list-inside list-disc space-y-1">
|
||||
<li>99.0% - 99.9% uptime: [10%] credit of monthly fees</li>
|
||||
<li>95.0% - 99.0% uptime: [25%] credit of monthly fees</li>
|
||||
<li>Below 95.0% uptime: [50%] credit of monthly fees</li>
|
||||
</ul>
|
||||
<p>
|
||||
Credits must be requested within 30 (thirty) days of the incident.
|
||||
Credits are applied to future invoices and do not exceed one
|
||||
month's fees. Credits are your sole and exclusive remedy for
|
||||
service level failures.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 8 – Support and Maintenance
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">8.1 Cloud Services Support</h3>
|
||||
<p>
|
||||
We provide technical support for Cloud Services via{" "}
|
||||
<a
|
||||
href="mailto:support@dokploy.com"
|
||||
className="text-primary underline hover:no-underline"
|
||||
>
|
||||
support@dokploy.com
|
||||
</a>{" "}
|
||||
or chat during Monday-Friday, 9am-6pm EST. Response times vary by plan
|
||||
tier as specified in your subscription agreement.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">8.2 On-Premise Software Support</h3>
|
||||
<p>
|
||||
Support for On-Premise Software is limited to software defects and
|
||||
installation guidance. We do not provide support for Customer's
|
||||
infrastructure, third-party integrations, or issues arising from
|
||||
Customer modifications to the software unless otherwise agreed upon
|
||||
with Dokploy.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">8.3 Updates and Upgrades</h3>
|
||||
<p>
|
||||
For Cloud Services, we apply updates and patches automatically. For
|
||||
On-Premise Software, we make updates available for download, and
|
||||
Customer is responsible for applying them. Major version upgrades may
|
||||
require additional fees as specified in your subscription.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">Section 9 – Customer Data</h2>
|
||||
<h3 className="text-xl font-medium">9.1 Ownership</h3>
|
||||
<p>
|
||||
You retain all rights, title, and interest in and to your Customer
|
||||
Data. Our use and possession thereof is solely on Customer's
|
||||
behalf and we claim no ownership over Customer Data.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.2 License to Customer Data</h3>
|
||||
<p>
|
||||
You grant us a limited, non-exclusive license to access, use, and
|
||||
process Customer Data solely as necessary to provide the Services,
|
||||
comply with the law, and enforce these Terms during the term defined
|
||||
in the Subscription plan. We may process Customer Data and usage
|
||||
solely to operate, maintain, support, and improve the Services,
|
||||
including for internal usage analytics, performance monitoring, and
|
||||
troubleshooting. Any such processing will be performed in accordance
|
||||
with the DPA incorporated herein.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.3 Data Security (Cloud Services)</h3>
|
||||
<p>
|
||||
We implement industry-standard security measures to protect Customer
|
||||
Data in our Cloud Services, including encryption in transit and at
|
||||
rest, access controls, and regular security assessments. Our security
|
||||
practices are described in our Security Documentation available at{" "}
|
||||
<a
|
||||
href="https://docs.dokploy.com/docs/core/remote-servers/security"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-primary underline hover:no-underline"
|
||||
>
|
||||
docs.dokploy.com/docs/core/remote-servers/security
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.4 Data Security (On-Premise Software)</h3>
|
||||
<p>
|
||||
For On-Premise Software, Customer is solely responsible for
|
||||
implementing appropriate security measures, including encryption,
|
||||
access controls, network security, and compliance with applicable data
|
||||
protection regulations.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.5 Backups</h3>
|
||||
<p>
|
||||
For Cloud Services, we perform daily backups and retain them for one
|
||||
hundred (100) days. For On-Premise Software, Customer is solely
|
||||
responsible for implementing backup procedures.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.6 Data Portability</h3>
|
||||
<p>
|
||||
Upon termination, you may export your Customer Data for thirty (30)
|
||||
days following termination. After this period, we may delete your
|
||||
Customer Data. We are not obligated to retain Customer Data after the
|
||||
export period.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">9.7 Data Processing</h3>
|
||||
<p>
|
||||
Our processing of personal data is governed by our Privacy Policy and,
|
||||
where applicable, the Data Processing Agreement (hereinafter
|
||||
"DPA") attached hereto as Appendix I and is incorporated by
|
||||
reference. The DPA applies only to the extent that the Services
|
||||
involve the processing of Personal Data on behalf of the customer. In
|
||||
the event of a conflict between these terms and the DPA, the DPA
|
||||
shall prevail solely with respect to the Processing of Personal Data.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 10 – Intellectual Property
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">10.1 Our Intellectual Property</h3>
|
||||
<p>
|
||||
The Services, including all software, designs, text, graphics, and
|
||||
other content (excluding Customer Data), are owned by us or our
|
||||
licensors and are protected by intellectual property laws. These Terms
|
||||
do not grant you any rights to our trademarks, service marks, or
|
||||
logos.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">10.2 Feedback</h3>
|
||||
<p>
|
||||
If you provide suggestions, ideas, or feedback about the Services
|
||||
("Feedback"), you grant us a perpetual, irrevocable,
|
||||
royalty-free, worldwide license to use, modify, and incorporate such
|
||||
Feedback into the Services without obligation to you.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">10.3 Customer Applications</h3>
|
||||
<p>
|
||||
You retain all intellectual property rights in applications, code, and
|
||||
content you develop or deploy using the Services.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 11 – Confidentiality
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">11.1 Definition</h3>
|
||||
<p>
|
||||
"Confidential Information" means any non-public information
|
||||
disclosed by one party to the other that is designated as
|
||||
confidential or that a reasonable person would understand to be
|
||||
confidential, including pricing, business plans, technical data, and
|
||||
Customer Data.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">11.2 Obligations</h3>
|
||||
<p>
|
||||
Each party agrees to: (a) protect the other party's Confidential
|
||||
Information using at least the same degree of care it uses to protect
|
||||
its own confidential information of similar nature but with no less
|
||||
than reasonable care; (b) use Confidential Information only for
|
||||
purposes directly related to performing under these Terms and as
|
||||
described in the Subscription Plan or Order Form; and (c) not disclose
|
||||
Confidential Information to any third party except as permitted under
|
||||
these Terms or with the prior written consent of the disclosing party
|
||||
and in accordance with the disclosing party's privacy policy.
|
||||
</p>
|
||||
<p>
|
||||
Disclosure required by law: Recipient may disclose Confidential
|
||||
Information to the extent required by applicable law or a valid Court
|
||||
Order provided that the recipient: (a) notifies the disclosing party
|
||||
immediately upon receiving notice of such a law or Order so that the
|
||||
disclosing party may seek a protective order or other remedies; and
|
||||
(b) reasonably cooperates with any efforts by the disclosing party to
|
||||
limit or protect the disclosure.
|
||||
</p>
|
||||
<p>
|
||||
Recipient shall promptly notify the disclosing party upon becoming
|
||||
aware of any authorized access, use, or disclosure of Confidential
|
||||
Information.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">11.3 Exceptions</h3>
|
||||
<p>
|
||||
Confidentiality obligations do not apply to information that: (a) is
|
||||
or becomes publicly available without breach; (b) was known prior to
|
||||
disclosure; (c) is received from a third party without
|
||||
confidentiality restrictions; or (d) is independently developed
|
||||
without use of Confidential Information.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 12 – Third-Party Services
|
||||
</h2>
|
||||
<p>
|
||||
The Services may integrate with or rely upon third-party services,
|
||||
including container registries, cloud providers, and external APIs.
|
||||
Your use of third-party services is subject to their respective
|
||||
terms and conditions. We are not responsible for the availability,
|
||||
accuracy, or content of third-party services, and we make no
|
||||
warranties regarding them.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 13 – Term and Termination
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">13.1 Term</h3>
|
||||
<p>
|
||||
These Terms commence upon your first use of the Services and continue
|
||||
until terminated. Subscription Terms automatically renew for
|
||||
successive periods of the same duration unless either party provides
|
||||
written notice of non-renewal at least thirty [30] days before the
|
||||
end of the current term.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">13.2 Termination for Convenience</h3>
|
||||
<p>
|
||||
You may terminate your subscription at any time and without cause by
|
||||
providing thirty (30) days written notice. If you terminate for
|
||||
convenience under this Section, you will remain liable for the full
|
||||
balance of fees due for the remainder of the Term of the Agreement.
|
||||
No refunds are provided for unused portions of prepaid fees except as
|
||||
expressly stated in Section 6.5.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">13.3 Termination for Cause</h3>
|
||||
<p>
|
||||
Either party may terminate this Agreement for the other's
|
||||
material breach by written notice specifying, in detail, the nature
|
||||
of the breach. The breaching party will have thirty (30) days from the
|
||||
date the party receives notice of the breach to cure the breach. If
|
||||
the breaching party fails to cure the breach within thirty (30) days,
|
||||
the other party may terminate at the expiration of the cure period.
|
||||
</p>
|
||||
<p>
|
||||
Either party may terminate this Agreement without advance notice in
|
||||
the event that the other party becomes insolvent, files for
|
||||
bankruptcy, or ceases business operations.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">13.4 Suspension</h3>
|
||||
<p>
|
||||
We may suspend your access to the Services immediately without notice
|
||||
if: (a) you violate the Acceptable Use Policy; (b) your use poses a
|
||||
security risk to the Services or other customers; (c) you fail to pay
|
||||
fees when due; or (d) we are required to do so by law.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">13.5 Effect of Termination</h3>
|
||||
<p>
|
||||
Upon termination: (a) your license to use the Services immediately
|
||||
terminates; (b) you must cease all use of the Services and uninstall
|
||||
any On-Premise Software and delete all copies in its possession or
|
||||
control; (c) you may export Customer Data for thirty [30] days as
|
||||
provided in Section 9.6; (d) each party must return or destroy the
|
||||
other party's Confidential Information. Sections that by their
|
||||
nature should survive termination shall survive, including Sections
|
||||
9, 10, 11, 14, 15, and 16.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 14 – Warranties and Disclaimers
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">14.1 Our Warranties</h3>
|
||||
<p>
|
||||
We warrant that: (a) we have the authority to enter into these Terms;
|
||||
(b) the Services will perform materially in accordance with the
|
||||
Documentation; and (c) we will not knowingly introduce viruses or
|
||||
malicious code into the Services.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">14.2 Disclaimer</h3>
|
||||
<p className="uppercase">
|
||||
Except as expressly provided in Section 14.1, the Services are
|
||||
provided "AS IS" and "AS AVAILABLE" with no
|
||||
representation or warranty of any kind. We disclaim all warranties,
|
||||
express or implied, including warranties of merchantability, fitness
|
||||
for a particular purpose, non-infringement of intellectual property
|
||||
rights, and any warranties arising from course of dealing or usage of
|
||||
trade. We do not warrant that the Services will be uninterrupted,
|
||||
error-free, or completely secure. Without limiting the generality of
|
||||
the foregoing, we have no obligation to indemnify, defend, or hold
|
||||
harmless Customer, including without limitation against claims related
|
||||
to product liability or infringement of intellectual property
|
||||
rights, unless this Agreement specifically provides for such an
|
||||
indemnity.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">14.3 Beta Features</h3>
|
||||
<p>
|
||||
Beta, preview, or experimental features are provided "as
|
||||
is" without any warranty. We may modify or discontinue beta
|
||||
features at any time without notice.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 15 – Limitation of Liability
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">15.1 Exclusion of Damages</h3>
|
||||
<p className="uppercase">
|
||||
To the maximum extent permitted by law, neither party shall be liable
|
||||
for any indirect, incidental, special, consequential, or punitive
|
||||
damages, including lost profits, lost revenue, lost data, or business
|
||||
interruption, regardless of the theory of liability and even if
|
||||
advised of the possibility of such damages.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">15.2 Liability Cap</h3>
|
||||
<p className="uppercase">
|
||||
Our total cumulative liability under these Terms shall not exceed the
|
||||
greater of: (A) the amounts paid by you to us in the twelve [12]
|
||||
months preceding the claim; or (B) the value of the Agreement for the
|
||||
preceding twelve (12) months. This limitation applies regardless of
|
||||
the form of action, whether in contract, tort, strict liability, or
|
||||
otherwise.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">15.3 Exceptions</h3>
|
||||
<p>
|
||||
The limitations in this Section 15 do not apply to: (a) your payment
|
||||
obligations; (b) either party's indemnification obligations; (c)
|
||||
breaches of confidentiality; (d) your violation of our intellectual
|
||||
property rights; or (e) claims arising from gross negligence or
|
||||
willful misconduct.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 16 – Indemnification
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">16.1 Your Indemnification</h3>
|
||||
<p>
|
||||
You agree to indemnify, defend, and hold harmless, at your own cost,
|
||||
Dokploy and its officers, directors, employees, and agents from any
|
||||
claims, damages, losses, and expenses (including reasonable
|
||||
attorneys' fees) arising from: (a) your use of the Services; (b)
|
||||
your Customer Data; (c) your violation of these Terms; (d) your
|
||||
violation of any third-party rights; or (e) applications or content
|
||||
you deploy using the Services.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">16.2 Our Indemnification</h3>
|
||||
<p>
|
||||
We will indemnify and defend you, at our own cost, from third-party
|
||||
claims alleging that your authorized use of the Services infringes a
|
||||
third party's intellectual property rights, provided you: (a)
|
||||
promptly notify us of the claim; (b) give us sole control of the
|
||||
defense and settlement; and (c) provide reasonable cooperation.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 17 – Governing Law and Dispute Resolution
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">17.1 Governing Law</h3>
|
||||
<p>
|
||||
These Terms shall be governed by and construed in accordance with
|
||||
the laws of the State of Delaware, United States, without regard to
|
||||
its conflict of law principles.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">17.2 Dispute Resolution</h3>
|
||||
<p>
|
||||
[OPTION 1 - ARBITRATION: Any dispute arising from these Terms shall
|
||||
be resolved by binding arbitration administered by AAA in accordance
|
||||
with its Commercial Arbitration Rules. The arbitration shall be
|
||||
conducted in the State of Delaware. The arbitrator's decision
|
||||
shall be final and binding.]
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">17.3 Waiver of Jury Trial</h3>
|
||||
<p className="uppercase">
|
||||
Each party waives its right to a jury trial for any dispute arising
|
||||
from these Terms.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 19 – Changes to Terms
|
||||
</h2>
|
||||
<p>
|
||||
We may update these Terms from time to time. For material changes, we
|
||||
will provide at least thirty [30] days' notice via email or
|
||||
through the Services. Your continued use of the Services after the
|
||||
effective date of changes constitutes acceptance of the updated Terms.
|
||||
If you do not agree to the changes, you may terminate your subscription
|
||||
before the changes take effect.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 20 – General Provisions
|
||||
</h2>
|
||||
<h3 className="text-xl font-medium">20.1 Entire Agreement</h3>
|
||||
<p>
|
||||
This Agreement is the parties' entire agreement regarding its
|
||||
subject matter and supersedes any prior or contemporaneous agreements
|
||||
regarding its subject matter. In this Agreement, headings are for
|
||||
convenience only and "including" and similar terms are to
|
||||
be construed without limitation. Excluding Orders, terms in business
|
||||
forms, purchase orders or quotes used by either party will not amend
|
||||
or modify this Agreement; any such documents are for administrative
|
||||
purposes only. This Agreement may be executed in counterparts
|
||||
(including electronic copies and PDFs), each of which is deemed an
|
||||
original and which together form one and the same Agreement.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">20.2 Waivers and Severability</h3>
|
||||
<p>
|
||||
Waivers must be signed by the waiving party's authorized
|
||||
representative and cannot be implied from conduct. If any provision of
|
||||
this Agreement is held invalid, illegal or unenforceable, it will be
|
||||
limited to the minimum extent necessary so the rest of this Agreement
|
||||
remains in effect.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">20.4 Assignment</h3>
|
||||
<p>
|
||||
Neither party may assign this Agreement without the prior consent of
|
||||
the other party, except that either party may assign this Agreement,
|
||||
with notice to the other party, in connection with the assigning
|
||||
party's merger, reorganization, acquisition or other transfer
|
||||
of all or substantially all of its assets or voting securities. Any
|
||||
non-permitted assignment is void. This Agreement will bind and inure
|
||||
to the benefit of each party's permitted successors and assigns.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">20.5 Notices</h3>
|
||||
<p>
|
||||
A. Except as set out in this Agreement, notices, requests and approvals
|
||||
under this Agreement must be in writing to the addresses on the Cover
|
||||
Page and will be deemed given: (1) upon receipt if by personal
|
||||
delivery, (2) upon receipt if by certified or registered U.S. mail
|
||||
(return receipt requested), (3) one day after dispatch if by a
|
||||
commercial overnight delivery or (4) upon delivery if by email.
|
||||
Either party may update its address with notice to the other.
|
||||
</p>
|
||||
<p>B. Provider may also send operational notices through the Cloud Service.</p>
|
||||
<h3 className="text-xl font-medium">20.6 Force Majeure</h3>
|
||||
<p>
|
||||
Neither party is liable for a delay or failure to perform this
|
||||
Agreement due to a Force Majeure. If a Force Majeure materially
|
||||
adversely affects the Cloud Service for 15 or more consecutive days,
|
||||
either party may terminate the affected Order(s) upon notice to the
|
||||
other and Provider will refund to Customer any pre-paid, unused fees
|
||||
for the terminated portion of the Subscription Term. However, this
|
||||
Section does not limit Customer's obligations to pay fees owed.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">20.7 Independent Contractors</h3>
|
||||
<p>
|
||||
The parties are independent contractors. Nothing in these Terms
|
||||
creates a partnership, joint venture, agency, or employment
|
||||
relationship.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2">
|
||||
<h2 className="mb-2 text-2xl font-semibold">
|
||||
Section 21 – Contact Information
|
||||
</h2>
|
||||
<p>
|
||||
If you have questions about these Terms of Service, please contact us
|
||||
at:
|
||||
</p>
|
||||
<p className="font-medium">Dokploy Technologies, Inc.</p>
|
||||
<p>2912 Steiner St Unit 4
|
||||
San Francisco, CA 94123</p>
|
||||
<p>
|
||||
Email:{" "}
|
||||
<a
|
||||
href="mailto:contact@dokploy.com"
|
||||
className="text-primary underline hover:no-underline"
|
||||
>
|
||||
contact@dokploy.com
|
||||
</a>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section className="flex flex-col gap-2 border-t pt-8">
|
||||
<h2 className="mb-4 text-2xl font-semibold">
|
||||
Appendix I - Data Processing Addendum
|
||||
</h2>
|
||||
<p>
|
||||
This Data Protection Addendum ("DPA") is attached to and
|
||||
incorporated into the Terms of Service. Customer and Provider enter
|
||||
into this DPA by agreeing to the Terms of Service. Capitalized terms
|
||||
not defined in this DPA are defined in the Terms of Service or DPA
|
||||
Setup Page.
|
||||
</p>
|
||||
<h3 className="text-xl font-medium">Definitions</h3>
|
||||
<ul className="list-inside list-disc space-y-1">
|
||||
<li>
|
||||
"Agreement" means the Agreement between Customer and
|
||||
Provider incorporating the Bonterms Cloud Terms which is specified
|
||||
on the DPA Setup Page.
|
||||
</li>
|
||||
<li>
|
||||
"Audit" and "Audit Parameters" are defined in
|
||||
Section 9.3 below.
|
||||
</li>
|
||||
<li>"Audit Report" is defined in Section 9.2 below.</li>
|
||||
<li>
|
||||
"Controller" means the natural or legal person, public
|
||||
authority, agency or other body which, alone or jointly with
|
||||
others, determines the purposes and means of Processing of
|
||||
Personal Data.
|
||||
</li>
|
||||
<li>"Customer Instructions" is defined in Section 3.1 below.</li>
|
||||
<li>
|
||||
"Customer Personal Data" means Personal Data in Customer
|
||||
Data (as defined in the Agreement).
|
||||
</li>
|
||||
<li>
|
||||
"Data Protection Laws" means all laws and regulations
|
||||
applicable to the Processing of Customer Personal Data under the
|
||||
Agreement, including, as applicable: (i) the California Consumer
|
||||
Privacy Act, as amended by the California Privacy Rights Act, and
|
||||
any binding regulations promulgated thereunder ("CCPA"),
|
||||
(ii) the General Data Protection Regulation (Regulation (EU)
|
||||
2016/679) ("EU GDPR" or "GDPR"), (iii) the
|
||||
Swiss Federal Act on Data Protection ("FADP"), (iv) the EU
|
||||
GDPR as it forms part of the law of England and Wales by virtue of
|
||||
section 3 of the European Union (Withdrawal) Act 2018 (the "UK
|
||||
GDPR") and (v) the UK Data Protection Act 2018; in each case,
|
||||
as updated, amended or replaced from time to time.
|
||||
</li>
|
||||
<li>
|
||||
"Data Subject" means the identified or identifiable
|
||||
natural person to whom Customer Personal Data relates.
|
||||
</li>
|
||||
<li>
|
||||
"DPA Effective Date" is specified on the DPA Setup Page.
|
||||
</li>
|
||||
<li>
|
||||
"DPA Setup Page" means a separate document executed by
|
||||
Customer and Provider which causes this DPA to become an
|
||||
Attachment to their Agreement.
|
||||
</li>
|
||||
<li>"EEA" means European Economic Area.</li>
|
||||
<li>
|
||||
"Key Terms" means Agreement, DPA Effective Date and
|
||||
Subprocessor List as specified by the parties on the DPA Setup
|
||||
Page.
|
||||
</li>
|
||||
<li>
|
||||
"Personal Data" means information about an identified or
|
||||
identifiable natural person or which otherwise constitutes
|
||||
"personal data", "personal information",
|
||||
"personally identifiable information" or similar terms
|
||||
as defined in Data Protection Laws.
|
||||
</li>
|
||||
<li>
|
||||
"Processing" and inflections thereof refer to any
|
||||
operation or set of operations that is performed on Personal Data
|
||||
or on sets of Personal Data, whether or not by automated means.
|
||||
</li>
|
||||
<li>
|
||||
"Processor" means a natural or legal person, public
|
||||
authority, agency or other body which Processes Personal Data on
|
||||
behalf of the Controller.
|
||||
</li>
|
||||
<li>
|
||||
"Restricted Transfer" means: (i) where EU GDPR applies, a
|
||||
transfer of Customer Personal Data from the EEA to a country
|
||||
outside the EEA that is not subject to an adequacy determination,
|
||||
(ii) where UK GDPR applies, a transfer of Customer Personal Data
|
||||
from the United Kingdom to any other country that is not subject to
|
||||
an adequacy determination or (iii) where FADP applies, a transfer
|
||||
of Customer Personal Data from Switzerland to any other country
|
||||
that is not subject to an adequacy determination.
|
||||
</li>
|
||||
<li>
|
||||
"Schedules" means one or more schedules incorporated by
|
||||
the parties in their DPA Setup Page. The default Schedules for this
|
||||
DPA are: Schedule 1 Subject Matter and Details of Processing;
|
||||
Schedule 2 Technical and Organizational Measures; Schedule 3
|
||||
Cross-Border Transfer Mechanisms; Schedule 4 Region-Specific Term.
|
||||
</li>
|
||||
<li>
|
||||
"Security Incident" means any breach of security that
|
||||
leads to the accidental or unlawful destruction, loss, alteration,
|
||||
unauthorized disclosure of, or access to, Customer Personal Data
|
||||
being Processed by Provider.
|
||||
</li>
|
||||
<li>"Specified Notice Period" is 48 hours.</li>
|
||||
<li>
|
||||
"Subprocessor" means any third party authorized by
|
||||
Provider to Process any Customer Personal Data.
|
||||
</li>
|
||||
<li>
|
||||
"Subprocessor List" means the list of Provider's
|
||||
Subprocessors as identified or linked to on the DPA Setup Page.
|
||||
</li>
|
||||
</ul>
|
||||
<p className="mt-4">
|
||||
The full DPA continues with sections on Scope and Duration, Processing
|
||||
of Personal Data, Confidentiality, Compliance with Laws, Subprocessors,
|
||||
Security, Data Subject Requests, Data Return or Deletion, Audits, and
|
||||
Cross-Border Transfers/Region-Specific Terms. For the complete
|
||||
legal text of the Data Processing Addendum, please contact{" "}
|
||||
<a
|
||||
href="mailto:support@dokploy.com"
|
||||
className="text-primary underline hover:no-underline"
|
||||
>
|
||||
support@dokploy.com
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -47,6 +47,7 @@ export function Footer() {
|
||||
>
|
||||
Docs
|
||||
</NavLink>
|
||||
<NavLink href="/terms-of-service">Terms of Service</NavLink>
|
||||
<NavLink href="/privacy">Privacy Policy</NavLink>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"clsx": "^2.1.0",
|
||||
"framer-motion": "^11.3.19",
|
||||
"lucide-react": "0.364.0",
|
||||
"next": "16.0.10",
|
||||
"next": "16.1.5",
|
||||
"react": "^19.2.0",
|
||||
"react-dom": "^19.2.0",
|
||||
"react-ga4": "^2.1.0",
|
||||
|
||||
@@ -261,7 +261,11 @@ install_dokploy() {
|
||||
# Installation
|
||||
# Set RELEASE_TAG environment variable for canary/feature versions
|
||||
release_tag_env=""
|
||||
if [ "$VERSION_TAG" != "latest" ]; then
|
||||
if [[ "$VERSION_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
|
||||
# Specific version (v0.26.6, v0.26.7, etc.) → latest
|
||||
release_tag_env="-e RELEASE_TAG=latest"
|
||||
elif [ "$VERSION_TAG" != "latest" ]; then
|
||||
# canary, feature/*, etc. → use the tag as-is
|
||||
release_tag_env="-e RELEASE_TAG=$VERSION_TAG"
|
||||
fi
|
||||
|
||||
|
||||
141
pnpm-lock.yaml
generated
141
pnpm-lock.yaml
generated
@@ -32,7 +32,7 @@ importers:
|
||||
dependencies:
|
||||
'@next/third-parties':
|
||||
specifier: 16.0.7
|
||||
version: 16.0.7(next@16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
version: 16.0.7(next@16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
'@radix-ui/react-dropdown-menu':
|
||||
specifier: ^2.1.16
|
||||
version: 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
@@ -44,22 +44,22 @@ importers:
|
||||
version: 2.1.1
|
||||
fumadocs-core:
|
||||
specifier: 16.2.3
|
||||
version: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
version: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
fumadocs-mdx:
|
||||
specifier: 14.1.0
|
||||
version: 14.1.0(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
version: 14.1.0(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
fumadocs-openapi:
|
||||
specifier: 10.1.1
|
||||
version: 10.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13))(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
version: 10.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13))(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
fumadocs-ui:
|
||||
specifier: 16.2.3
|
||||
version: 16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13)
|
||||
version: 16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13)
|
||||
lucide-react:
|
||||
specifier: ^0.552.0
|
||||
version: 0.552.0(react@19.2.1)
|
||||
next:
|
||||
specifier: 16.0.10
|
||||
version: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
specifier: 16.1.5
|
||||
version: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
react:
|
||||
specifier: ^19.2.0
|
||||
version: 19.2.1
|
||||
@@ -111,7 +111,7 @@ importers:
|
||||
version: 0.2.1(tailwindcss@3.4.7)
|
||||
'@next/third-parties':
|
||||
specifier: 16.0.7
|
||||
version: 16.0.7(next@16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
version: 16.0.7(next@16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
|
||||
'@prettier/plugin-xml':
|
||||
specifier: ^3.4.1
|
||||
version: 3.4.1(prettier@3.3.3)
|
||||
@@ -176,8 +176,8 @@ importers:
|
||||
specifier: 0.364.0
|
||||
version: 0.364.0(react@19.2.1)
|
||||
next:
|
||||
specifier: 16.0.10
|
||||
version: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
specifier: 16.1.5
|
||||
version: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
prettier:
|
||||
specifier: ^3.3.3
|
||||
version: 3.3.3
|
||||
@@ -1027,53 +1027,53 @@ packages:
|
||||
'@mixmark-io/domino@2.2.0':
|
||||
resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==}
|
||||
|
||||
'@next/env@16.0.10':
|
||||
resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==}
|
||||
'@next/env@16.1.5':
|
||||
resolution: {integrity: sha512-CRSCPJiSZoi4Pn69RYBDI9R7YK2g59vLexPQFXY0eyw+ILevIenCywzg+DqmlBik9zszEnw2HLFOUlLAcJbL7g==}
|
||||
|
||||
'@next/swc-darwin-arm64@16.0.10':
|
||||
resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==}
|
||||
'@next/swc-darwin-arm64@16.1.5':
|
||||
resolution: {integrity: sha512-eK7Wdm3Hjy/SCL7TevlH0C9chrpeOYWx2iR7guJDaz4zEQKWcS1IMVfMb9UKBFMg1XgzcPTYPIp1Vcpukkjg6Q==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-darwin-x64@16.0.10':
|
||||
resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==}
|
||||
'@next/swc-darwin-x64@16.1.5':
|
||||
resolution: {integrity: sha512-foQscSHD1dCuxBmGkbIr6ScAUF6pRoDZP6czajyvmXPAOFNnQUJu2Os1SGELODjKp/ULa4fulnBWoHV3XdPLfA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-linux-arm64-gnu@16.0.10':
|
||||
resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==}
|
||||
'@next/swc-linux-arm64-gnu@16.1.5':
|
||||
resolution: {integrity: sha512-qNIb42o3C02ccIeSeKjacF3HXotGsxh/FMk/rSRmCzOVMtoWH88odn2uZqF8RLsSUWHcAqTgYmPD3pZ03L9ZAA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-arm64-musl@16.0.10':
|
||||
resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==}
|
||||
'@next/swc-linux-arm64-musl@16.1.5':
|
||||
resolution: {integrity: sha512-U+kBxGUY1xMAzDTXmuVMfhaWUZQAwzRaHJ/I6ihtR5SbTVUEaDRiEU9YMjy1obBWpdOBuk1bcm+tsmifYSygfw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-gnu@16.0.10':
|
||||
resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==}
|
||||
'@next/swc-linux-x64-gnu@16.1.5':
|
||||
resolution: {integrity: sha512-gq2UtoCpN7Ke/7tKaU7i/1L7eFLfhMbXjNghSv0MVGF1dmuoaPeEVDvkDuO/9LVa44h5gqpWeJ4mRRznjDv7LA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-musl@16.0.10':
|
||||
resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==}
|
||||
'@next/swc-linux-x64-musl@16.1.5':
|
||||
resolution: {integrity: sha512-bQWSE729PbXT6mMklWLf8dotislPle2L70E9q6iwETYEOt092GDn0c+TTNj26AjmeceSsC4ndyGsK5nKqHYXjQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-win32-arm64-msvc@16.0.10':
|
||||
resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==}
|
||||
'@next/swc-win32-arm64-msvc@16.1.5':
|
||||
resolution: {integrity: sha512-LZli0anutkIllMtTAWZlDqdfvjWX/ch8AFK5WgkNTvaqwlouiD1oHM+WW8RXMiL0+vAkAJyAGEzPPjO+hnrSNQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@next/swc-win32-x64-msvc@16.0.10':
|
||||
resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==}
|
||||
'@next/swc-win32-x64-msvc@16.1.5':
|
||||
resolution: {integrity: sha512-7is37HJTNQGhjPpQbkKjKEboHYQnCgpVt/4rBrrln0D9nderNxZ8ZWs8w1fAtzUx7wEyYjQ+/13myFgFj6K2Ng==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@@ -2309,6 +2309,10 @@ packages:
|
||||
resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
baseline-browser-mapping@2.9.19:
|
||||
resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==}
|
||||
hasBin: true
|
||||
|
||||
binary-extensions@2.3.0:
|
||||
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -3537,8 +3541,8 @@ packages:
|
||||
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
||||
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
||||
|
||||
next@16.0.10:
|
||||
resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==}
|
||||
next@16.1.5:
|
||||
resolution: {integrity: sha512-f+wE+NSbiQgh3DSAlTaw2FwY5yGdVViAtp8TotNQj4kk4Q8Bh1sC/aL9aH+Rg1YAVn18OYXsRDT7U/079jgP7w==}
|
||||
engines: {node: '>=20.9.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -5129,35 +5133,35 @@ snapshots:
|
||||
|
||||
'@mixmark-io/domino@2.2.0': {}
|
||||
|
||||
'@next/env@16.0.10': {}
|
||||
'@next/env@16.1.5': {}
|
||||
|
||||
'@next/swc-darwin-arm64@16.0.10':
|
||||
'@next/swc-darwin-arm64@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-darwin-x64@16.0.10':
|
||||
'@next/swc-darwin-x64@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-gnu@16.0.10':
|
||||
'@next/swc-linux-arm64-gnu@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-musl@16.0.10':
|
||||
'@next/swc-linux-arm64-musl@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-gnu@16.0.10':
|
||||
'@next/swc-linux-x64-gnu@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-musl@16.0.10':
|
||||
'@next/swc-linux-x64-musl@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-arm64-msvc@16.0.10':
|
||||
'@next/swc-win32-arm64-msvc@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-x64-msvc@16.0.10':
|
||||
'@next/swc-win32-x64-msvc@16.1.5':
|
||||
optional: true
|
||||
|
||||
'@next/third-parties@16.0.7(next@16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)':
|
||||
'@next/third-parties@16.0.7(next@16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)':
|
||||
dependencies:
|
||||
next: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
next: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
react: 19.2.1
|
||||
third-party-capital: 1.0.20
|
||||
|
||||
@@ -6403,6 +6407,8 @@ snapshots:
|
||||
|
||||
base64-js@0.0.8: {}
|
||||
|
||||
baseline-browser-mapping@2.9.19: {}
|
||||
|
||||
binary-extensions@2.3.0: {}
|
||||
|
||||
brace-expansion@2.0.1:
|
||||
@@ -6415,7 +6421,7 @@ snapshots:
|
||||
|
||||
browserslist@4.23.2:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001643
|
||||
caniuse-lite: 1.0.30001679
|
||||
electron-to-chromium: 1.5.2
|
||||
node-releases: 2.0.18
|
||||
update-browserslist-db: 1.1.0(browserslist@4.23.2)
|
||||
@@ -6867,7 +6873,7 @@ snapshots:
|
||||
fsevents@2.3.3:
|
||||
optional: true
|
||||
|
||||
fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13):
|
||||
fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13):
|
||||
dependencies:
|
||||
'@formatjs/intl-localematcher': 0.6.2
|
||||
'@orama/orama': 3.1.16
|
||||
@@ -6890,21 +6896,21 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
lucide-react: 0.552.0(react@19.2.1)
|
||||
next: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
next: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
react: 19.2.1
|
||||
react-dom: 19.2.1(react@19.2.1)
|
||||
zod: 4.1.13
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
fumadocs-mdx@14.1.0(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1):
|
||||
fumadocs-mdx@14.1.0(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1):
|
||||
dependencies:
|
||||
'@mdx-js/mdx': 3.1.1
|
||||
'@standard-schema/spec': 1.0.0
|
||||
chokidar: 5.0.0
|
||||
esbuild: 0.27.1
|
||||
estree-util-value-to-estree: 3.5.0
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
js-yaml: 4.1.1
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
picocolors: 1.1.1
|
||||
@@ -6918,12 +6924,12 @@ snapshots:
|
||||
vfile: 6.0.3
|
||||
zod: 4.1.13
|
||||
optionalDependencies:
|
||||
next: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
next: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
react: 19.2.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
fumadocs-openapi@10.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13))(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
|
||||
fumadocs-openapi@10.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(fumadocs-core@16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13))(fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13))(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
|
||||
dependencies:
|
||||
'@fumari/json-schema-to-typescript': 2.0.0(prettier@3.3.3)
|
||||
'@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
@@ -6934,8 +6940,8 @@ snapshots:
|
||||
'@scalar/openapi-parser': 0.23.3
|
||||
ajv: 8.17.1
|
||||
class-variance-authority: 0.7.1
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
fumadocs-ui: 16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13)
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
fumadocs-ui: 16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13)
|
||||
github-slugger: 2.0.0
|
||||
hast-util-to-jsx-runtime: 2.3.6
|
||||
js-yaml: 4.1.1
|
||||
@@ -6955,7 +6961,7 @@ snapshots:
|
||||
- prettier
|
||||
- supports-color
|
||||
|
||||
fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13):
|
||||
fumadocs-ui@16.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(tailwindcss@4.1.17)(zod@4.1.13):
|
||||
dependencies:
|
||||
'@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
'@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
@@ -6968,7 +6974,7 @@ snapshots:
|
||||
'@radix-ui/react-slot': 1.2.4(@types/react@19.2.2)(react@19.2.1)
|
||||
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
class-variance-authority: 0.7.1
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.0.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
fumadocs-core: 16.2.3(@types/react@19.2.2)(lucide-react@0.552.0(react@19.2.1))(next@16.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(zod@4.1.13)
|
||||
lodash.merge: 4.6.2
|
||||
next-themes: 0.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
postcss-selector-parser: 7.1.1
|
||||
@@ -6979,7 +6985,7 @@ snapshots:
|
||||
tailwind-merge: 3.4.0
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
next: 16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
next: 16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
|
||||
tailwindcss: 4.1.17
|
||||
transitivePeerDependencies:
|
||||
- '@mixedbread/sdk'
|
||||
@@ -7938,24 +7944,25 @@ snapshots:
|
||||
react: 19.2.1
|
||||
react-dom: 19.2.1(react@19.2.1)
|
||||
|
||||
next@16.0.10(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
|
||||
next@16.1.5(@babel/core@7.26.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
|
||||
dependencies:
|
||||
'@next/env': 16.0.10
|
||||
'@next/env': 16.1.5
|
||||
'@swc/helpers': 0.5.15
|
||||
baseline-browser-mapping: 2.9.19
|
||||
caniuse-lite: 1.0.30001679
|
||||
postcss: 8.4.31
|
||||
react: 19.2.1
|
||||
react-dom: 19.2.1(react@19.2.1)
|
||||
styled-jsx: 5.1.6(@babel/core@7.26.9)(react@19.2.1)
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 16.0.10
|
||||
'@next/swc-darwin-x64': 16.0.10
|
||||
'@next/swc-linux-arm64-gnu': 16.0.10
|
||||
'@next/swc-linux-arm64-musl': 16.0.10
|
||||
'@next/swc-linux-x64-gnu': 16.0.10
|
||||
'@next/swc-linux-x64-musl': 16.0.10
|
||||
'@next/swc-win32-arm64-msvc': 16.0.10
|
||||
'@next/swc-win32-x64-msvc': 16.0.10
|
||||
'@next/swc-darwin-arm64': 16.1.5
|
||||
'@next/swc-darwin-x64': 16.1.5
|
||||
'@next/swc-linux-arm64-gnu': 16.1.5
|
||||
'@next/swc-linux-arm64-musl': 16.1.5
|
||||
'@next/swc-linux-x64-gnu': 16.1.5
|
||||
'@next/swc-linux-x64-musl': 16.1.5
|
||||
'@next/swc-win32-arm64-msvc': 16.1.5
|
||||
'@next/swc-win32-x64-msvc': 16.1.5
|
||||
sharp: 0.34.5
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
@@ -8178,7 +8185,7 @@ snapshots:
|
||||
dependencies:
|
||||
react: 19.2.1
|
||||
react-style-singleton: 2.2.1(@types/react@19.2.2)(react@19.2.1)
|
||||
tslib: 2.6.3
|
||||
tslib: 2.8.1
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
|
||||
@@ -8217,7 +8224,7 @@ snapshots:
|
||||
get-nonce: 1.0.1
|
||||
invariant: 2.2.4
|
||||
react: 19.2.1
|
||||
tslib: 2.6.3
|
||||
tslib: 2.8.1
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
|
||||
@@ -8780,7 +8787,7 @@ snapshots:
|
||||
use-callback-ref@1.3.2(@types/react@19.2.2)(react@19.2.1):
|
||||
dependencies:
|
||||
react: 19.2.1
|
||||
tslib: 2.6.3
|
||||
tslib: 2.8.1
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
|
||||
@@ -8795,7 +8802,7 @@ snapshots:
|
||||
dependencies:
|
||||
detect-node-es: 1.1.0
|
||||
react: 19.2.1
|
||||
tslib: 2.6.3
|
||||
tslib: 2.8.1
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user