feat: add new documentation and assets for the website

- Introduced new MDX components and configuration files for the documentation site.
- Added various images and icons to enhance the visual representation of the documentation.
- Updated package.json and pnpm-lock.yaml to include new dependencies for the documentation.
- Created a .gitignore file for the new docs app to manage ignored files effectively.
- Enhanced README with instructions for restarting the dev server after adding new MDX files.
This commit is contained in:
Mauricio Siu
2025-12-07 05:12:07 -06:00
parent a1e5259e7a
commit 95682a01c2
228 changed files with 33330 additions and 22 deletions

26
apps/docs-new/.gitignore vendored Normal file
View File

@@ -0,0 +1,26 @@
# deps
/node_modules
# generated content
.source
# test & build
/coverage
/.next/
/out/
/build
*.tsbuildinfo
# misc
.DS_Store
*.pem
/.pnp
.pnp.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# others
.env*.local
.vercel
next-env.d.ts

121
apps/docs-new/README.md Normal file
View File

@@ -0,0 +1,121 @@
# Dokploy Documentation (New)
This is a fresh Fumadocs project with the complete Dokploy documentation migrated from the old docs project.
## Features
-**Modern Fumadocs Setup** - Built with the latest Fumadocs version
- 🎨 **Ocean Theme** - Beautiful ocean-themed UI
- 📱 **Responsive Design** - Works perfectly on all devices
- 🔍 **Advanced Search** - Built-in search functionality
- 🌙 **Dark Mode** - Full dark mode support
- 📚 **Complete Documentation** - All docs migrated including:
- Core documentation
- API references
- CLI documentation
- Remote Servers section
- Examples and tutorials
## Getting Started
### Development
Run the development server:
```bash
# From workspace root
pnpm docs-new:dev
# Or from this directory
pnpm dev
```
The site will be available at `http://localhost:3000`
### Build
Build the documentation for production:
```bash
# From workspace root
pnpm docs-new:build
# Or from this directory
pnpm build
```
### Type Checking
Run type checking:
```bash
# From workspace root
pnpm docs-new:typecheck
# Or from this directory
pnpm run types:check
```
## Structure
```
apps/docs-new/
├── app/ # Next.js app directory
│ ├── (home)/ # Home page
│ ├── docs/ # Documentation pages
│ │ ├── [[...slug]]/ # Dynamic doc pages
│ │ └── layout.tsx # Docs layout
│ ├── api/ # API routes
│ └── layout.tsx # Root layout
├── content/ # MDX documentation content
│ └── docs/ # All documentation files
├── lib/ # Utilities
│ ├── source.ts # Content source configuration
│ └── layout.shared.tsx # Shared layout options
├── public/ # Static assets
└── source.config.ts # Fumadocs configuration
```
## Customization
### Theme
The project uses the **Ocean theme**. To change it, edit `app/global.css`:
```css
@import 'fumadocs-ui/css/ocean.css'; /* Change this to another theme */
```
Available themes: `neutral`, `black`, `vitepress`, `dusk`, `catppuccin`, `ocean`, `purple`
### Layout Configuration
Edit `lib/layout.shared.tsx` to customize:
- Navigation title
- Links
- GitHub URL
- Other layout options
### Content
Add or edit documentation in the `content/docs/` directory. The structure follows Fumadocs conventions with `meta.json` files for navigation.
## Key Differences from Old Docs
1. **Modern API** - Uses `fumadocs-mdx:collections/server` instead of legacy approach
2. **Better Type Safety** - Full TypeScript support with proper types
3. **Simpler Configuration** - Less boilerplate, more conventions
4. **Built-in Features** - Search, OG images, and more work out of the box
5. **No Build Errors** - Clean slate without legacy issues
## Documentation
- [Fumadocs Documentation](https://fumadocs.dev)
- [Fumadocs Themes](https://fumadocs.dev/docs/ui/theme)
- [Fumadocs Layouts](https://fumadocs.dev/docs/ui/blocks/layout)
## Notes
- The `.source` directory is auto-generated - don't edit it manually
- Run `pnpm run postinstall` after making changes to content structure
- Restart dev server after adding new MDX files

View File

@@ -0,0 +1,6 @@
import { HomeLayout } from 'fumadocs-ui/layouts/home';
import { baseOptions } from '@/lib/layout.shared';
export default function Layout({ children }: LayoutProps<'/'>) {
return <HomeLayout {...baseOptions()}>{children}</HomeLayout>;
}

View File

@@ -0,0 +1,27 @@
import Link from 'next/link';
export default function HomePage() {
return (
<div className="flex flex-col justify-center text-center flex-1 px-4">
<h1 className="text-4xl font-bold mb-4">Dokploy Documentation</h1>
<p className="text-lg text-fd-muted-foreground mb-8 max-w-2xl mx-auto">
Open Source Alternative to Vercel, Netlify and Heroku. Deploy your applications with ease.
</p>
<div className="flex gap-4 justify-center">
<Link
href="/docs"
className="px-6 py-3 bg-fd-primary text-fd-primary-foreground rounded-lg font-medium hover:opacity-90 transition-opacity"
>
Get Started
</Link>
<Link
href="https://github.com/Dokploy/dokploy"
className="px-6 py-3 border border-fd-border rounded-lg font-medium hover:bg-fd-accent transition-colors"
target="_blank"
>
View on GitHub
</Link>
</div>
</div>
);
}

View File

@@ -0,0 +1,7 @@
import { source } from '@/lib/source';
import { createFromSource } from 'fumadocs-core/search/server';
export const { GET } = createFromSource(source, {
// https://docs.orama.com/docs/orama-js/supported-languages
language: 'english',
});

View File

@@ -0,0 +1,54 @@
import { getPageImage, source } from '@/lib/source';
import {
DocsBody,
DocsDescription,
DocsPage,
DocsTitle,
} from 'fumadocs-ui/layouts/docs/page';
import { notFound } from 'next/navigation';
import { getMDXComponents } from '@/mdx-components';
import type { Metadata } from 'next';
import { createRelativeLink } from 'fumadocs-ui/mdx';
export default async function Page(props: PageProps<'/docs/[[...slug]]'>) {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
const MDX = page.data.body;
return (
<DocsPage toc={page.data.toc} full={page.data.full}>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsBody>
<MDX
components={getMDXComponents({
// this allows you to link to other pages with relative file paths
a: createRelativeLink(source, page),
})}
/>
</DocsBody>
</DocsPage>
);
}
export async function generateStaticParams() {
return source.generateParams();
}
export async function generateMetadata(
props: PageProps<'/docs/[[...slug]]'>,
): Promise<Metadata> {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
return {
title: page.data.title,
description: page.data.description,
openGraph: {
images: getPageImage(page).url,
},
};
}

View File

@@ -0,0 +1,11 @@
import { source } from '@/lib/source';
import { DocsLayout } from 'fumadocs-ui/layouts/docs';
import { baseOptions } from '@/lib/layout.shared';
export default function Layout({ children }: LayoutProps<'/docs'>) {
return (
<DocsLayout tree={source.pageTree} {...baseOptions()}>
{children}
</DocsLayout>
);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,3 @@
@import 'tailwindcss';
@import 'fumadocs-ui/css/ocean.css';
@import 'fumadocs-ui/css/preset.css';

View File

@@ -0,0 +1,33 @@
import { RootProvider } from 'fumadocs-ui/provider/next';
import './global.css';
import { Inter } from 'next/font/google';
import type { Metadata } from 'next';
const inter = Inter({
subsets: ['latin'],
});
export const metadata: Metadata = {
title: {
default: 'Dokploy Documentation',
template: '%s | Dokploy',
},
description: 'Open Source Alternative to Vercel, Netlify and Heroku. Deploy your applications with ease.',
keywords: ['dokploy', 'deployment', 'docker', 'hosting', 'devops', 'open source'],
authors: [{ name: 'Dokploy Team' }],
openGraph: {
title: 'Dokploy Documentation',
description: 'Open Source Alternative to Vercel, Netlify and Heroku',
type: 'website',
},
};
export default function Layout({ children }: LayoutProps<'/'>) {
return (
<html lang="en" className={inter.className} suppressHydrationWarning>
<body className="flex flex-col min-h-screen">
<RootProvider>{children}</RootProvider>
</body>
</html>
);
}

View File

@@ -0,0 +1,10 @@
import { getLLMText, source } from '@/lib/source';
export const revalidate = false;
export async function GET() {
const scan = source.getPages().map(getLLMText);
const scanned = await Promise.all(scan);
return new Response(scanned.join('\n\n'));
}

View File

@@ -0,0 +1,34 @@
import { getPageImage, source } from '@/lib/source';
import { notFound } from 'next/navigation';
import { ImageResponse } from 'next/og';
import { generate as DefaultImage } from 'fumadocs-ui/og';
export const revalidate = false;
export async function GET(
_req: Request,
{ params }: RouteContext<'/og/docs/[...slug]'>,
) {
const { slug } = await params;
const page = source.getPage(slug.slice(0, -1));
if (!page) notFound();
return new ImageResponse(
<DefaultImage
title={page.data.title}
description={page.data.description}
site="My App"
/>,
{
width: 1200,
height: 630,
},
);
}
export function generateStaticParams() {
return source.getPages().map((page) => ({
lang: page.locale,
slug: getPageImage(page).segments,
}));
}

View File

@@ -0,0 +1,16 @@
---
title: Admin
full: true
_openapi:
toc:
- depth: 2
title: Admin setup Monitoring
url: '#admin-setup-monitoring'
structuredData:
headings:
- content: Admin setup Monitoring
id: admin-setup-monitoring
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/admin.setupMonitoring"}]} hasHead={true} />

View File

@@ -0,0 +1,56 @@
---
title: Ai
full: true
_openapi:
toc:
- depth: 2
title: Ai one
url: '#ai-one'
- depth: 2
title: Ai get Models
url: '#ai-get-models'
- depth: 2
title: Ai create
url: '#ai-create'
- depth: 2
title: Ai update
url: '#ai-update'
- depth: 2
title: Ai get All
url: '#ai-get-all'
- depth: 2
title: Ai get
url: '#ai-get'
- depth: 2
title: Ai delete
url: '#ai-delete'
- depth: 2
title: Ai suggest
url: '#ai-suggest'
- depth: 2
title: Ai deploy
url: '#ai-deploy'
structuredData:
headings:
- content: Ai one
id: ai-one
- content: Ai get Models
id: ai-get-models
- content: Ai create
id: ai-create
- content: Ai update
id: ai-update
- content: Ai get All
id: ai-get-all
- content: Ai get
id: ai-get
- content: Ai delete
id: ai-delete
- content: Ai suggest
id: ai-suggest
- content: Ai deploy
id: ai-deploy
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/ai.one"},{"method":"get","path":"/ai.getModels"},{"method":"post","path":"/ai.create"},{"method":"post","path":"/ai.update"},{"method":"get","path":"/ai.getAll"},{"method":"get","path":"/ai.get"},{"method":"post","path":"/ai.delete"},{"method":"post","path":"/ai.suggest"},{"method":"post","path":"/ai.deploy"}]} hasHead={true} />

View File

@@ -0,0 +1,146 @@
---
title: Application
full: true
_openapi:
toc:
- depth: 2
title: Application create
url: '#application-create'
- depth: 2
title: Application one
url: '#application-one'
- depth: 2
title: Application reload
url: '#application-reload'
- depth: 2
title: Application delete
url: '#application-delete'
- depth: 2
title: Application stop
url: '#application-stop'
- depth: 2
title: Application start
url: '#application-start'
- depth: 2
title: Application redeploy
url: '#application-redeploy'
- depth: 2
title: Application save Environment
url: '#application-save-environment'
- depth: 2
title: Application save Build Type
url: '#application-save-build-type'
- depth: 2
title: Application save Github Provider
url: '#application-save-github-provider'
- depth: 2
title: Application save Gitlab Provider
url: '#application-save-gitlab-provider'
- depth: 2
title: Application save Bitbucket Provider
url: '#application-save-bitbucket-provider'
- depth: 2
title: Application save Gitea Provider
url: '#application-save-gitea-provider'
- depth: 2
title: Application save Docker Provider
url: '#application-save-docker-provider'
- depth: 2
title: Application save Git Provider
url: '#application-save-git-provider'
- depth: 2
title: Application disconnect Git Provider
url: '#application-disconnect-git-provider'
- depth: 2
title: Application mark Running
url: '#application-mark-running'
- depth: 2
title: Application update
url: '#application-update'
- depth: 2
title: Application refresh Token
url: '#application-refresh-token'
- depth: 2
title: Application deploy
url: '#application-deploy'
- depth: 2
title: Application clean Queues
url: '#application-clean-queues'
- depth: 2
title: Application kill Build
url: '#application-kill-build'
- depth: 2
title: Application read Traefik Config
url: '#application-read-traefik-config'
- depth: 2
title: Application update Traefik Config
url: '#application-update-traefik-config'
- depth: 2
title: Application read App Monitoring
url: '#application-read-app-monitoring'
- depth: 2
title: Application move
url: '#application-move'
- depth: 2
title: Application cancel Deployment
url: '#application-cancel-deployment'
structuredData:
headings:
- content: Application create
id: application-create
- content: Application one
id: application-one
- content: Application reload
id: application-reload
- content: Application delete
id: application-delete
- content: Application stop
id: application-stop
- content: Application start
id: application-start
- content: Application redeploy
id: application-redeploy
- content: Application save Environment
id: application-save-environment
- content: Application save Build Type
id: application-save-build-type
- content: Application save Github Provider
id: application-save-github-provider
- content: Application save Gitlab Provider
id: application-save-gitlab-provider
- content: Application save Bitbucket Provider
id: application-save-bitbucket-provider
- content: Application save Gitea Provider
id: application-save-gitea-provider
- content: Application save Docker Provider
id: application-save-docker-provider
- content: Application save Git Provider
id: application-save-git-provider
- content: Application disconnect Git Provider
id: application-disconnect-git-provider
- content: Application mark Running
id: application-mark-running
- content: Application update
id: application-update
- content: Application refresh Token
id: application-refresh-token
- content: Application deploy
id: application-deploy
- content: Application clean Queues
id: application-clean-queues
- content: Application kill Build
id: application-kill-build
- content: Application read Traefik Config
id: application-read-traefik-config
- content: Application update Traefik Config
id: application-update-traefik-config
- content: Application read App Monitoring
id: application-read-app-monitoring
- content: Application move
id: application-move
- content: Application cancel Deployment
id: application-cancel-deployment
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/application.create"},{"method":"get","path":"/application.one"},{"method":"post","path":"/application.reload"},{"method":"post","path":"/application.delete"},{"method":"post","path":"/application.stop"},{"method":"post","path":"/application.start"},{"method":"post","path":"/application.redeploy"},{"method":"post","path":"/application.saveEnvironment"},{"method":"post","path":"/application.saveBuildType"},{"method":"post","path":"/application.saveGithubProvider"},{"method":"post","path":"/application.saveGitlabProvider"},{"method":"post","path":"/application.saveBitbucketProvider"},{"method":"post","path":"/application.saveGiteaProvider"},{"method":"post","path":"/application.saveDockerProvider"},{"method":"post","path":"/application.saveGitProvider"},{"method":"post","path":"/application.disconnectGitProvider"},{"method":"post","path":"/application.markRunning"},{"method":"post","path":"/application.update"},{"method":"post","path":"/application.refreshToken"},{"method":"post","path":"/application.deploy"},{"method":"post","path":"/application.cleanQueues"},{"method":"post","path":"/application.killBuild"},{"method":"get","path":"/application.readTraefikConfig"},{"method":"post","path":"/application.updateTraefikConfig"},{"method":"get","path":"/application.readAppMonitoring"},{"method":"post","path":"/application.move"},{"method":"post","path":"/application.cancelDeployment"}]} hasHead={true} />

View File

@@ -0,0 +1,66 @@
---
title: Backup
full: true
_openapi:
toc:
- depth: 2
title: Backup create
url: '#backup-create'
- depth: 2
title: Backup one
url: '#backup-one'
- depth: 2
title: Backup update
url: '#backup-update'
- depth: 2
title: Backup remove
url: '#backup-remove'
- depth: 2
title: Backup manual Backup Postgres
url: '#backup-manual-backup-postgres'
- depth: 2
title: Backup manual Backup My Sql
url: '#backup-manual-backup-my-sql'
- depth: 2
title: Backup manual Backup Mariadb
url: '#backup-manual-backup-mariadb'
- depth: 2
title: Backup manual Backup Compose
url: '#backup-manual-backup-compose'
- depth: 2
title: Backup manual Backup Mongo
url: '#backup-manual-backup-mongo'
- depth: 2
title: Backup manual Backup Web Server
url: '#backup-manual-backup-web-server'
- depth: 2
title: Backup list Backup Files
url: '#backup-list-backup-files'
structuredData:
headings:
- content: Backup create
id: backup-create
- content: Backup one
id: backup-one
- content: Backup update
id: backup-update
- content: Backup remove
id: backup-remove
- content: Backup manual Backup Postgres
id: backup-manual-backup-postgres
- content: Backup manual Backup My Sql
id: backup-manual-backup-my-sql
- content: Backup manual Backup Mariadb
id: backup-manual-backup-mariadb
- content: Backup manual Backup Compose
id: backup-manual-backup-compose
- content: Backup manual Backup Mongo
id: backup-manual-backup-mongo
- content: Backup manual Backup Web Server
id: backup-manual-backup-web-server
- content: Backup list Backup Files
id: backup-list-backup-files
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/backup.create"},{"method":"get","path":"/backup.one"},{"method":"post","path":"/backup.update"},{"method":"post","path":"/backup.remove"},{"method":"post","path":"/backup.manualBackupPostgres"},{"method":"post","path":"/backup.manualBackupMySql"},{"method":"post","path":"/backup.manualBackupMariadb"},{"method":"post","path":"/backup.manualBackupCompose"},{"method":"post","path":"/backup.manualBackupMongo"},{"method":"post","path":"/backup.manualBackupWebServer"},{"method":"get","path":"/backup.listBackupFiles"}]} hasHead={true} />

View File

@@ -0,0 +1,46 @@
---
title: Bitbucket
full: true
_openapi:
toc:
- depth: 2
title: Bitbucket create
url: '#bitbucket-create'
- depth: 2
title: Bitbucket one
url: '#bitbucket-one'
- depth: 2
title: Bitbucket bitbucket Providers
url: '#bitbucket-bitbucket-providers'
- depth: 2
title: Bitbucket get Bitbucket Repositories
url: '#bitbucket-get-bitbucket-repositories'
- depth: 2
title: Bitbucket get Bitbucket Branches
url: '#bitbucket-get-bitbucket-branches'
- depth: 2
title: Bitbucket test Connection
url: '#bitbucket-test-connection'
- depth: 2
title: Bitbucket update
url: '#bitbucket-update'
structuredData:
headings:
- content: Bitbucket create
id: bitbucket-create
- content: Bitbucket one
id: bitbucket-one
- content: Bitbucket bitbucket Providers
id: bitbucket-bitbucket-providers
- content: Bitbucket get Bitbucket Repositories
id: bitbucket-get-bitbucket-repositories
- content: Bitbucket get Bitbucket Branches
id: bitbucket-get-bitbucket-branches
- content: Bitbucket test Connection
id: bitbucket-test-connection
- content: Bitbucket update
id: bitbucket-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/bitbucket.create"},{"method":"get","path":"/bitbucket.one"},{"method":"get","path":"/bitbucket.bitbucketProviders"},{"method":"get","path":"/bitbucket.getBitbucketRepositories"},{"method":"get","path":"/bitbucket.getBitbucketBranches"},{"method":"post","path":"/bitbucket.testConnection"},{"method":"post","path":"/bitbucket.update"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Certificates
full: true
_openapi:
toc:
- depth: 2
title: Certificates create
url: '#certificates-create'
- depth: 2
title: Certificates one
url: '#certificates-one'
- depth: 2
title: Certificates remove
url: '#certificates-remove'
- depth: 2
title: Certificates all
url: '#certificates-all'
structuredData:
headings:
- content: Certificates create
id: certificates-create
- content: Certificates one
id: certificates-one
- content: Certificates remove
id: certificates-remove
- content: Certificates all
id: certificates-all
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/certificates.create"},{"method":"get","path":"/certificates.one"},{"method":"post","path":"/certificates.remove"},{"method":"get","path":"/certificates.all"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Cluster
full: true
_openapi:
toc:
- depth: 2
title: Cluster get Nodes
url: '#cluster-get-nodes'
- depth: 2
title: Cluster remove Worker
url: '#cluster-remove-worker'
- depth: 2
title: Cluster add Worker
url: '#cluster-add-worker'
- depth: 2
title: Cluster add Manager
url: '#cluster-add-manager'
structuredData:
headings:
- content: Cluster get Nodes
id: cluster-get-nodes
- content: Cluster remove Worker
id: cluster-remove-worker
- content: Cluster add Worker
id: cluster-add-worker
- content: Cluster add Manager
id: cluster-add-manager
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/cluster.getNodes"},{"method":"post","path":"/cluster.removeWorker"},{"method":"get","path":"/cluster.addWorker"},{"method":"get","path":"/cluster.addManager"}]} hasHead={true} />

View File

@@ -0,0 +1,141 @@
---
title: Compose
full: true
_openapi:
toc:
- depth: 2
title: Compose create
url: '#compose-create'
- depth: 2
title: Compose one
url: '#compose-one'
- depth: 2
title: Compose update
url: '#compose-update'
- depth: 2
title: Compose delete
url: '#compose-delete'
- depth: 2
title: Compose clean Queues
url: '#compose-clean-queues'
- depth: 2
title: Compose kill Build
url: '#compose-kill-build'
- depth: 2
title: Compose load Services
url: '#compose-load-services'
- depth: 2
title: Compose load Mounts By Service
url: '#compose-load-mounts-by-service'
- depth: 2
title: Compose fetch Source Type
url: '#compose-fetch-source-type'
- depth: 2
title: Compose randomize Compose
url: '#compose-randomize-compose'
- depth: 2
title: Compose isolated Deployment
url: '#compose-isolated-deployment'
- depth: 2
title: Compose get Converted Compose
url: '#compose-get-converted-compose'
- depth: 2
title: Compose deploy
url: '#compose-deploy'
- depth: 2
title: Compose redeploy
url: '#compose-redeploy'
- depth: 2
title: Compose stop
url: '#compose-stop'
- depth: 2
title: Compose start
url: '#compose-start'
- depth: 2
title: Compose get Default Command
url: '#compose-get-default-command'
- depth: 2
title: Compose refresh Token
url: '#compose-refresh-token'
- depth: 2
title: Compose deploy Template
url: '#compose-deploy-template'
- depth: 2
title: Compose templates
url: '#compose-templates'
- depth: 2
title: Compose get Tags
url: '#compose-get-tags'
- depth: 2
title: Compose disconnect Git Provider
url: '#compose-disconnect-git-provider'
- depth: 2
title: Compose move
url: '#compose-move'
- depth: 2
title: Compose process Template
url: '#compose-process-template'
- depth: 2
title: Compose import
url: '#compose-import'
- depth: 2
title: Compose cancel Deployment
url: '#compose-cancel-deployment'
structuredData:
headings:
- content: Compose create
id: compose-create
- content: Compose one
id: compose-one
- content: Compose update
id: compose-update
- content: Compose delete
id: compose-delete
- content: Compose clean Queues
id: compose-clean-queues
- content: Compose kill Build
id: compose-kill-build
- content: Compose load Services
id: compose-load-services
- content: Compose load Mounts By Service
id: compose-load-mounts-by-service
- content: Compose fetch Source Type
id: compose-fetch-source-type
- content: Compose randomize Compose
id: compose-randomize-compose
- content: Compose isolated Deployment
id: compose-isolated-deployment
- content: Compose get Converted Compose
id: compose-get-converted-compose
- content: Compose deploy
id: compose-deploy
- content: Compose redeploy
id: compose-redeploy
- content: Compose stop
id: compose-stop
- content: Compose start
id: compose-start
- content: Compose get Default Command
id: compose-get-default-command
- content: Compose refresh Token
id: compose-refresh-token
- content: Compose deploy Template
id: compose-deploy-template
- content: Compose templates
id: compose-templates
- content: Compose get Tags
id: compose-get-tags
- content: Compose disconnect Git Provider
id: compose-disconnect-git-provider
- content: Compose move
id: compose-move
- content: Compose process Template
id: compose-process-template
- content: Compose import
id: compose-import
- content: Compose cancel Deployment
id: compose-cancel-deployment
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/compose.create"},{"method":"get","path":"/compose.one"},{"method":"post","path":"/compose.update"},{"method":"post","path":"/compose.delete"},{"method":"post","path":"/compose.cleanQueues"},{"method":"post","path":"/compose.killBuild"},{"method":"get","path":"/compose.loadServices"},{"method":"get","path":"/compose.loadMountsByService"},{"method":"post","path":"/compose.fetchSourceType"},{"method":"post","path":"/compose.randomizeCompose"},{"method":"post","path":"/compose.isolatedDeployment"},{"method":"get","path":"/compose.getConvertedCompose"},{"method":"post","path":"/compose.deploy"},{"method":"post","path":"/compose.redeploy"},{"method":"post","path":"/compose.stop"},{"method":"post","path":"/compose.start"},{"method":"get","path":"/compose.getDefaultCommand"},{"method":"post","path":"/compose.refreshToken"},{"method":"post","path":"/compose.deployTemplate"},{"method":"get","path":"/compose.templates"},{"method":"get","path":"/compose.getTags"},{"method":"post","path":"/compose.disconnectGitProvider"},{"method":"post","path":"/compose.move"},{"method":"post","path":"/compose.processTemplate"},{"method":"post","path":"/compose.import"},{"method":"post","path":"/compose.cancelDeployment"}]} hasHead={true} />

View File

@@ -0,0 +1,36 @@
---
title: Deployment
full: true
_openapi:
toc:
- depth: 2
title: Deployment all
url: '#deployment-all'
- depth: 2
title: Deployment all By Compose
url: '#deployment-all-by-compose'
- depth: 2
title: Deployment all By Server
url: '#deployment-all-by-server'
- depth: 2
title: Deployment all By Type
url: '#deployment-all-by-type'
- depth: 2
title: Deployment kill Process
url: '#deployment-kill-process'
structuredData:
headings:
- content: Deployment all
id: deployment-all
- content: Deployment all By Compose
id: deployment-all-by-compose
- content: Deployment all By Server
id: deployment-all-by-server
- content: Deployment all By Type
id: deployment-all-by-type
- content: Deployment kill Process
id: deployment-kill-process
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/deployment.all"},{"method":"get","path":"/deployment.allByCompose"},{"method":"get","path":"/deployment.allByServer"},{"method":"get","path":"/deployment.allByType"},{"method":"post","path":"/deployment.killProcess"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Destination
full: true
_openapi:
toc:
- depth: 2
title: Destination create
url: '#destination-create'
- depth: 2
title: Destination test Connection
url: '#destination-test-connection'
- depth: 2
title: Destination one
url: '#destination-one'
- depth: 2
title: Destination all
url: '#destination-all'
- depth: 2
title: Destination remove
url: '#destination-remove'
- depth: 2
title: Destination update
url: '#destination-update'
structuredData:
headings:
- content: Destination create
id: destination-create
- content: Destination test Connection
id: destination-test-connection
- content: Destination one
id: destination-one
- content: Destination all
id: destination-all
- content: Destination remove
id: destination-remove
- content: Destination update
id: destination-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/destination.create"},{"method":"post","path":"/destination.testConnection"},{"method":"get","path":"/destination.one"},{"method":"get","path":"/destination.all"},{"method":"post","path":"/destination.remove"},{"method":"post","path":"/destination.update"}]} hasHead={true} />

View File

@@ -0,0 +1,46 @@
---
title: Docker
full: true
_openapi:
toc:
- depth: 2
title: Docker get Containers
url: '#docker-get-containers'
- depth: 2
title: Docker restart Container
url: '#docker-restart-container'
- depth: 2
title: Docker get Config
url: '#docker-get-config'
- depth: 2
title: Docker get Containers By App Name Match
url: '#docker-get-containers-by-app-name-match'
- depth: 2
title: Docker get Containers By App Label
url: '#docker-get-containers-by-app-label'
- depth: 2
title: Docker get Stack Containers By App Name
url: '#docker-get-stack-containers-by-app-name'
- depth: 2
title: Docker get Service Containers By App Name
url: '#docker-get-service-containers-by-app-name'
structuredData:
headings:
- content: Docker get Containers
id: docker-get-containers
- content: Docker restart Container
id: docker-restart-container
- content: Docker get Config
id: docker-get-config
- content: Docker get Containers By App Name Match
id: docker-get-containers-by-app-name-match
- content: Docker get Containers By App Label
id: docker-get-containers-by-app-label
- content: Docker get Stack Containers By App Name
id: docker-get-stack-containers-by-app-name
- content: Docker get Service Containers By App Name
id: docker-get-service-containers-by-app-name
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/docker.getContainers"},{"method":"post","path":"/docker.restartContainer"},{"method":"get","path":"/docker.getConfig"},{"method":"get","path":"/docker.getContainersByAppNameMatch"},{"method":"get","path":"/docker.getContainersByAppLabel"},{"method":"get","path":"/docker.getStackContainersByAppName"},{"method":"get","path":"/docker.getServiceContainersByAppName"}]} hasHead={true} />

View File

@@ -0,0 +1,56 @@
---
title: Domain
full: true
_openapi:
toc:
- depth: 2
title: Domain create
url: '#domain-create'
- depth: 2
title: Domain by Application Id
url: '#domain-by-application-id'
- depth: 2
title: Domain by Compose Id
url: '#domain-by-compose-id'
- depth: 2
title: Domain generate Domain
url: '#domain-generate-domain'
- depth: 2
title: Domain can Generate Traefik Me Domains
url: '#domain-can-generate-traefik-me-domains'
- depth: 2
title: Domain update
url: '#domain-update'
- depth: 2
title: Domain one
url: '#domain-one'
- depth: 2
title: Domain delete
url: '#domain-delete'
- depth: 2
title: Domain validate Domain
url: '#domain-validate-domain'
structuredData:
headings:
- content: Domain create
id: domain-create
- content: Domain by Application Id
id: domain-by-application-id
- content: Domain by Compose Id
id: domain-by-compose-id
- content: Domain generate Domain
id: domain-generate-domain
- content: Domain can Generate Traefik Me Domains
id: domain-can-generate-traefik-me-domains
- content: Domain update
id: domain-update
- content: Domain one
id: domain-one
- content: Domain delete
id: domain-delete
- content: Domain validate Domain
id: domain-validate-domain
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/domain.create"},{"method":"get","path":"/domain.byApplicationId"},{"method":"get","path":"/domain.byComposeId"},{"method":"post","path":"/domain.generateDomain"},{"method":"get","path":"/domain.canGenerateTraefikMeDomains"},{"method":"post","path":"/domain.update"},{"method":"get","path":"/domain.one"},{"method":"post","path":"/domain.delete"},{"method":"post","path":"/domain.validateDomain"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Environment
full: true
_openapi:
toc:
- depth: 2
title: Environment create
url: '#environment-create'
- depth: 2
title: Environment one
url: '#environment-one'
- depth: 2
title: Environment by Project Id
url: '#environment-by-project-id'
- depth: 2
title: Environment remove
url: '#environment-remove'
- depth: 2
title: Environment update
url: '#environment-update'
- depth: 2
title: Environment duplicate
url: '#environment-duplicate'
structuredData:
headings:
- content: Environment create
id: environment-create
- content: Environment one
id: environment-one
- content: Environment by Project Id
id: environment-by-project-id
- content: Environment remove
id: environment-remove
- content: Environment update
id: environment-update
- content: Environment duplicate
id: environment-duplicate
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/environment.create"},{"method":"get","path":"/environment.one"},{"method":"get","path":"/environment.byProjectId"},{"method":"post","path":"/environment.remove"},{"method":"post","path":"/environment.update"},{"method":"post","path":"/environment.duplicate"}]} hasHead={true} />

View File

@@ -0,0 +1,21 @@
---
title: Git Provider
full: true
_openapi:
toc:
- depth: 2
title: Git Provider get All
url: '#git-provider-get-all'
- depth: 2
title: Git Provider remove
url: '#git-provider-remove'
structuredData:
headings:
- content: Git Provider get All
id: git-provider-get-all
- content: Git Provider remove
id: git-provider-remove
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/gitProvider.getAll"},{"method":"post","path":"/gitProvider.remove"}]} hasHead={true} />

View File

@@ -0,0 +1,51 @@
---
title: Gitea
full: true
_openapi:
toc:
- depth: 2
title: Gitea create
url: '#gitea-create'
- depth: 2
title: Gitea one
url: '#gitea-one'
- depth: 2
title: Gitea gitea Providers
url: '#gitea-gitea-providers'
- depth: 2
title: Gitea get Gitea Repositories
url: '#gitea-get-gitea-repositories'
- depth: 2
title: Gitea get Gitea Branches
url: '#gitea-get-gitea-branches'
- depth: 2
title: Gitea test Connection
url: '#gitea-test-connection'
- depth: 2
title: Gitea update
url: '#gitea-update'
- depth: 2
title: Gitea get Gitea Url
url: '#gitea-get-gitea-url'
structuredData:
headings:
- content: Gitea create
id: gitea-create
- content: Gitea one
id: gitea-one
- content: Gitea gitea Providers
id: gitea-gitea-providers
- content: Gitea get Gitea Repositories
id: gitea-get-gitea-repositories
- content: Gitea get Gitea Branches
id: gitea-get-gitea-branches
- content: Gitea test Connection
id: gitea-test-connection
- content: Gitea update
id: gitea-update
- content: Gitea get Gitea Url
id: gitea-get-gitea-url
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/gitea.create"},{"method":"get","path":"/gitea.one"},{"method":"get","path":"/gitea.giteaProviders"},{"method":"get","path":"/gitea.getGiteaRepositories"},{"method":"get","path":"/gitea.getGiteaBranches"},{"method":"post","path":"/gitea.testConnection"},{"method":"post","path":"/gitea.update"},{"method":"get","path":"/gitea.getGiteaUrl"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Github
full: true
_openapi:
toc:
- depth: 2
title: Github one
url: '#github-one'
- depth: 2
title: Github get Github Repositories
url: '#github-get-github-repositories'
- depth: 2
title: Github get Github Branches
url: '#github-get-github-branches'
- depth: 2
title: Github github Providers
url: '#github-github-providers'
- depth: 2
title: Github test Connection
url: '#github-test-connection'
- depth: 2
title: Github update
url: '#github-update'
structuredData:
headings:
- content: Github one
id: github-one
- content: Github get Github Repositories
id: github-get-github-repositories
- content: Github get Github Branches
id: github-get-github-branches
- content: Github github Providers
id: github-github-providers
- content: Github test Connection
id: github-test-connection
- content: Github update
id: github-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/github.one"},{"method":"get","path":"/github.getGithubRepositories"},{"method":"get","path":"/github.getGithubBranches"},{"method":"get","path":"/github.githubProviders"},{"method":"post","path":"/github.testConnection"},{"method":"post","path":"/github.update"}]} hasHead={true} />

View File

@@ -0,0 +1,46 @@
---
title: Gitlab
full: true
_openapi:
toc:
- depth: 2
title: Gitlab create
url: '#gitlab-create'
- depth: 2
title: Gitlab one
url: '#gitlab-one'
- depth: 2
title: Gitlab gitlab Providers
url: '#gitlab-gitlab-providers'
- depth: 2
title: Gitlab get Gitlab Repositories
url: '#gitlab-get-gitlab-repositories'
- depth: 2
title: Gitlab get Gitlab Branches
url: '#gitlab-get-gitlab-branches'
- depth: 2
title: Gitlab test Connection
url: '#gitlab-test-connection'
- depth: 2
title: Gitlab update
url: '#gitlab-update'
structuredData:
headings:
- content: Gitlab create
id: gitlab-create
- content: Gitlab one
id: gitlab-one
- content: Gitlab gitlab Providers
id: gitlab-gitlab-providers
- content: Gitlab get Gitlab Repositories
id: gitlab-get-gitlab-repositories
- content: Gitlab get Gitlab Branches
id: gitlab-get-gitlab-branches
- content: Gitlab test Connection
id: gitlab-test-connection
- content: Gitlab update
id: gitlab-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/gitlab.create"},{"method":"get","path":"/gitlab.one"},{"method":"get","path":"/gitlab.gitlabProviders"},{"method":"get","path":"/gitlab.getGitlabRepositories"},{"method":"get","path":"/gitlab.getGitlabBranches"},{"method":"post","path":"/gitlab.testConnection"},{"method":"post","path":"/gitlab.update"}]} hasHead={true} />

View File

@@ -0,0 +1,76 @@
---
title: Mariadb
full: true
_openapi:
toc:
- depth: 2
title: Mariadb create
url: '#mariadb-create'
- depth: 2
title: Mariadb one
url: '#mariadb-one'
- depth: 2
title: Mariadb start
url: '#mariadb-start'
- depth: 2
title: Mariadb stop
url: '#mariadb-stop'
- depth: 2
title: Mariadb save External Port
url: '#mariadb-save-external-port'
- depth: 2
title: Mariadb deploy
url: '#mariadb-deploy'
- depth: 2
title: Mariadb change Status
url: '#mariadb-change-status'
- depth: 2
title: Mariadb remove
url: '#mariadb-remove'
- depth: 2
title: Mariadb save Environment
url: '#mariadb-save-environment'
- depth: 2
title: Mariadb reload
url: '#mariadb-reload'
- depth: 2
title: Mariadb update
url: '#mariadb-update'
- depth: 2
title: Mariadb move
url: '#mariadb-move'
- depth: 2
title: Mariadb rebuild
url: '#mariadb-rebuild'
structuredData:
headings:
- content: Mariadb create
id: mariadb-create
- content: Mariadb one
id: mariadb-one
- content: Mariadb start
id: mariadb-start
- content: Mariadb stop
id: mariadb-stop
- content: Mariadb save External Port
id: mariadb-save-external-port
- content: Mariadb deploy
id: mariadb-deploy
- content: Mariadb change Status
id: mariadb-change-status
- content: Mariadb remove
id: mariadb-remove
- content: Mariadb save Environment
id: mariadb-save-environment
- content: Mariadb reload
id: mariadb-reload
- content: Mariadb update
id: mariadb-update
- content: Mariadb move
id: mariadb-move
- content: Mariadb rebuild
id: mariadb-rebuild
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/mariadb.create"},{"method":"get","path":"/mariadb.one"},{"method":"post","path":"/mariadb.start"},{"method":"post","path":"/mariadb.stop"},{"method":"post","path":"/mariadb.saveExternalPort"},{"method":"post","path":"/mariadb.deploy"},{"method":"post","path":"/mariadb.changeStatus"},{"method":"post","path":"/mariadb.remove"},{"method":"post","path":"/mariadb.saveEnvironment"},{"method":"post","path":"/mariadb.reload"},{"method":"post","path":"/mariadb.update"},{"method":"post","path":"/mariadb.move"},{"method":"post","path":"/mariadb.rebuild"}]} hasHead={true} />

View File

@@ -0,0 +1,76 @@
---
title: Mongo
full: true
_openapi:
toc:
- depth: 2
title: Mongo create
url: '#mongo-create'
- depth: 2
title: Mongo one
url: '#mongo-one'
- depth: 2
title: Mongo start
url: '#mongo-start'
- depth: 2
title: Mongo stop
url: '#mongo-stop'
- depth: 2
title: Mongo save External Port
url: '#mongo-save-external-port'
- depth: 2
title: Mongo deploy
url: '#mongo-deploy'
- depth: 2
title: Mongo change Status
url: '#mongo-change-status'
- depth: 2
title: Mongo reload
url: '#mongo-reload'
- depth: 2
title: Mongo remove
url: '#mongo-remove'
- depth: 2
title: Mongo save Environment
url: '#mongo-save-environment'
- depth: 2
title: Mongo update
url: '#mongo-update'
- depth: 2
title: Mongo move
url: '#mongo-move'
- depth: 2
title: Mongo rebuild
url: '#mongo-rebuild'
structuredData:
headings:
- content: Mongo create
id: mongo-create
- content: Mongo one
id: mongo-one
- content: Mongo start
id: mongo-start
- content: Mongo stop
id: mongo-stop
- content: Mongo save External Port
id: mongo-save-external-port
- content: Mongo deploy
id: mongo-deploy
- content: Mongo change Status
id: mongo-change-status
- content: Mongo reload
id: mongo-reload
- content: Mongo remove
id: mongo-remove
- content: Mongo save Environment
id: mongo-save-environment
- content: Mongo update
id: mongo-update
- content: Mongo move
id: mongo-move
- content: Mongo rebuild
id: mongo-rebuild
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/mongo.create"},{"method":"get","path":"/mongo.one"},{"method":"post","path":"/mongo.start"},{"method":"post","path":"/mongo.stop"},{"method":"post","path":"/mongo.saveExternalPort"},{"method":"post","path":"/mongo.deploy"},{"method":"post","path":"/mongo.changeStatus"},{"method":"post","path":"/mongo.reload"},{"method":"post","path":"/mongo.remove"},{"method":"post","path":"/mongo.saveEnvironment"},{"method":"post","path":"/mongo.update"},{"method":"post","path":"/mongo.move"},{"method":"post","path":"/mongo.rebuild"}]} hasHead={true} />

View File

@@ -0,0 +1,36 @@
---
title: Mounts
full: true
_openapi:
toc:
- depth: 2
title: Mounts create
url: '#mounts-create'
- depth: 2
title: Mounts remove
url: '#mounts-remove'
- depth: 2
title: Mounts one
url: '#mounts-one'
- depth: 2
title: Mounts update
url: '#mounts-update'
- depth: 2
title: Mounts all Named By Application Id
url: '#mounts-all-named-by-application-id'
structuredData:
headings:
- content: Mounts create
id: mounts-create
- content: Mounts remove
id: mounts-remove
- content: Mounts one
id: mounts-one
- content: Mounts update
id: mounts-update
- content: Mounts all Named By Application Id
id: mounts-all-named-by-application-id
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/mounts.create"},{"method":"post","path":"/mounts.remove"},{"method":"get","path":"/mounts.one"},{"method":"post","path":"/mounts.update"},{"method":"get","path":"/mounts.allNamedByApplicationId"}]} hasHead={true} />

View File

@@ -0,0 +1,76 @@
---
title: Mysql
full: true
_openapi:
toc:
- depth: 2
title: Mysql create
url: '#mysql-create'
- depth: 2
title: Mysql one
url: '#mysql-one'
- depth: 2
title: Mysql start
url: '#mysql-start'
- depth: 2
title: Mysql stop
url: '#mysql-stop'
- depth: 2
title: Mysql save External Port
url: '#mysql-save-external-port'
- depth: 2
title: Mysql deploy
url: '#mysql-deploy'
- depth: 2
title: Mysql change Status
url: '#mysql-change-status'
- depth: 2
title: Mysql reload
url: '#mysql-reload'
- depth: 2
title: Mysql remove
url: '#mysql-remove'
- depth: 2
title: Mysql save Environment
url: '#mysql-save-environment'
- depth: 2
title: Mysql update
url: '#mysql-update'
- depth: 2
title: Mysql move
url: '#mysql-move'
- depth: 2
title: Mysql rebuild
url: '#mysql-rebuild'
structuredData:
headings:
- content: Mysql create
id: mysql-create
- content: Mysql one
id: mysql-one
- content: Mysql start
id: mysql-start
- content: Mysql stop
id: mysql-stop
- content: Mysql save External Port
id: mysql-save-external-port
- content: Mysql deploy
id: mysql-deploy
- content: Mysql change Status
id: mysql-change-status
- content: Mysql reload
id: mysql-reload
- content: Mysql remove
id: mysql-remove
- content: Mysql save Environment
id: mysql-save-environment
- content: Mysql update
id: mysql-update
- content: Mysql move
id: mysql-move
- content: Mysql rebuild
id: mysql-rebuild
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/mysql.create"},{"method":"get","path":"/mysql.one"},{"method":"post","path":"/mysql.start"},{"method":"post","path":"/mysql.stop"},{"method":"post","path":"/mysql.saveExternalPort"},{"method":"post","path":"/mysql.deploy"},{"method":"post","path":"/mysql.changeStatus"},{"method":"post","path":"/mysql.reload"},{"method":"post","path":"/mysql.remove"},{"method":"post","path":"/mysql.saveEnvironment"},{"method":"post","path":"/mysql.update"},{"method":"post","path":"/mysql.move"},{"method":"post","path":"/mysql.rebuild"}]} hasHead={true} />

View File

@@ -0,0 +1,141 @@
---
title: Notification
full: true
_openapi:
toc:
- depth: 2
title: Notification create Slack
url: '#notification-create-slack'
- depth: 2
title: Notification update Slack
url: '#notification-update-slack'
- depth: 2
title: Notification test Slack Connection
url: '#notification-test-slack-connection'
- depth: 2
title: Notification create Telegram
url: '#notification-create-telegram'
- depth: 2
title: Notification update Telegram
url: '#notification-update-telegram'
- depth: 2
title: Notification test Telegram Connection
url: '#notification-test-telegram-connection'
- depth: 2
title: Notification create Discord
url: '#notification-create-discord'
- depth: 2
title: Notification update Discord
url: '#notification-update-discord'
- depth: 2
title: Notification test Discord Connection
url: '#notification-test-discord-connection'
- depth: 2
title: Notification create Email
url: '#notification-create-email'
- depth: 2
title: Notification update Email
url: '#notification-update-email'
- depth: 2
title: Notification test Email Connection
url: '#notification-test-email-connection'
- depth: 2
title: Notification remove
url: '#notification-remove'
- depth: 2
title: Notification one
url: '#notification-one'
- depth: 2
title: Notification all
url: '#notification-all'
- depth: 2
title: Notification receive Notification
url: '#notification-receive-notification'
- depth: 2
title: Notification create Gotify
url: '#notification-create-gotify'
- depth: 2
title: Notification update Gotify
url: '#notification-update-gotify'
- depth: 2
title: Notification test Gotify Connection
url: '#notification-test-gotify-connection'
- depth: 2
title: Notification create Ntfy
url: '#notification-create-ntfy'
- depth: 2
title: Notification update Ntfy
url: '#notification-update-ntfy'
- depth: 2
title: Notification test Ntfy Connection
url: '#notification-test-ntfy-connection'
- depth: 2
title: Notification create Lark
url: '#notification-create-lark'
- depth: 2
title: Notification update Lark
url: '#notification-update-lark'
- depth: 2
title: Notification test Lark Connection
url: '#notification-test-lark-connection'
- depth: 2
title: Notification get Email Providers
url: '#notification-get-email-providers'
structuredData:
headings:
- content: Notification create Slack
id: notification-create-slack
- content: Notification update Slack
id: notification-update-slack
- content: Notification test Slack Connection
id: notification-test-slack-connection
- content: Notification create Telegram
id: notification-create-telegram
- content: Notification update Telegram
id: notification-update-telegram
- content: Notification test Telegram Connection
id: notification-test-telegram-connection
- content: Notification create Discord
id: notification-create-discord
- content: Notification update Discord
id: notification-update-discord
- content: Notification test Discord Connection
id: notification-test-discord-connection
- content: Notification create Email
id: notification-create-email
- content: Notification update Email
id: notification-update-email
- content: Notification test Email Connection
id: notification-test-email-connection
- content: Notification remove
id: notification-remove
- content: Notification one
id: notification-one
- content: Notification all
id: notification-all
- content: Notification receive Notification
id: notification-receive-notification
- content: Notification create Gotify
id: notification-create-gotify
- content: Notification update Gotify
id: notification-update-gotify
- content: Notification test Gotify Connection
id: notification-test-gotify-connection
- content: Notification create Ntfy
id: notification-create-ntfy
- content: Notification update Ntfy
id: notification-update-ntfy
- content: Notification test Ntfy Connection
id: notification-test-ntfy-connection
- content: Notification create Lark
id: notification-create-lark
- content: Notification update Lark
id: notification-update-lark
- content: Notification test Lark Connection
id: notification-test-lark-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} />

View File

@@ -0,0 +1,51 @@
---
title: Organization
full: true
_openapi:
toc:
- depth: 2
title: Organization create
url: '#organization-create'
- depth: 2
title: Organization all
url: '#organization-all'
- depth: 2
title: Organization one
url: '#organization-one'
- depth: 2
title: Organization update
url: '#organization-update'
- depth: 2
title: Organization delete
url: '#organization-delete'
- depth: 2
title: Organization all Invitations
url: '#organization-all-invitations'
- depth: 2
title: Organization remove Invitation
url: '#organization-remove-invitation'
- depth: 2
title: Organization set Default
url: '#organization-set-default'
structuredData:
headings:
- content: Organization create
id: organization-create
- content: Organization all
id: organization-all
- content: Organization one
id: organization-one
- content: Organization update
id: organization-update
- content: Organization delete
id: organization-delete
- content: Organization all Invitations
id: organization-all-invitations
- content: Organization remove Invitation
id: organization-remove-invitation
- content: Organization set Default
id: organization-set-default
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/organization.create"},{"method":"get","path":"/organization.all"},{"method":"get","path":"/organization.one"},{"method":"post","path":"/organization.update"},{"method":"post","path":"/organization.delete"},{"method":"get","path":"/organization.allInvitations"},{"method":"post","path":"/organization.removeInvitation"},{"method":"post","path":"/organization.setDefault"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Port
full: true
_openapi:
toc:
- depth: 2
title: Port create
url: '#port-create'
- depth: 2
title: Port one
url: '#port-one'
- depth: 2
title: Port delete
url: '#port-delete'
- depth: 2
title: Port update
url: '#port-update'
structuredData:
headings:
- content: Port create
id: port-create
- content: Port one
id: port-one
- content: Port delete
id: port-delete
- content: Port update
id: port-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/port.create"},{"method":"get","path":"/port.one"},{"method":"post","path":"/port.delete"},{"method":"post","path":"/port.update"}]} hasHead={true} />

View File

@@ -0,0 +1,76 @@
---
title: Postgres
full: true
_openapi:
toc:
- depth: 2
title: Postgres create
url: '#postgres-create'
- depth: 2
title: Postgres one
url: '#postgres-one'
- depth: 2
title: Postgres start
url: '#postgres-start'
- depth: 2
title: Postgres stop
url: '#postgres-stop'
- depth: 2
title: Postgres save External Port
url: '#postgres-save-external-port'
- depth: 2
title: Postgres deploy
url: '#postgres-deploy'
- depth: 2
title: Postgres change Status
url: '#postgres-change-status'
- depth: 2
title: Postgres remove
url: '#postgres-remove'
- depth: 2
title: Postgres save Environment
url: '#postgres-save-environment'
- depth: 2
title: Postgres reload
url: '#postgres-reload'
- depth: 2
title: Postgres update
url: '#postgres-update'
- depth: 2
title: Postgres move
url: '#postgres-move'
- depth: 2
title: Postgres rebuild
url: '#postgres-rebuild'
structuredData:
headings:
- content: Postgres create
id: postgres-create
- content: Postgres one
id: postgres-one
- content: Postgres start
id: postgres-start
- content: Postgres stop
id: postgres-stop
- content: Postgres save External Port
id: postgres-save-external-port
- content: Postgres deploy
id: postgres-deploy
- content: Postgres change Status
id: postgres-change-status
- content: Postgres remove
id: postgres-remove
- content: Postgres save Environment
id: postgres-save-environment
- content: Postgres reload
id: postgres-reload
- content: Postgres update
id: postgres-update
- content: Postgres move
id: postgres-move
- content: Postgres rebuild
id: postgres-rebuild
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/postgres.create"},{"method":"get","path":"/postgres.one"},{"method":"post","path":"/postgres.start"},{"method":"post","path":"/postgres.stop"},{"method":"post","path":"/postgres.saveExternalPort"},{"method":"post","path":"/postgres.deploy"},{"method":"post","path":"/postgres.changeStatus"},{"method":"post","path":"/postgres.remove"},{"method":"post","path":"/postgres.saveEnvironment"},{"method":"post","path":"/postgres.reload"},{"method":"post","path":"/postgres.update"},{"method":"post","path":"/postgres.move"},{"method":"post","path":"/postgres.rebuild"}]} hasHead={true} />

View File

@@ -0,0 +1,26 @@
---
title: Preview Deployment
full: true
_openapi:
toc:
- depth: 2
title: Preview Deployment all
url: '#preview-deployment-all'
- depth: 2
title: Preview Deployment delete
url: '#preview-deployment-delete'
- depth: 2
title: Preview Deployment one
url: '#preview-deployment-one'
structuredData:
headings:
- content: Preview Deployment all
id: preview-deployment-all
- content: Preview Deployment delete
id: preview-deployment-delete
- content: Preview Deployment one
id: preview-deployment-one
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/previewDeployment.all"},{"method":"post","path":"/previewDeployment.delete"},{"method":"get","path":"/previewDeployment.one"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Project
full: true
_openapi:
toc:
- depth: 2
title: Project create
url: '#project-create'
- depth: 2
title: Project one
url: '#project-one'
- depth: 2
title: Project all
url: '#project-all'
- depth: 2
title: Project remove
url: '#project-remove'
- depth: 2
title: Project update
url: '#project-update'
- depth: 2
title: Project duplicate
url: '#project-duplicate'
structuredData:
headings:
- content: Project create
id: project-create
- content: Project one
id: project-one
- content: Project all
id: project-all
- content: Project remove
id: project-remove
- content: Project update
id: project-update
- content: Project duplicate
id: project-duplicate
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/project.create"},{"method":"get","path":"/project.one"},{"method":"get","path":"/project.all"},{"method":"post","path":"/project.remove"},{"method":"post","path":"/project.update"},{"method":"post","path":"/project.duplicate"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Redirects
full: true
_openapi:
toc:
- depth: 2
title: Redirects create
url: '#redirects-create'
- depth: 2
title: Redirects one
url: '#redirects-one'
- depth: 2
title: Redirects delete
url: '#redirects-delete'
- depth: 2
title: Redirects update
url: '#redirects-update'
structuredData:
headings:
- content: Redirects create
id: redirects-create
- content: Redirects one
id: redirects-one
- content: Redirects delete
id: redirects-delete
- content: Redirects update
id: redirects-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/redirects.create"},{"method":"get","path":"/redirects.one"},{"method":"post","path":"/redirects.delete"},{"method":"post","path":"/redirects.update"}]} hasHead={true} />

View File

@@ -0,0 +1,76 @@
---
title: Redis
full: true
_openapi:
toc:
- depth: 2
title: Redis create
url: '#redis-create'
- depth: 2
title: Redis one
url: '#redis-one'
- depth: 2
title: Redis start
url: '#redis-start'
- depth: 2
title: Redis reload
url: '#redis-reload'
- depth: 2
title: Redis stop
url: '#redis-stop'
- depth: 2
title: Redis save External Port
url: '#redis-save-external-port'
- depth: 2
title: Redis deploy
url: '#redis-deploy'
- depth: 2
title: Redis change Status
url: '#redis-change-status'
- depth: 2
title: Redis remove
url: '#redis-remove'
- depth: 2
title: Redis save Environment
url: '#redis-save-environment'
- depth: 2
title: Redis update
url: '#redis-update'
- depth: 2
title: Redis move
url: '#redis-move'
- depth: 2
title: Redis rebuild
url: '#redis-rebuild'
structuredData:
headings:
- content: Redis create
id: redis-create
- content: Redis one
id: redis-one
- content: Redis start
id: redis-start
- content: Redis reload
id: redis-reload
- content: Redis stop
id: redis-stop
- content: Redis save External Port
id: redis-save-external-port
- content: Redis deploy
id: redis-deploy
- content: Redis change Status
id: redis-change-status
- content: Redis remove
id: redis-remove
- content: Redis save Environment
id: redis-save-environment
- content: Redis update
id: redis-update
- content: Redis move
id: redis-move
- content: Redis rebuild
id: redis-rebuild
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/redis.create"},{"method":"get","path":"/redis.one"},{"method":"post","path":"/redis.start"},{"method":"post","path":"/redis.reload"},{"method":"post","path":"/redis.stop"},{"method":"post","path":"/redis.saveExternalPort"},{"method":"post","path":"/redis.deploy"},{"method":"post","path":"/redis.changeStatus"},{"method":"post","path":"/redis.remove"},{"method":"post","path":"/redis.saveEnvironment"},{"method":"post","path":"/redis.update"},{"method":"post","path":"/redis.move"},{"method":"post","path":"/redis.rebuild"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Registry
full: true
_openapi:
toc:
- depth: 2
title: Registry create
url: '#registry-create'
- depth: 2
title: Registry remove
url: '#registry-remove'
- depth: 2
title: Registry update
url: '#registry-update'
- depth: 2
title: Registry all
url: '#registry-all'
- depth: 2
title: Registry one
url: '#registry-one'
- depth: 2
title: Registry test Registry
url: '#registry-test-registry'
structuredData:
headings:
- content: Registry create
id: registry-create
- content: Registry remove
id: registry-remove
- content: Registry update
id: registry-update
- content: Registry all
id: registry-all
- content: Registry one
id: registry-one
- content: Registry test Registry
id: registry-test-registry
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/registry.create"},{"method":"post","path":"/registry.remove"},{"method":"post","path":"/registry.update"},{"method":"get","path":"/registry.all"},{"method":"get","path":"/registry.one"},{"method":"post","path":"/registry.testRegistry"}]} hasHead={true} />

View File

@@ -0,0 +1,21 @@
---
title: Rollback
full: true
_openapi:
toc:
- depth: 2
title: Rollback delete
url: '#rollback-delete'
- depth: 2
title: Rollback rollback
url: '#rollback-rollback'
structuredData:
headings:
- content: Rollback delete
id: rollback-delete
- content: Rollback rollback
id: rollback-rollback
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/rollback.delete"},{"method":"post","path":"/rollback.rollback"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Schedule
full: true
_openapi:
toc:
- depth: 2
title: Schedule create
url: '#schedule-create'
- depth: 2
title: Schedule update
url: '#schedule-update'
- depth: 2
title: Schedule delete
url: '#schedule-delete'
- depth: 2
title: Schedule list
url: '#schedule-list'
- depth: 2
title: Schedule one
url: '#schedule-one'
- depth: 2
title: Schedule run Manually
url: '#schedule-run-manually'
structuredData:
headings:
- content: Schedule create
id: schedule-create
- content: Schedule update
id: schedule-update
- content: Schedule delete
id: schedule-delete
- content: Schedule list
id: schedule-list
- content: Schedule one
id: schedule-one
- content: Schedule run Manually
id: schedule-run-manually
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/schedule.create"},{"method":"post","path":"/schedule.update"},{"method":"post","path":"/schedule.delete"},{"method":"get","path":"/schedule.list"},{"method":"get","path":"/schedule.one"},{"method":"post","path":"/schedule.runManually"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Security
full: true
_openapi:
toc:
- depth: 2
title: Security create
url: '#security-create'
- depth: 2
title: Security one
url: '#security-one'
- depth: 2
title: Security delete
url: '#security-delete'
- depth: 2
title: Security update
url: '#security-update'
structuredData:
headings:
- content: Security create
id: security-create
- content: Security one
id: security-one
- content: Security delete
id: security-delete
- content: Security update
id: security-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/security.create"},{"method":"get","path":"/security.one"},{"method":"post","path":"/security.delete"},{"method":"post","path":"/security.update"}]} hasHead={true} />

View File

@@ -0,0 +1,91 @@
---
title: Server
full: true
_openapi:
toc:
- depth: 2
title: Server create
url: '#server-create'
- depth: 2
title: Server one
url: '#server-one'
- depth: 2
title: Server get Default Command
url: '#server-get-default-command'
- depth: 2
title: Server all
url: '#server-all'
- depth: 2
title: Server count
url: '#server-count'
- depth: 2
title: Server with S S H Key
url: '#server-with-s-s-h-key'
- depth: 2
title: Server build Servers
url: '#server-build-servers'
- depth: 2
title: Server setup
url: '#server-setup'
- depth: 2
title: Server validate
url: '#server-validate'
- depth: 2
title: Server security
url: '#server-security'
- depth: 2
title: Server setup Monitoring
url: '#server-setup-monitoring'
- depth: 2
title: Server remove
url: '#server-remove'
- depth: 2
title: Server update
url: '#server-update'
- depth: 2
title: Server public Ip
url: '#server-public-ip'
- depth: 2
title: Server get Server Time
url: '#server-get-server-time'
- depth: 2
title: Server get Server Metrics
url: '#server-get-server-metrics'
structuredData:
headings:
- content: Server create
id: server-create
- content: Server one
id: server-one
- content: Server get Default Command
id: server-get-default-command
- content: Server all
id: server-all
- content: Server count
id: server-count
- content: Server with S S H Key
id: server-with-s-s-h-key
- content: Server build Servers
id: server-build-servers
- content: Server setup
id: server-setup
- content: Server validate
id: server-validate
- content: Server security
id: server-security
- content: Server setup Monitoring
id: server-setup-monitoring
- content: Server remove
id: server-remove
- content: Server update
id: server-update
- content: Server public Ip
id: server-public-ip
- content: Server get Server Time
id: server-get-server-time
- content: Server get Server Metrics
id: server-get-server-metrics
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/server.create"},{"method":"get","path":"/server.one"},{"method":"get","path":"/server.getDefaultCommand"},{"method":"get","path":"/server.all"},{"method":"get","path":"/server.count"},{"method":"get","path":"/server.withSSHKey"},{"method":"get","path":"/server.buildServers"},{"method":"post","path":"/server.setup"},{"method":"get","path":"/server.validate"},{"method":"get","path":"/server.security"},{"method":"post","path":"/server.setupMonitoring"},{"method":"post","path":"/server.remove"},{"method":"post","path":"/server.update"},{"method":"get","path":"/server.publicIp"},{"method":"get","path":"/server.getServerTime"},{"method":"get","path":"/server.getServerMetrics"}]} hasHead={true} />

View File

@@ -0,0 +1,241 @@
---
title: Settings
full: true
_openapi:
toc:
- depth: 2
title: Settings reload Server
url: '#settings-reload-server'
- depth: 2
title: Settings clean Redis
url: '#settings-clean-redis'
- depth: 2
title: Settings reload Redis
url: '#settings-reload-redis'
- depth: 2
title: Settings reload Traefik
url: '#settings-reload-traefik'
- depth: 2
title: Settings toggle Dashboard
url: '#settings-toggle-dashboard'
- depth: 2
title: Settings clean Unused Images
url: '#settings-clean-unused-images'
- depth: 2
title: Settings clean Unused Volumes
url: '#settings-clean-unused-volumes'
- depth: 2
title: Settings clean Stopped Containers
url: '#settings-clean-stopped-containers'
- depth: 2
title: Settings clean Docker Builder
url: '#settings-clean-docker-builder'
- depth: 2
title: Settings clean Docker Prune
url: '#settings-clean-docker-prune'
- depth: 2
title: Settings clean All
url: '#settings-clean-all'
- depth: 2
title: Settings clean Monitoring
url: '#settings-clean-monitoring'
- depth: 2
title: Settings save S S H Private Key
url: '#settings-save-s-s-h-private-key'
- depth: 2
title: Settings assign Domain Server
url: '#settings-assign-domain-server'
- depth: 2
title: Settings clean S S H Private Key
url: '#settings-clean-s-s-h-private-key'
- depth: 2
title: Settings update Docker Cleanup
url: '#settings-update-docker-cleanup'
- depth: 2
title: Settings read Traefik Config
url: '#settings-read-traefik-config'
- depth: 2
title: Settings update Traefik Config
url: '#settings-update-traefik-config'
- depth: 2
title: Settings read Web Server Traefik Config
url: '#settings-read-web-server-traefik-config'
- depth: 2
title: Settings update Web Server Traefik Config
url: '#settings-update-web-server-traefik-config'
- depth: 2
title: Settings read Middleware Traefik Config
url: '#settings-read-middleware-traefik-config'
- depth: 2
title: Settings update Middleware Traefik Config
url: '#settings-update-middleware-traefik-config'
- depth: 2
title: Settings get Update Data
url: '#settings-get-update-data'
- depth: 2
title: Settings update Server
url: '#settings-update-server'
- depth: 2
title: Settings get Dokploy Version
url: '#settings-get-dokploy-version'
- depth: 2
title: Settings get Release Tag
url: '#settings-get-release-tag'
- depth: 2
title: Settings read Directories
url: '#settings-read-directories'
- depth: 2
title: Settings update Traefik File
url: '#settings-update-traefik-file'
- depth: 2
title: Settings read Traefik File
url: '#settings-read-traefik-file'
- depth: 2
title: Settings get Ip
url: '#settings-get-ip'
- depth: 2
title: Settings get Open Api Document
url: '#settings-get-open-api-document'
- depth: 2
title: Settings read Traefik Env
url: '#settings-read-traefik-env'
- depth: 2
title: Settings write Traefik Env
url: '#settings-write-traefik-env'
- depth: 2
title: Settings have Traefik Dashboard Port Enabled
url: '#settings-have-traefik-dashboard-port-enabled'
- depth: 2
title: Settings have Activate Requests
url: '#settings-have-activate-requests'
- depth: 2
title: Settings toggle Requests
url: '#settings-toggle-requests'
- depth: 2
title: Settings is Cloud
url: '#settings-is-cloud'
- depth: 2
title: Settings is User Subscribed
url: '#settings-is-user-subscribed'
- depth: 2
title: Settings health
url: '#settings-health'
- depth: 2
title: Settings setup G P U
url: '#settings-setup-g-p-u'
- depth: 2
title: Settings check G P U Status
url: '#settings-check-g-p-u-status'
- depth: 2
title: Settings update Traefik Ports
url: '#settings-update-traefik-ports'
- depth: 2
title: Settings get Traefik Ports
url: '#settings-get-traefik-ports'
- depth: 2
title: Settings update Log Cleanup
url: '#settings-update-log-cleanup'
- depth: 2
title: Settings get Log Cleanup Status
url: '#settings-get-log-cleanup-status'
- depth: 2
title: Settings get Dokploy Cloud Ips
url: '#settings-get-dokploy-cloud-ips'
structuredData:
headings:
- content: Settings reload Server
id: settings-reload-server
- content: Settings clean Redis
id: settings-clean-redis
- content: Settings reload Redis
id: settings-reload-redis
- content: Settings reload Traefik
id: settings-reload-traefik
- content: Settings toggle Dashboard
id: settings-toggle-dashboard
- content: Settings clean Unused Images
id: settings-clean-unused-images
- content: Settings clean Unused Volumes
id: settings-clean-unused-volumes
- content: Settings clean Stopped Containers
id: settings-clean-stopped-containers
- content: Settings clean Docker Builder
id: settings-clean-docker-builder
- content: Settings clean Docker Prune
id: settings-clean-docker-prune
- content: Settings clean All
id: settings-clean-all
- content: Settings clean Monitoring
id: settings-clean-monitoring
- content: Settings save S S H Private Key
id: settings-save-s-s-h-private-key
- content: Settings assign Domain Server
id: settings-assign-domain-server
- content: Settings clean S S H Private Key
id: settings-clean-s-s-h-private-key
- content: Settings update Docker Cleanup
id: settings-update-docker-cleanup
- content: Settings read Traefik Config
id: settings-read-traefik-config
- content: Settings update Traefik Config
id: settings-update-traefik-config
- content: Settings read Web Server Traefik Config
id: settings-read-web-server-traefik-config
- content: Settings update Web Server Traefik Config
id: settings-update-web-server-traefik-config
- content: Settings read Middleware Traefik Config
id: settings-read-middleware-traefik-config
- content: Settings update Middleware Traefik Config
id: settings-update-middleware-traefik-config
- content: Settings get Update Data
id: settings-get-update-data
- content: Settings update Server
id: settings-update-server
- content: Settings get Dokploy Version
id: settings-get-dokploy-version
- content: Settings get Release Tag
id: settings-get-release-tag
- content: Settings read Directories
id: settings-read-directories
- content: Settings update Traefik File
id: settings-update-traefik-file
- content: Settings read Traefik File
id: settings-read-traefik-file
- content: Settings get Ip
id: settings-get-ip
- content: Settings get Open Api Document
id: settings-get-open-api-document
- content: Settings read Traefik Env
id: settings-read-traefik-env
- content: Settings write Traefik Env
id: settings-write-traefik-env
- content: Settings have Traefik Dashboard Port Enabled
id: settings-have-traefik-dashboard-port-enabled
- content: Settings have Activate Requests
id: settings-have-activate-requests
- content: Settings toggle Requests
id: settings-toggle-requests
- content: Settings is Cloud
id: settings-is-cloud
- content: Settings is User Subscribed
id: settings-is-user-subscribed
- content: Settings health
id: settings-health
- content: Settings setup G P U
id: settings-setup-g-p-u
- content: Settings check G P U Status
id: settings-check-g-p-u-status
- content: Settings update Traefik Ports
id: settings-update-traefik-ports
- content: Settings get Traefik Ports
id: settings-get-traefik-ports
- content: Settings update Log Cleanup
id: settings-update-log-cleanup
- content: Settings get Log Cleanup Status
id: settings-get-log-cleanup-status
- content: Settings get Dokploy Cloud Ips
id: settings-get-dokploy-cloud-ips
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","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":"get","path":"/settings.readTraefikConfig"},{"method":"post","path":"/settings.updateTraefikConfig"},{"method":"get","path":"/settings.readWebServerTraefikConfig"},{"method":"post","path":"/settings.updateWebServerTraefikConfig"},{"method":"get","path":"/settings.readMiddlewareTraefikConfig"},{"method":"post","path":"/settings.updateMiddlewareTraefikConfig"},{"method":"post","path":"/settings.getUpdateData"},{"method":"post","path":"/settings.updateServer"},{"method":"get","path":"/settings.getDokployVersion"},{"method":"get","path":"/settings.getReleaseTag"},{"method":"get","path":"/settings.readDirectories"},{"method":"post","path":"/settings.updateTraefikFile"},{"method":"get","path":"/settings.readTraefikFile"},{"method":"get","path":"/settings.getIp"},{"method":"get","path":"/settings.getOpenApiDocument"},{"method":"get","path":"/settings.readTraefikEnv"},{"method":"post","path":"/settings.writeTraefikEnv"},{"method":"get","path":"/settings.haveTraefikDashboardPortEnabled"},{"method":"get","path":"/settings.haveActivateRequests"},{"method":"post","path":"/settings.toggleRequests"},{"method":"get","path":"/settings.isCloud"},{"method":"get","path":"/settings.isUserSubscribed"},{"method":"get","path":"/settings.health"},{"method":"post","path":"/settings.setupGPU"},{"method":"get","path":"/settings.checkGPUStatus"},{"method":"post","path":"/settings.updateTraefikPorts"},{"method":"get","path":"/settings.getTraefikPorts"},{"method":"post","path":"/settings.updateLogCleanup"},{"method":"get","path":"/settings.getLogCleanupStatus"},{"method":"get","path":"/settings.getDokployCloudIps"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Ssh Key
full: true
_openapi:
toc:
- depth: 2
title: Ssh Key create
url: '#ssh-key-create'
- depth: 2
title: Ssh Key remove
url: '#ssh-key-remove'
- depth: 2
title: Ssh Key one
url: '#ssh-key-one'
- depth: 2
title: Ssh Key all
url: '#ssh-key-all'
- depth: 2
title: Ssh Key generate
url: '#ssh-key-generate'
- depth: 2
title: Ssh Key update
url: '#ssh-key-update'
structuredData:
headings:
- content: Ssh Key create
id: ssh-key-create
- content: Ssh Key remove
id: ssh-key-remove
- content: Ssh Key one
id: ssh-key-one
- content: Ssh Key all
id: ssh-key-all
- content: Ssh Key generate
id: ssh-key-generate
- content: Ssh Key update
id: ssh-key-update
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"post","path":"/sshKey.create"},{"method":"post","path":"/sshKey.remove"},{"method":"get","path":"/sshKey.one"},{"method":"get","path":"/sshKey.all"},{"method":"post","path":"/sshKey.generate"},{"method":"post","path":"/sshKey.update"}]} hasHead={true} />

View File

@@ -0,0 +1,31 @@
---
title: Stripe
full: true
_openapi:
toc:
- depth: 2
title: Stripe get Products
url: '#stripe-get-products'
- depth: 2
title: Stripe create Checkout Session
url: '#stripe-create-checkout-session'
- depth: 2
title: Stripe create Customer Portal Session
url: '#stripe-create-customer-portal-session'
- depth: 2
title: Stripe can Create More Servers
url: '#stripe-can-create-more-servers'
structuredData:
headings:
- content: Stripe get Products
id: stripe-get-products
- content: Stripe create Checkout Session
id: stripe-create-checkout-session
- content: Stripe create Customer Portal Session
id: stripe-create-customer-portal-session
- content: Stripe can Create More Servers
id: stripe-can-create-more-servers
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/stripe.getProducts"},{"method":"post","path":"/stripe.createCheckoutSession"},{"method":"post","path":"/stripe.createCustomerPortalSession"},{"method":"get","path":"/stripe.canCreateMoreServers"}]} hasHead={true} />

View File

@@ -0,0 +1,26 @@
---
title: Swarm
full: true
_openapi:
toc:
- depth: 2
title: Swarm get Nodes
url: '#swarm-get-nodes'
- depth: 2
title: Swarm get Node Info
url: '#swarm-get-node-info'
- depth: 2
title: Swarm get Node Apps
url: '#swarm-get-node-apps'
structuredData:
headings:
- content: Swarm get Nodes
id: swarm-get-nodes
- content: Swarm get Node Info
id: swarm-get-node-info
- content: Swarm get Node Apps
id: swarm-get-node-apps
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/swarm.getNodes"},{"method":"get","path":"/swarm.getNodeInfo"},{"method":"get","path":"/swarm.getNodeApps"}]} hasHead={true} />

View File

@@ -0,0 +1,101 @@
---
title: User
full: true
_openapi:
toc:
- depth: 2
title: User all
url: '#user-all'
- depth: 2
title: User one
url: '#user-one'
- depth: 2
title: User get
url: '#user-get'
- depth: 2
title: User have Root Access
url: '#user-have-root-access'
- depth: 2
title: User get Backups
url: '#user-get-backups'
- depth: 2
title: User get Server Metrics
url: '#user-get-server-metrics'
- depth: 2
title: User update
url: '#user-update'
- depth: 2
title: User get User By Token
url: '#user-get-user-by-token'
- depth: 2
title: User get Metrics Token
url: '#user-get-metrics-token'
- depth: 2
title: User remove
url: '#user-remove'
- depth: 2
title: User assign Permissions
url: '#user-assign-permissions'
- depth: 2
title: User get Invitations
url: '#user-get-invitations'
- depth: 2
title: User get Container Metrics
url: '#user-get-container-metrics'
- depth: 2
title: User generate Token
url: '#user-generate-token'
- depth: 2
title: User delete Api Key
url: '#user-delete-api-key'
- depth: 2
title: User create Api Key
url: '#user-create-api-key'
- depth: 2
title: User check User Organizations
url: '#user-check-user-organizations'
- depth: 2
title: User send Invitation
url: '#user-send-invitation'
structuredData:
headings:
- content: User all
id: user-all
- content: User one
id: user-one
- content: User get
id: user-get
- content: User have Root Access
id: user-have-root-access
- content: User get Backups
id: user-get-backups
- content: User get Server Metrics
id: user-get-server-metrics
- content: User update
id: user-update
- content: User get User By Token
id: user-get-user-by-token
- content: User get Metrics Token
id: user-get-metrics-token
- content: User remove
id: user-remove
- content: User assign Permissions
id: user-assign-permissions
- content: User get Invitations
id: user-get-invitations
- content: User get Container Metrics
id: user-get-container-metrics
- content: User generate Token
id: user-generate-token
- content: User delete Api Key
id: user-delete-api-key
- content: User create Api Key
id: user-create-api-key
- content: User check User Organizations
id: user-check-user-organizations
- content: User send Invitation
id: user-send-invitation
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/user.all"},{"method":"get","path":"/user.one"},{"method":"get","path":"/user.get"},{"method":"get","path":"/user.haveRootAccess"},{"method":"get","path":"/user.getBackups"},{"method":"get","path":"/user.getServerMetrics"},{"method":"post","path":"/user.update"},{"method":"get","path":"/user.getUserByToken"},{"method":"get","path":"/user.getMetricsToken"},{"method":"post","path":"/user.remove"},{"method":"post","path":"/user.assignPermissions"},{"method":"get","path":"/user.getInvitations"},{"method":"get","path":"/user.getContainerMetrics"},{"method":"post","path":"/user.generateToken"},{"method":"post","path":"/user.deleteApiKey"},{"method":"post","path":"/user.createApiKey"},{"method":"get","path":"/user.checkUserOrganizations"},{"method":"post","path":"/user.sendInvitation"}]} hasHead={true} />

View File

@@ -0,0 +1,41 @@
---
title: Volume Backups
full: true
_openapi:
toc:
- depth: 2
title: Volume Backups list
url: '#volume-backups-list'
- depth: 2
title: Volume Backups create
url: '#volume-backups-create'
- depth: 2
title: Volume Backups one
url: '#volume-backups-one'
- depth: 2
title: Volume Backups delete
url: '#volume-backups-delete'
- depth: 2
title: Volume Backups update
url: '#volume-backups-update'
- depth: 2
title: Volume Backups run Manually
url: '#volume-backups-run-manually'
structuredData:
headings:
- content: Volume Backups list
id: volume-backups-list
- content: Volume Backups create
id: volume-backups-create
- content: Volume Backups one
id: volume-backups-one
- content: Volume Backups delete
id: volume-backups-delete
- content: Volume Backups update
id: volume-backups-update
- content: Volume Backups run Manually
id: volume-backups-run-manually
contents: []
---
<APIPage document={"./public/openapi.json"} operations={[{"method":"get","path":"/volumeBackups.list"},{"method":"post","path":"/volumeBackups.create"},{"method":"get","path":"/volumeBackups.one"},{"method":"post","path":"/volumeBackups.delete"},{"method":"post","path":"/volumeBackups.update"},{"method":"post","path":"/volumeBackups.runManually"}]} hasHead={true} />

View File

@@ -0,0 +1,99 @@
---
title: Dokploy API
description: How to interact with the dokploy API for administrators and users
---
In some cases, you may need to interact directly with the dokploy API. Here's how both administrators and users can do this.
## For Administrators
1. Access the Swagger UI by navigating to `your-vps-ip:3000/swagger`.
2. Use the Swagger interface to interact with the API.
3. By default, access to the Swagger UI is restricted, and only authenticated administrators can access the API.
## For Users
1. By default, users do not have direct access to the API.
2. Administrators can grant users access to:
- Generate access tokens
- Access the Swagger UI
3. If you need access, contact your administrator.
Note: The API provides advanced functionalities. Make sure you understand the operations you're performing to avoid unintended changes to the system.
## Usage
By default the OpenApi base url is `http://localhost:3000/api`, you need to replace with the ip of your dokploy instance or the domain name.
### Authentication
The API uses JWT tokens for authentication. You can generate a token by going to the `/settings/profile` page and go to API/CLI Section and generate the token.
Let's take a example of authenticated request:
```bash
curl -X 'GET' \
'https://dokploy.com/api/project.all' \
-H 'accept: application/json' \
-H 'x-api-key: YOUR-GENERATED-API-KEY'
```
then you will get the something like this:
```json
[
{
"projectId": "klZKsyw5g-QT_jrWJ5T-w",
"name": "Random",
"description": "",
"createdAt": "2024-06-19T15:05:58.785Z",
"adminId": "_WrKZbs7iJAA3p4N2Yfyu",
"applications": [],
"mariadb": [],
"mongo": [],
"mysql": [
{
"mysqlId": "N3cudwO46TiDXzBm4SaQ1",
"name": "mysql",
"appName": "random-mysql-924715",
"description": "",
"databaseName": "mysql",
"databaseUser": "mysql",
"databasePassword": "h13BzO6y3KYSHaQg",
"databaseRootPassword": "mM1b7JeoPA7jArxj",
"dockerImage": "mysql:8",
"command": null,
"env": null,
"memoryReservation": null,
"memoryLimit": null,
"cpuReservation": null,
"cpuLimit": null,
"externalPort": null,
"applicationStatus": "done",
"createdAt": "2024-06-24T01:55:40.378Z",
"projectId": "klZKsyw5g-QT_jrWJ5T-w"
}
],
"postgres": [],
"redis": [
{
"redisId": "TtFK5S4QFaIjaNGOb8Ku-",
"name": "redis",
"appName": "random-redis-7eec62",
"description": "",
"databasePassword": "Yvb8gqClfomjcue8",
"dockerImage": "redis:7",
"command": null,
"env": null,
"memoryReservation": null,
"memoryLimit": null,
"cpuReservation": null,
"cpuLimit": null,
"externalPort": 6379,
"createdAt": "2024-06-26T06:43:20.570Z",
"applicationStatus": "done",
"projectId": "klZKsyw5g-QT_jrWJ5T-w"
}
],
"compose": []
},
]
```

View File

@@ -0,0 +1,7 @@
{
"title": "API",
"description": "API Documentation",
"icon": "Building2",
"root": true,
"pages": ["---Get Started---", "index", "---API---", "...", "---Reference---"]
}

View File

@@ -0,0 +1,20 @@
---
title: Application
description: A guide to using the Dokploy CLI to manage applications
---
The Dokploy CLI can be used to create, deploy, and manage applications.
## Requirements
Is required to be already authenticated with the Dokploy CLI.
## Commands
1. `dokploy app create` - Create a new application.
2. `dokploy app delete` - Delete an application.
3. `dokploy app deploy` - Deploy an application.
4. `dokploy app stop` - Stop a running application.

View File

@@ -0,0 +1,29 @@
---
title: Authentication
description: A guide to authenticating with the Dokploy CLI
---
The Dokploy CLI uses a token-based authentication system. To authenticate, you'll need to create an access token and store it securely.
## Creating an Access Token
To create an access token, first you need to have permissions if you are admin you don't need permissions.
by default access token never expires.
You can go to `dashboard/settings/profile` and click on the `Generate` button.
<ImageZoom src="/assets/cli/token.png" width={800} height={630} alt='home og image' className="rounded-lg" />
## Storing the Access Token
Dokploy when you create an access token automatically will generate a config.json with the access token and the server url.
## Commands
1. `dokploy authenticate` - Authenticate with the Dokploy CLI.
2. `dokploy verify` - Verify if the access token is valid.

View File

@@ -0,0 +1,45 @@
---
title: Databases
description: A guide to using the Dokploy CLI to manage databases
---
The Dokploy CLI can be used to create, deploy, and manage databases.
## Requirements
Is required to be already authenticated with the Dokploy CLI.
## Commands
### MariaDB
1. `dokploy database mariadb create` - Create a new mariadb database.
2. `dokploy database mariadb delete` - Delete an mariadb database.
3. `dokploy database mariadb deploy` - Deploy a mariadb database.
4. `dokploy database mariadb stop` - Stop a running mariadb database.
### PostgreSQL
1. `dokploy database postgresql create` - Create a new postgresql database.
2. `dokploy database postgresql delete` - Delete an postgresql database.
3. `dokploy database postgresql deploy` - Deploy a postgresql database.
4. `dokploy database postgresql stop` - Stop a running postgresql database.
### MySQL
1. `dokploy database mysql create` - Create a new mysql database.
2. `dokploy database mysql delete` - Delete an mysql database.
3. `dokploy database mysql deploy` - Deploy a mysql database.
4. `dokploy database mysql stop` - Stop a running mysql database.
### MongoDB
1. `dokploy database mongodb create` - Create a new mongodb database.
2. `dokploy database mongodb delete` - Delete an mongodb database.
3. `dokploy database mongodb deploy` - Deploy a mongodb database.
4. `dokploy database mongodb stop` - Stop a running mongodb database.
### Redis
1. `dokploy database redis create` - Create a new redis database.
2. `dokploy database redis delete` - Delete an redis database.
3. `dokploy database redis deploy` - Deploy a redis database.
4. `dokploy database redis stop` - Stop a running redis database.

View File

@@ -0,0 +1,18 @@
---
title: Enviroment
description: A guide to using the Dokploy CLI to manage enviroment
---
The Dokploy CLI can be used to create, deploy, and manage enviroments.
## Requirements
Is required to be already authenticated with the Dokploy CLI.
## Commands
1. `dokploy env pull <file>` - Pull environment variables from Dokploy in a file.
2. `dokploy env push <file>` - Push environment variables to Dokploy from a file.

View File

@@ -0,0 +1,23 @@
---
title: Introduction
description: A guide to using the Dokploy command-line interface
---
Dokploy CLI is a command-line tool for remotely managing your Dokploy server. It simplifies creating, deploying, and managing applications and databases.
## Installation
```bash
npm install -g @dokploy/cli
```
## Usage
```bash
dokploy COMMAND
```
To get help on a specific command:
```bash
dokploy COMMAND --help
```

View File

@@ -0,0 +1,13 @@
{
"title": "CLI",
"description": "CLI Documentation",
"icon": "Building2",
"root": true,
"pages": [
"---Get Started---",
"index",
"comparisons",
"---Commands---",
"..."
]
}

View File

@@ -0,0 +1,18 @@
---
title: Project
description: A guide to using the Dokploy CLI to manage projects
---
The Dokploy CLI can be used to create, deploy, and manage projects.
## Requirements
Is required to be already authenticated with the Dokploy CLI.
## Commands
1. `dokploy project create` - Create a new project.
2. `dokploy project info` - Get information about a project.
3. `dokploy project list` - List all projects.

View File

@@ -0,0 +1,115 @@
---
title: Docker Registry
description: 'Configure your Docker Registry repositories for deployments. This includes setting up access tokens, repository names, and authentication.'
---
Dokploy provides seamless integration with Docker Registry repositories, allowing you to deploy applications directly from your container images. This feature is available for single applications and supports both public and private registries.
## Configuration Overview
To connect a Docker Registry to your application:
1. Navigate to your application's **General** tab
2. Select **Docker** as the source
3. Configure the following settings:
| Setting | Description |
|---------|-------------|
| **Docker Image** | Full name of the Docker image (e.g., `nginx:latest`, `myorg/myapp:v1.0`) |
| **Docker Registry URL** | Registry URL (defaults to Docker Hub if not specified) |
| **Docker Registry Username** | Username for registry authentication |
| **Docker Registry Password** | Password or access token for authentication |
<Callout type="info">
For private registries, authentication is required. For public images, you can leave the username and password fields empty.
</Callout>
## Docker Hub Integration
Docker Hub is the default registry and supports both username/password and token-based authentication.
### Method 1: Username and Password
1. **Username**: Enter your Docker Hub username
2. **Password**: Enter your Docker Hub password
### Method 2: Access Token (Recommended)
Using access tokens is more secure and allows fine-grained permissions:
1. **Create Access Token**:
- Go to [Docker Hub Settings](https://hub.docker.com/settings/security) → **Personal Access Tokens**
- Click **Generate New Token**
- Set description: `Dokploy-Docker-Hub-Token`
- Select **Read-only** permissions
- Click **Generate**
2. **Configure in Dokploy**:
- **Username**: Your Docker Hub username
- **Password**: Paste the generated access token
- **Registry URL**: Leave empty (defaults to Docker Hub)
3. **Deploy**: Click **Save** and then **Deploy** from the General tab
## GitHub Container Registry (GHCR)
GHCR allows you to store container images alongside your GitHub repositories.
### Prerequisites
- Your Docker image must already be published to GHCR
- You need a GitHub Personal Access Token with appropriate permissions
### Setup Process
1. **Create GitHub Personal Access Token**:
- Go to [GitHub Settings](https://github.com/settings/tokens) → **Personal Access Tokens**
- Click **Generate new token (classic)**
- Set token name: `Dokploy-GHCR-Token`
- Select the following scopes:
- `repo` - Access to repositories
- `workflow` - Access to GitHub Actions
- `write:packages` - Upload packages
- `delete:packages` - Delete packages
- Click **Generate token**
2. **Configure in Dokploy**:
- **Docker Image**: `ghcr.io/username/repository:tag`
- **Registry URL**: `ghcr.io`
- **Username**: Your GitHub username
- **Password**: Paste the generated personal access token
3. **Deploy**: Click **Save** and then **Deploy** from the General tab
### Public Images
For public images from any registry:
- **Docker Image**: Full image path (e.g., `quay.io/prometheus/prometheus:latest`)
- **Registry URL**: Registry domain (if not Docker Hub)
- **Username**: Leave empty
- **Password**: Leave empty
## Best Practices
<Callout type="tip">
**Security Recommendations:**
- Use access tokens instead of passwords when possible
- Grant minimal required permissions to tokens
- Regularly rotate access tokens
- Use private registries for sensitive applications
</Callout>
## Troubleshooting
Common issues and solutions:
- **Authentication Failed**: Verify your credentials and token permissions
- **Image Not Found**: Check the image name and tag spelling
- **Pull Rate Limits**: Consider using authenticated requests or private registries
- **Registry Timeout**: Verify the registry URL is accessible from your Dokploy instance

View File

@@ -0,0 +1,73 @@
---
title: Bitbucket
description: 'Configure your Bitbucket repositories for deployments. This includes setting up access tokens, repository names, and branches.'
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offer a way to connect your Bitbucket Repository to your Dokploy panel, you can use Groups Names or personal accounts.
Go to `Git` and select `Bitbucket` as the source, then you can use the following options:
- **Bitbucket Username**: Set the username that you want to connect to Dokploy.
- **App Password**: Set the app password you've created.
- **Workspace(Optional)**: Assign a workspace name, this is useful if you want to connect to another workspace.
Follow the steps to connect your Bitbucket account to Dokploy.
1. Go to `https://bitbucket.org/account/settings/app-passwords/new` .
2. Set Label: eg. `Dokploy-Bitbucket-App`. you can choose any name that you want.
3. In permissions make sure to select `Account: Read`, `Workspace membership: Read`, `Projects: Read`
, `Repositories: Read` `Pull requests: Read` and `Webhooks: Read and write`.
4. Click on `Create`.
5. Copy the `App Password` and paste it in Dokploy `Bitbucket` Modal section.
6. Set your `Bitbucket Username`.
7. (Optional) If you want to use Workspaces, go to `https://bitbucket.org/account/workspaces/`, eg. If you have
`dokploy-workspace` copy and paste it in Workspace Name, please make sure to use the slugified name, if you use names like Dokploy Workspace in this field can cause issues.
7. Click on `Configure Bitbucket`.
8. If everything is correct, you can update enter to the Update Icon, and click on `Test Connection` to make sure everything is working.
9. Now you can use the repositories from your Gitlab Account in `Applications` or `Docker Compose` services.
<Callout type='warn'>
Dokploy doesn't support Bitbucket Automatic deployments on each push you make to your repository.
</Callout>
## Setup Automatic Deployments
You can configure automatic deployments in Dokploy for the Following Services:
1. **Applications**
2. **Docker Compose**
The steps are the same for both services.
1. Go to either `Applications` or `Docker Compose` and go to `Deployments` Tab.
2. Copy the `Webhook URL`.
3. Go to your Bitbucket Account and select the repository.
4. In the left menu, select `Repository Settings` and then `Webhooks`.
5. Click on `Add Webhook`.
6. Set any `Title` and the `URL` to the one you copied in the previous step.
7. In the Trigger section, select `Push Events`.
8. Click on `Add Webhook`.
10. Now you have automatic deployments enabled for the selected repository.
## Clarification on Automatic Deployments
By default, Dokploy will automatically deploy your application on the Branch you have selected.
eg. Let's suppose you have a `application` in this way:
Repository: `my-app`
Branch: `feature`
If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because
your application have selected `feature` as the Branch.
<Callout>
In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy
and select the branch in each of them.
This is very usefull if you want to have multiple environments for the same application.
</Callout>

View File

@@ -0,0 +1,77 @@
---
title: Gitea
description: 'Configure Gitea repositories for deployments. This includes setting up access tokens, repository names, and branches.'
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offers a way to connect your Gitea Repository to your Dokploy panel, you can use Organizations or personal accounts.
Go to `Git` and select `Gitea` as the source, then you can use the following options:
- **Application ID**: Select the application ID that you want to connect to Dokploy.
- **Personal Secret**: Select the secret that you want to connect to Dokploy.
- **Organization Name(Optional)**: Select the organization name that you want to connect to Dokploy (Ideal for Gitea Organizations).
Follow the steps to connect your Gitea account to Dokploy:
1. Go to your Gitea instance's settings (e.g., `https://gitea.com/user/settings/applications`) and scroll to the `Create a new OAuth2 Application`.
2. Set Application Name: e.g., `Dokploy-Gitea-App`. Choose any name you want.
3. Redirect URI: Copy the `Redirect URI` from Dokploy. e.g., `https://dokploy.com/api/providers/gitea/callback`.
4. Check Confidential Client
5. Click on `Create Application`.
6. Copy the `Client ID` and `Client Secret` from Gitea and paste them in Dokploy's `Gitea` Modal section.
7. Click on `Configure Gitea App`.
8. That operation will save the Gitea Provider configuration and redirect you to Gitia to authorize Dokploy to have access.
9. Click on `Authorize`.
10. You will be redirected to the `Git` section of Dokploy.
11. Now you can use the repositories from your Gitea Account in `Applications` or `Docker Compose` services.
<Callout type='warn'>
Dokploy doesn't support Gitea Automatic deployments on each push you make to your repository.
</Callout>
## Setup Automatic Deployments
You can configure automatic deployments in Dokploy for the Following Services:
1. **Applications**
2. **Docker Compose**
The steps are the same for both services.
1. Go to either `Applications` or `Docker Compose` and go to `Deployments` Tab.
2. Copy the `Webhook URL`.
3. Go to your Gitea Account and select the repository.
4. In the left menu, select `Settings` and then `Webhooks`.
5. Click on `Add Webhook`.
6. Set the `URL` to the one you copied in the previous step.
7. In the Trigger section, select `Push Events`.
8. Click on `Add Webhook`.
9. Click on `Save`.
10. Now you have automatic deployments enabled for the selected repository.
## Clarification on Automatic Deployments
By default, Dokploy will automatically deploy your application on the Branch you have selected.
e.g., Let's suppose you have an `application` in this way:
Repository: `my-app`
Branch: `feature`
If you try to make a push on another branch e.g., `main`, Dokploy will not automatically deploy your application, because
your application has selected `feature` as the Branch.
<Callout>
In the case you want to have multiple applications in the same repository, e.g., (development, staging, production), you can create 3 `Applications` in Dokploy
and select the branch in each of them.
This is very useful if you want to have multiple environments for the same application.
</Callout>
<userStyle>Normal</userStyle>

View File

@@ -0,0 +1,48 @@
---
title: GitHub
description: 'Configure GitHub repositories for deployments. This includes setting up access tokens, repository names, and branches.'
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offer a way to connect your Github Repository to your Dokploy panel, you can use organizations or personal accounts.
Go to `Git` and select `Github` as the source, then you can use the following options:
- **Organization**: Select the organization that you want to connect to Dokploy.
- **Personal Account(Default)**: Select the account that you want to connect to Dokploy.
Follow the steps to connect your Github account to Dokploy.
1. Click on `Create Github App` to create a new Github App.
2. Set Github App Name: eg. `Dokploy-Github-App`. make sure this name is unique.
3. Click on `Create Github App`, then you will redirect to the `Git` section of Dokploy.
4. Now it will show a `Install` Button, click on it.
5. You can select the repositories that you want to dokploy be able to access, you can choose
select all repositories or select specific repositories.
6. Click on `Install & Authorize` to install the Dokploy App.
7. You will be redirected to the `Git` section of Dokploy.
8. Now you can use the repositories from your Github Account in `Applications` or `Docker Compose` services.
<Callout>
When you use this method, By default you will have Automatic deployments on each push you make to your repository.
</Callout>
## Clarification on Automatic Deployments
By default, Dokploy will automatically deploy your application on the Branch you have selected.
eg. Let's suppose you have a `application` in this way:
Repository: `my-app`
Branch: `feature`
If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because
your application have selected `feature` as the Branch.
<Callout>
In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy
and select the branch in each of them.
This is very usefull if you want to have multiple environments for the same application.
</Callout>

View File

@@ -0,0 +1,79 @@
---
title: Gitlab
description: 'Configure Gitlab repositories for deployments. This includes setting up access tokens, repository names, and branches.'
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offer a way to connect your Gitlab Repository to your Dokploy panel, you can use Groups Names or personal accounts.
Go to `Git` and select `Gitlab` as the source, then you can use the following options:
- **Application ID**: Select the application ID that you want to connect to Dokploy.
- **Personal Secret**: Select the secret that you want to connect to Dokploy.
- **Group Name(Optional)**: Select the group name that you want to connect to Dokploy(Ideal for Gitlab Groups).
Follow the steps to connect your Gitlab account to Dokploy.
1. Go to `https://gitlab.com/-/profile/applications` and click on ` Add New Application`.
2. Set Application Name: eg. `Dokploy-Gitlab-App`. choose any name that you want.
3. Redirect URI: Copy the `Redirect URI` from Dokploy. eg. `https://dokploy.com/api/providers/gitlab/callback`.
4. Select Permissions: `api`, `read_user`, `read_repository`.
5. Click on `Save Application`.
6. Copy the `Application ID` and `Secret` from Gitlab and paste it in Dokploy `Gitlab` Modal section.
7. (Optional) If you want to use Groups, go to `https://gitlab.com/dashboard/groups` enter the group name you
want to connect, and look at the URL in the address bar, it will be something like this
`https://gitlab.com/dokploy-panel/frontend` you can use Nested Groups and SubGroups and copy the `dokploy-panel/frontend` from Gitlab and paste
it in Dokploy `Gitlab` Modal section.
8. Click on `Continue`.
9. Go Back to Dokploy and click on `Install` button.
10. Click on `Authorize`.
11. You will be redirected to the `Git` section of Dokploy.
12. Now you can use the repositories from your Gitlab Account in `Applications` or `Docker Compose` services.
<Callout type='warn'>
Dokploy doesn't support Gitlab Automatic deployments on each push you make to your repository.
</Callout>
## Setup Automatic Deployments
You can configure automatic deployments in Dokploy for the Following Services:
1. **Applications**
2. **Docker Compose**
The steps are the same for both services.
1. Go to either `Applications` or `Docker Compose` and go to `Deployments` Tab.
2. Copy the `Webhook URL`.
3. Go to your Gitlab Account and select the repository.
4. In the left menu, select `Settings` and then `Webhooks`.
5. Click on `Add Webhook`.
6. Set the `URL` to the one you copied in the previous step.
7. In the Trigger section, select `Push Events`.
8. Click on `Add Webhook`.
9. Click on `Save`.
10. Now you have automatic deployments enabled for the selected repository.
## Clarification on Automatic Deployments
By default, Dokploy will automatically deploy your application on the Branch you have selected.
eg. Let's suppose you have a `application` in this way:
Repository: `my-app`
Branch: `feature`
If you try to make a push on another branch eg. `main`, Dokploy will not automatically deploy your application, because
your application have selected `feature` as the Branch.
<Callout>
In the case you want to have multiple applications in the same repository, eg. (development, staging, production), you can create 3 `Applications` in Dokploy
and select the branch in each of them.
This is very usefull if you want to have multiple environments for the same application.
</Callout>

View File

@@ -0,0 +1,25 @@
---
title: Discord
description: 'Configure discord notifications for your applications.'
---
Discord 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.
## Discord Notifications
For start receiving discord notifications, you need to fill the form with the following details:
- **Name**: Enter any name you want.
- **Webhook URL**: Enter the webhook URL. eg. `https://discord.com/api/webhooks/000000000000000/00000000-0000-0000-0000-000000000000`
To Setup the Discord notifications, follow these steps:
1. Go to Discord, and search your Discord server.
2. Go to `Server Settings` and click on `Integrations`.
3. Click on `Create a Webhook`.
4. Set a name for your webhook, eg. `dokploy_webhook`.
5. Click on the `Webhook` you've created and click on copy the `Webhook URL`.
6. Go to Dokploy `Notifications` and select `Discord` as the notification provider.
7. Use the `Webhook URL` you copied in the previous step.
8. Click on `Test` to make sure everything is working.
9. Click on `Create` to save the notification.

View File

@@ -0,0 +1,22 @@
---
title: Email
description: 'Configure email notifications for your applications.'
---
Email 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.
## Email Notifications
For start receiving email notifications, you need to fill the form with the following details:
1. **Name**: Enter any name you want.
2. **SMTP Server**: Enter the SMTP server address. eg. `smtp.gmail.com`
3. **SMTP Port**: Enter the SMTP server port. eg. `587`
4. **SMTP Username**: Enter the SMTP server username. eg. `your-email@gmail.com`
5. **SMTP Password**: Enter the SMTP server password.
6. **From Address** Enter the email address that will be used as the sender.
7. **To Address** Enter the email address that will be used as the recipient, you can add multiple addresses.

View File

@@ -0,0 +1,20 @@
---
title: Gotify
description: 'Configure gotify notifications for your applications.'
---
Gotify 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.
## Gotify Notifications
For start receiving gotify notifications, you need to fill the form with the following details:
- **Name**: Enter any name you want.
- **Server URL**: Enter the gotify server URL. eg. `https://gotify.example.com`
- **App Token**: Enter the gotify token.
- **Priority**: Enter the priority of the notification, default is `5` (1-10).
To Setup the Gotify notifications, you can read the [Gotify Documentation](https://gotify.net/docs/install).

View File

@@ -0,0 +1,18 @@
---
title: Ntfy
description: 'Configure ntfy notifications for your applications.'
---
Ntfy 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.
## Ntfy Notifications
For start receiving ntfy notifications, you need to fill the form with the following details:
- **Name**: Enter any name you want.
- **Server URL**: Enter the ntfy server URL. eg. `https://ntfy.example.com`
- **Access Token**: Enter the ntfy token. You can create one under `https://ntfy.example.com/account`
- **Topic**: Enter the topic you want the notifications to be received.
- **Priority**: Enter the priority of the notification, default is `3` (1-5).
To Setup the ntfy notifications, you can read the [Notify Documentation](https://docs.ntfy.sh/).

View File

@@ -0,0 +1,22 @@
---
title: Overview
description: 'Configure general notifications for your applications and services.'
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offer multiples notifications options to notify about some events.
1. **App Deploy**: Notify when a new version of your application is deployed.
2. **App Deploy Error**: Notify when a new version of your application fails to deploy.
3. **Docker Cleanup**: Notify when a Docker cleanup is triggered.
4. **Dokploy Restart**: Notify when Dokploy Server restarts.
5. **Database Backup**: Notify when a new database backup is created(Success or Error).
## Providers:
1. **Slack**: Slack is a platform for team communication and collaboration.
2. **Telegram**: Telegram is a messaging platform that allows users to send and receive messages.
3. **Discord**: Discord is generally used for communication between users in a chat or voice channel.
4. **Email**: Email is a popular method for sending messages to a group of recipients.

View File

@@ -0,0 +1,27 @@
---
title: Slack
description: 'Configure slack notifications for your applications.'
---
Slack 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.
## Slack Notifications
For start receiving slack notifications, you need to fill the form with the following details:
- **Name**: Enter any name you want.
- **Webhook URL**: Enter the webhook URL. eg. `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX`
- **Channel**: Enter the channel name that you want to send the notifications to.
To Setup the slack notifications, follow these steps:
1. Go to `https://dokploy.slack.com/marketplace/A0F7XDUAZ-webhooks-entrantes` and click on `Add To Slack`.
2. Select the channel that you want to send the notifications to.
3. Click on `Add webhook to channel`.
4. Copy the `Webhook URL`.
5. Go to Dokploy `Notifications` and select `Slack` as the notification provider.
6. Use the `Webhook URL` you copied in the previous step.
7. In Channel section, select the channel that you want to send the notifications to.
7. Click on `Create` to save the notification.

View File

@@ -0,0 +1,28 @@
---
title: Telegram
description: 'Configure telegram notifications for your applications.'
---
Telegram 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.
## Telegram Notifications
For start receiving telegram notifications, you need to fill the form with the following details:
- **Name**: Enter any name you want.
- **Bot Token**: Enter the bot token. eg. `123456789:ABCdefGHIjklMNOPqrstUVWXYZ`
- **Chat ID**: Enter the chat ID. eg. `123456789`
To Setup the telegram notifications, follow these steps:
1. Go to `https://telegram.me/botfather` and click on `Start Bot`.
2. Type `/newbot` and click on `Start`.
3. Set a name for your bot, eg. `dokploy_bot` make sure the name ends with `_bot`.
4. Copy the `Bot Token` and paste it in Dokploy `Telegram` Modal section.
5. Now you need to get the Chat ID, or create a new Channel
6. Search this bot in the search bar `@userinfobot`.
7. Type `/start` and it will return the chat ID.
8. Copy the `Chat ID` and paste it in Dokploy `Telegram` Modal section.
9. Click on test to make sure everything is working.
10. Click on `Create` to save the notification.

View File

@@ -0,0 +1,30 @@
---
title: Actions
description: 'Manage S3 destinations.'
---
import { Callout } from 'fumadocs-ui/components/callout';
The S3 Destinations section are essential for backing up your databases.
## Actions:
1. **Create**: Create a new S3 destination.
2. **Delete**: Delete a S3 destination.
3. **Edit**: Edit a S3 destination.
4. **Test**: Test a S3 destination.
### Create
In order to create a new S3 Bucket, you need to fill the form.
- **Name**: This could be anything you want, it will be the name.
- **Access Key**: This is the access key that you will use to access your bucket.
- **Secret Key**: This is the secret key that you will use to access your bucket.
- **Bucket**: This is the bucket that you will use to access your bucket.
- **Region**: This is the region that you will use to access your bucket.
- **Endpoint**: This is the endpoint that you will use to access your bucket.
<Callout type='info'>
There is a Button `Test` that will test the connection to your bucket, if it is correct it will show you a success message.
</Callout>

View File

@@ -0,0 +1,63 @@
---
title: AWS S3
description: 'Configure S3 buckets for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.'
---
import { Callout } from 'fumadocs-ui/components/callout';
AWS provides a simple and cost-effective way to store and retrieve data. It is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage.
1. Create a new bucket and set any name you want.
2. Search for `IAM` in the search bar.
3. Click on `Policies` in the left menu.
4. Click on `Create Policy`.
5. Select `JSON` and paste the following policy:
Make sure to replace the bucket name with your bucket name.
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::bucket-name"
},
{
"Sid": "AllowBucketObjectActions",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
// Make sure to set the name of your bucket
"Resource": "arn:aws:s3:::bucket-name/*"
}
]
}
```
6. Click on `Review Policy`.
7. Assign a name to the policy.
8. Click on `Create Policy`.
9. Click on User Group and assign a Name.
10. Click on `Add User to Group`.
11. Add the user you want to assign to the group.
12. In the `Attached Policies` section, filter by type `Customer Managed` and select the policy you created.
13. Click on `Attach Policy`.
14. Go to `Users` and select the user you've assigned to the group.
15. Go to Security Credentials.
16. Click on `Create Access Key`.
17. Select `Programmatic Access`.
18. Click on `Create New Access Key`.
Now copy the following variables:
- `Access Key` -> `Access Key (Dokploy)` = eg. `AK2AV244NFLS5JTUZ554`
- `Secret Key` -> `Secret Key (Dokploy)` = eg. `I0GWCo9fSGOr7z6Lh+NvHmSsaE+62Vwk2ua2CEwR`
- `Bucket` -> `Bucket (Dokploy)` = eg. `dokploy-backups` use the name of the bucket you created.
- `Region` -> `Region (Dokploy)` = eg. `us-east-1, us-west-2, etc` it will depend on the region you are using.
- `Endpoint` -> `Endpoint (Dokploy) (Optional)` = eg. `https://s3.<region>.amazonaws.com` you will find this endpoint in the Bucket Card at the Home Page.
Test the connection and you should see a success message.

View File

@@ -0,0 +1,26 @@
---
title: Backblaze B2
description: 'Configure buckets from Backblaze B2 for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.'
---
Backblaze B2 is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage.
## Backblaze B2 Example Bucket
1. Create a new bucket and set any name you want.
2. Go to `Application Keys` and create a new key.
3. Set a Key Name.
4. Set the Allow Access to Bucket(s) to `All Buckets` or `Specific Buckets`.
4. Set type of access `Read & Write` Permission.
Now copy the following variables:
- `Access Key` -> `Access Key (Dokploy)` = eg. `002s6acf2639910000d000005`
- `Secret Key` -> `Secret Key (Dokploy)` = eg. `K00+rIsWqPMhmcgqcyOyb9bqby7pbpE`
- `Region` -> `Region (Dokploy)` = eg. `eu-central-003, us-east-005, us-west-002, us-west-001, us-west-004, etc` it will depend on the region you are using.
- `Endpoint` -> `Endpoint (Dokploy)` = eg. `https://s3.us-west-002.backblazeb2.com` you will find this endpoint in the Bucket Card at the Home Page.
- `Bucket` -> `Bucket (Dokploy)` = eg. `dokploy-backups` use the name of the bucket you created.
Test the connection and you should see a success message.

View File

@@ -0,0 +1,26 @@
---
title: Cloudflare R2
description: 'Configure R2 buckets for backup storage. This includes setting up access keys, secret keys, bucket names, regions, and endpoints.'
---
Cloudflare is a popular choice for hosting static assets, such as images, videos, and documents. It is a cloud-based service that allows you to store and retrieve data from anywhere in the world. This is a great option for storing backups, as it is easy to set up and manage.
1. Go to `R2 Object Storage`, and create a new bucket with any name you want by clicking `Create bucket` button.
2. Go back to `R2 Object Storage`, and select `Manage API tokens` from the select box.
3. Create a new `User API Token`, and give it a meaninful name.
4. Set `Object Read & Write` Permission.
5. (Optional) Set Specify bucket, by default it will include all buckets.
6. Create the token.
Now copy the following variables:
| (from) Cloudflare | (to) Dokploy | Example value |
|---------------------|---------------------|----------------------------------------------------------------------|
| `Access Key ID` | `Access Key Id` | `f3811c6d27415a9s6cv943b6743ad784` |
| `Secret Access Key` | `Secret Access Key` | `aa55ee40b4049e93b7252bf698408cc22a3c2856d2530s7c1cb7670e318f15e58` |
| `Region` | `Region` | `WNAM, ENAM, etc` it will depend on the region you are using. |
| `Endpoint` | `Endpoint` | `https://8ah554705io7842d54c499fbee1156c1c.r2.cloudflarestorage.com` |
| `Bucket` | `Bucket` | `dokploy-backups` use the name of the bucket you created. |
Test the connection and you should see a success message.

View File

@@ -0,0 +1,26 @@
---
title: Permissions
description: 'Add permissions to your users to manage your applications and services.'
---
Manage user roles and permissions within Dokploy. Note that only one admin role is allowed per instance.
## Permissions
Dokploy offers multiple permissions to manage your users effectively:
- **Create Projects**: Allows the user to create new projects.
- **Create Services**: Allows the user to create new applications or databases.
- **Access Traefik Files Tab**: Allows the user to access the Traefik files tab.
- **Delete Projects**: Allows the user to delete projects.
- **Delete Services**: Allows the user to delete services.
- **Access Docker Tab**: Allows the user to access the Docker tab.
- **Access API/CLI**: Allows the user to access the API/CLI, including the Swagger route.
- **Access to Git Providers**: Allows the user to access the Git Providers.
- **Access to SSH Keys**: Allows the user to access the SSH Keys.
You can also grant permissions to specific users for accessing particular projects or services.
### Project Permissions
Based on your projects and services, you can assign permissions to specific users to give them access to particular projects or services.

View File

@@ -0,0 +1,23 @@
---
title: 11ty
description: Deploy a simple 11ty application.
---
This example will deploy a simple 11ty application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/11ty`
- Publish Directory: `./_site` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,29 @@
---
title: Astro SSR
description: Deploy a simple Astro SSR application.
---
This example will deploy a simple Astro SSR application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/astro-ssr`
2. **Add Environment Variables**:
- Navigate to the "Environments" tab and add the following variable:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
4. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,24 @@
---
title: Astro
description: Deploy a simple Astro application.
---
This example will deploy a simple Astro application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/astro`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,27 @@
---
title: Deno
description: Deploy a simple Deno application.
---
This example will deploy a simple Deno application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/deno`
- Select `Dockerfile` as Build Type
- Type `Dockerfile` in the Dockerfile path field
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `8080`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,23 @@
---
title: HTML
description: Deploy a simple HTML application.
---
This example will deploy a simple HTML application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/html`
- use `Static` as build type
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,25 @@
---
title: Lit
description: Deploy a simple Lit application.
---
This example will deploy a simple Lit application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/lit`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,21 @@
---
title: Nest.js
description: Deploy a simple Nest.js application.
---
This example will deploy a simple Nest.js application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/nestjs`
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,23 @@
---
title: Next.js
description: Deploy a simple Next.js application.
---
This example will deploy a simple Next.js application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/nextjs`
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
1. Click on generate domain button.
2. A new domain will be generated for you.
3. You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,25 @@
---
title: Preact
description: Deploy a simple Preact application.
---
This example will deploy a simple Preact application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/preact`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,29 @@
---
title: Qwik
description: Deploy a simple Qwik application.
---
This example will deploy a simple Qwik application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/qwik`
2. **Add Environment Variables**:
- Navigate to the "Environments" tab and add the following variable:
```cmd
NIXPACKS_START_CMD="pnpm run preview"
```
3. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
4. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,23 @@
---
title: Remix
description: Deploy a simple Remix application.
---
This example will deploy a simple Remix application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/remix`
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,25 @@
---
title: Solid.js
description: Deploy a simple Solid.js application.
---
This example will deploy a simple Solid.js application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/solidjs`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,25 @@
---
title: Svelte
description: Deploy a simple Svelte application.
---
This example will deploy a simple Svelte application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/svelte`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,23 @@
---
title: Tanstack
description: Deploy a simple Tanstack application.
---
This example will deploy a simple Tanstack application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/tanstack`
- use `Nixpacks` as build type
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `3000`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,34 @@
---
title: Turborepo
description: Deploy a simple Turborepo application.
---
This repository contains an example of turborepo application that is deployed on Dokploy.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/turborepo` (Nixpacks)
2. **Environment Variables**:
- Add environment variables to the env tab.
```bash
NIXPACKS_TURBO_APP_NAME="web"
NIXPACKS_BUILD_CMD="turbo run build --filter=web"
NIXPACKS_START_CMD="turbo run start --filter=web"
```
3. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `3000`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,25 @@
---
title: Vite React
description: Deploy a simple Vite React application.
---
This example will deploy a simple Vite React application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/vite`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,24 @@
---
title: Vue.js
description: Deploy a simple Vue.js application.
---
This example will deploy a simple Vue.js application.
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/examples.git`
- Branch: `main`
- Build path: `/vuejs`
- Publish Directory: `./dist` (Nixpacks)
2. **Click on Deploy**:
- Deploy your application by clicking the deploy button.
3. **Generate a Domain**:
- Click on generate domain button.
- A new domain will be generated for you.
- Set Port `80`
- You can use this domain to access your application.
If you need further assistance, join our [Discord server](https://discord.com/invite/2tBnJ3jDJc).

View File

@@ -0,0 +1,174 @@
---
title: Advanced
description: Learn how to use advanced features in your application.
---
This section is designed for experienced users who need to manage complex configurations and orchestration settings in Dokploy. Here, you can execute custom commands, manage cluster replicas, select Docker registries, and configure Docker Swarm settings.
### Run Command
- **Purpose**: Allows users to execute custom shell commands directly within the container.
- **Usage**: Enter the command you need to run in the provided field and click 'Save' to execute it within the container environment. This tool is particularly useful for debugging or specific administrative tasks.
### Cluster Settings
- **Purpose**: Manages the scaling and distribution of the application across multiple servers or nodes.
- **Replicas**: Set the number of instances of your application that should be running.
- **Registry Selection**: Choose the Docker registry from which your container images will be pulled. This is crucial for ensuring that the correct images are used during deployment.
#### Important Note
Always click 'Redeploy' after modifying the cluster settings to apply the changes.
### Swarm Settings
Swarm settings allow for detailed configuration of how containers are orchestrated within the Docker Swarm.
#### Health Check
- **Purpose**: Ensures that containers are running smoothly and restarts them if they fail.
- **Configuration**: Specify parameters like test commands, intervals, timeouts, start periods, and retries.
#### Restart Policy
Defines how containers should be handled if they exit or fail, the configuration is as follows:
- **Condition**: Specifies under what condition a restart should occur.
- **Delay**: Sets the time delay between restarts.
- **Max Attempts**: Limits the number of restart attempts.
- **Window**: Defines the time window used to evaluate the restart policy.
#### Update Config
Manages the deployment and update process of services in the swarm, the configuration is as follows:
- **Parallelism**: Number of containers to update simultaneously.
- **Delay**: Time between updates.
- **Failure Action**: Action to take if an update fails.
- **Monitor**: Duration to monitor a container after an update.
- **Max Failure Ratio**: The fraction of containers that are allowed to fail before the update is considered a failure.
- **Order**: The order in which containers are stopped and started during an update.
#### Placement
Controls where containers are placed within the swarm based on specific rules and preferences, the configuration is as follows:
- **Constraints**: Conditions that must be met for a container to be placed on a node.
- **Preferences**: Preferences for placing containers across nodes to spread load evenly.
### Rollback Config
Manages the rollback process for services when updates fail, the configuration is as follows:
- **Parallelism**: Number of containers to rollback simultaneously.
- **Delay**: Time between rollbacks.
- **FailureAction**: Action to take if a rollback fails.
- **Monitor**: Duration to monitor a container after a rollback.
- **MaxFailureRatio**: The fraction of containers that are allowed to fail before the rollback is considered a failure.
- **Order**: The order in which containers are stopped and restarted during a rollback.
### Mode
Defines how services are replicated within the swarm, the configuration is as follows:
- **Replicated**: Services are replicated across nodes as specified.
- **Replicas**: Number of replicas per service.
- **Global**: A single instance of the service runs on every node.
- **ReplicatedJob**: Runs a job in a replicated manner.
- **MaxConcurrent**: Maximum number of jobs running concurrently.
- **TotalCompletions**: Total number of times the jobs need to complete.
### Network
Configures network settings for the services, the configuration is as follows:
- **Target**: Specifies the network name.
- **Aliases**: Provides aliases for the network.
- **DriverOpts**: Network driver options like MTU size and host binding.
### Labels
Assigns metadata to containers to help identify and organize them, the configuration is as follows:
- **Labels**: Key-value pairs assigned to the service. For example:
1. `com.example.app.name`: "my-app"
2. `com.example.app.version`: "1.0.0"
### Note
Modifying Swarm Settings requires careful consideration as incorrect configurations can disrupt the entire container orchestration. Always ensure you understand the implications of the changes you are making.
## Resources
Manage the memory and CPU resources allocated to your applications or databases.
- **Memory Reservation**: The minimum amount of memory guaranteed to the application.
- **Memory Limit**: The maximum amount of memory the application can use.
- **CPU Limit**: The maximum number of CPU units that the application can utilize.
- **CPU Reservation**: The minimum number of CPU units reserved for the application.
### Volumes/Mounts
Configure persistent storage for your application to ensure data remains intact across container restarts and deployments.
**Bind Mount**: Maps a host file or directory to a container file or directory. Typically used for specific configurations or databases.
1. **Host Path**: Path on the host.
2. **Mount Path**: Path in the container.
**Volume Mount**: Uses Docker-managed volumes that are easier to back up and migrate than bind mounts.
1. **Volume Name**: Name of the Docker-managed volume.
2. **Mount Path**: Path in the container where the volume is mounted.
**File Mount**: Specifically for single files, useful for configuration files.
1. **Content**: The content to store in the file.
2. **File Path**: The name of the file.
3. **Mount Path**: Path in the container where the file is placed. **The path must also contain the filename.**
File mounts are a dokploy features, this create a file in a folder called `files` inside your project, so it recreates every single time you deploy your project.
<ImageZoom src="/assets/file-mount-configuration.webp" width={800} height={630} className="rounded-lg"/>
<ImageZoom src="/assets/file-mount.png" width={800} height={630} className="rounded-lg"/>
### Redirects
Redirect requests to your application to another URL based on specified rules, enhancing navigational efficiency and SEO.
- **Regex**: Enter a regular expression to match the URLs that need redirecting.
- **Replacement**: Specify the target URL where traffic should be redirected.
- **Permanent**: Toggle this option to apply a permanent (HTTP 301) redirection, indicating to browsers and search engines that the page has moved permanently.
#### Example
To redirect all traffic from "http://localhost" to "http://mydomain", set the Regex as `http://localhost/(.*)` and the Replacement as `http://mydomain/$1`.
### Security
Add basic authentication to your application to restrict access.
- **Username**: Enter a username.
- **Password**: Enter a password.
#### Important Note
Adding basic authentication will prompt users for a username and password before allowing access to the application. Use this for environments where an additional layer of security is required.
### Ports
Expose your application to the internet by configuring network ports, allowing external access.
- **Published Port**: The port number on the host that will route traffic to your application.
- **Target Port**: The port number inside the container that the application uses.
- **Protocol**: Choose between TCP and UDP based on your application's requirements.
#### Important Note
Ensure that the published port does not conflict with other services on the host to avoid port binding errors, also this port is used mostly for accesing the application from the outside, eg your-ip:port, this is not for accessing the application trought a domain.
### Traefik
Provides a dynamic and robust method to manage HTTP traffic to your services, including load balancing and SSL termination.
- **Rules**: Define complex routing, load balancing, and security configurations using Traefik's powerful rule-based configuration system.

View File

@@ -0,0 +1,99 @@
---
title: Build Type
description: "Learn about the different build types available in Dokploy, including Nixpacks, Dockerfile, and Buildpack options."
---
import { Callout } from 'fumadocs-ui/components/callout';
Dokploy offers three distinct build types for deploying applications, each suited to different development needs and preferences.
### Nixpacks
This is the default build type in Dokploy. When you select Nixpacks, Dokploy builds your application as a Nixpack, which is optimized for ease of use and efficiency.
Nixpacks expose multiples variables to be configured via environment variables. All of these variables are prefixed with `NIXPACKS_`, you can define them in the `Environment Variables` tab.
| Variable | Description |
| :---------------------------- | :------------------------------------------------------------------------------------------- |
| `NIXPACKS_INSTALL_CMD` | Override the install command to use |
| `NIXPACKS_BUILD_CMD` | Override the build command to use |
| `NIXPACKS_START_CMD` | Override command to run when starting the container |
| `NIXPACKS_PKGS` | Add additional [Nix packages](https://search.nixos.org/packages?channel=unstable) to install |
| `NIXPACKS_APT_PKGS` | Add additional Apt packages to install (comma delimited) |
| `NIXPACKS_LIBS` | Add additional Nix libraries to make available |
| `NIXPACKS_INSTALL_CACHE_DIRS` | Add additional directories to cache during the install phase |
| `NIXPACKS_BUILD_CACHE_DIRS` | Add additional directories to cache during the build phase |
| `NIXPACKS_NO_CACHE` | Disable caching for the build |
| `NIXPACKS_CONFIG_FILE` | Location of the Nixpacks configuration file relative to the root of the app |
| `NIXPACKS_DEBIAN` | Enable Debian base image, used for supporting OpenSSL 1.1 |
If you need more manage about nixpacks process, you can create a `nixpacks.toml` file in the root of your application you can read here [Nixpacks Configuration](https://nixpacks.com/docs/configuration/file).
Nixpacks support monorepo such as NX Monorepo, Turborepo, Moon Repo, you can read more about it [here](https://nixpacks.com/docs/providers/node#build).
You can read more about Nixpacks [here](https://nixpacks.com/).
Since Nixpacks have a [static builder](https://nixpacks.com/docs/providers/staticfile) Dokploy expose a field called `Publish Directory` where basically you can specify
the directory that you want to publish after the build process is finished, example:
Astro applications after you build it usually create a `dist` directory, so you can specify the `dist` directory as the publish directory and then Dokploy will
copy all the files in the `dist` directory to the root of your application, and will use a NGINX Optimized Dockerfile to run your application.
### Railpack (NEW)
Railpack is a new build type optimized and is the successor of Nixpacks.
Railpack exposes multiple Build Variables, you can define them in the `Environment Variables` tab.
| Name | Description |
| :-------------------- | :--------------------------------------------------------------------------------------------------------- |
| `RAILPACK_BUILD_CMD` | Set the command to run for the build step. This overwrites any commands that come from providers |
| `RAILPACK_START_CMD` | Set the command to run when the container starts |
| `RAILPACK_PACKAGES` | Install additional Mise packages. In the format `pkg@version`. The latest version is used if not provided. |
| `RAILPACK_BUILD_APT_PACKAGES` | Install additional Apt packages during build |
| `RAILPACK_DEPLOY_APT_PACKAGES` | Install additional Apt packages in the final image |
you can read more about Railpack [here](https://railpack.com/config/environment-variables).
Railpack supports Nodejs, Python, Go, PHP, Go, StaticFile, Shell Scripts.
### Dockerfile
If your project includes a Dockerfile, you can specify its path. Dokploy will use this Dockerfile to build your application directly, giving you full control over the build environment and dependencies
Dokploy expose 3 Fields to be configured:
- `Dockerfile Path (Required)`: The path to the Dockerfile to use for building the application, eg. If your Dockerfile is in the root of your application you can just specify the `Dockerfile` file.
- `Docker Context Path`: This is where the Dockerfile is located, eg. If your Dockerfile is in the root of your application you can just specify the `.` (dot) character, is basically to tell docker what context will use to build your application, you can read [Dockerfile Context](https://docs.docker.com/build/concepts/context/) for more information.
- `Docker Build Stage`: This is the build stage to use for building the application, eg. If you want to use the `builder` stage you can specify the `builder` stage, read more about build stages [here](https://docs.docker.com/build/building/multi-stage/).
### Buildpack
Dokploy supports two types of buildpacks:
- **Heroku**: Adapted from Heroku's popular cloud platform, these buildpacks are designed for compatibility and ease of migration, you can optional specify the Heroku Version to use, by default Dokploy will use the 24.
- **Paketo**: Provides cloud-native buildpacks that leverage modern standards and practices for building applications.
By choosing the appropriate build type, you can tailor the deployment process to best fit your application's requirements and your operational preferences.
### Static
Static build type is used to server static applications, it will use a NGINX Optimized Dockerfile to run your application.
Dokploy will copy everything from the `Root` directory and will mount it to the `/usr/share/nginx/html` directory, and will use a NGINX Optimized Dockerfile to run your application.
<Callout type="info">
Ensure to use the port `80` when creating a domain.
</Callout>
## Recomendations
- For prototyping and development purposes, we recommend using the `Nixpacks` build type.
- For production purposes, we recommend follow this [Production Guide](/docs/core/applications/going-production) to have a rock solid deployment.
- For static applications, we recommend using the `Static` build type.

View File

@@ -0,0 +1,213 @@
---
title: Going Production
description: Learn how to deploy your application in production in Dokploy.
---
import { Callout } from 'fumadocs-ui/components/callout';
By default, dokploy offer multiple [Builds Types](/docs/core/applications/build-type) to deploy your application, the most common is `nixpacks` and `heroku buildpacks`
however this also comes with problems, first is the resources that are required to build your application which some times can lead to timeout on your server or even freezeing your server
and all your application will be down for this reasson, this is mainly problem from `Docker` since the comsumption of resources such as RAM, CPU is very high to build an application.
## Solution
You have two options to solve this problem:
1. Increase the resources of your server CPU, RAM, Disk (Probably is not a good idea and cheapest solution)
2. Build & Publish the application in a CI/CD pipeline eg. Github Actions, Gitlab CI, Gitea Actions, etc. (Recommended)
### Build & Publish the application in a CI/CD pipeline
We will use Github Actions as an example, but you can use any CI/CD pipeline that you want.
We will use the following configuration:
1. **Use Git Provider in Your Application**:
- Repository: `https://github.com/Dokploy/production-example`
- Branch: `main`
- Build path: `/`
<Callout type="info">
The repo have everything you need, however you can follow the same idea for your own applications.
</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:
```yaml
name: Build Docker images
on:
push:
branches: ["main"]
jobs:
build-and-push-dockerfile-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }} # Make sure to add the secrets in your repository in -> Settings -> Secrets (Actions) -> New repository secret
password: ${{ secrets.DOCKERHUB_TOKEN }} # Make sure to add the secrets in your repository in -> Settings -> Secrets (Actions) -> New repository secret
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
push: true
# Make sure to replace with your own namespace and repository
tags: |
namespace/example:latest
platforms: linux/amd64
```
8. Create your own Dockerfile, in this case we will use the `Dockerfile` from the repository.
```properties
FROM node:18-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS build
WORKDIR /app
COPY . .
COPY package.json pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
ENV NODE_ENV=production
RUN pnpm run build
FROM base AS dokploy
WORKDIR /app
ENV NODE_ENV=production
# Copy only the necessary files
COPY --from=build /app/dist ./dist
COPY --from=build /app/package.json ./package.json
COPY --from=build /app/node_modules ./node_modules
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.
### Auto deploy
When using Dockerhub as a registry you can also enable auto deploy, this will automatically deploy your application whenever you push to your repository.
To setup auto deploys for Dockerhub, follow the steps below:
1. Go to your application and select `Deployments` tab.
2. Copy the `Webhook URL`.
3. Go to your Dockerhub repository and select `Webhooks` tab.
4. Set a name for the webhook and paste the `Webhook URL` copied in step 2.
5. That's it, now every time you push to your repository, your application will trigger a deployment in dokploy.
The deployment will trigger only if the `Tag` matches the one specified in Dokploy.
#### External Registry
If you have a registry that is not Dockerhub, you can trigger a deployment after pushing to your repository in Github Actions.
Your workflow will look like this:
This method use the [Api Method](/docs/core/auto-deploy#api-method) to trigger a deployment.
```yaml
name: Build Docker images
on:
push:
branches: ["main"]
jobs:
build-and-push-dockerfile-image:
runs-on: ubuntu-latest
steps:
...Same as step 7 from the previous example
- name: Trigger Dokploy Deployment
uses: dokploy/dokploy-action@v1
run: |
curl -X 'POST' \
'https://<your-dokploy-domain>/api/trpc/application.deploy' \
-H 'accept: application/json' \
-H 'x-api-key: YOUR-GENERATED-API-KEY' \
-H 'Content-Type: application/json' \
-d '{
"json":{
"applicationId": "YOUR-APPLICATION-ID"
}
}'
```
You can also use this Github Action [Action](https://github.com/marketplace/actions/dokploy-deployment) to automate the deployment.
## Healthcheck & Rollbacks
When using Dokploy you can also configure healthchecks and rollbacks, this will allow you to configure your application to be able to recover from failures.
In the repo we are using from the `Step 1.` we have a healthcheck endpoint `/health` that returns a 200 status code and running in the port 3000.
Go to `Advanced` Tab and go to Cluster Settings and enter to `Swarm Settings`
There are a couple options that you can use, in this case we will focus on `Health Check` and `Update Config`.
Make sure the API Route exists in your application
```json
{
"Test": [
"CMD",
"curl",
"-f",
"http://localhost:3000/health"
],
"Interval": 30000000000,
"Timeout": 10000000000,
"StartPeriod": 30000000000,
"Retries": 3
}
```
Now in the `Update Config`
Now when the application is getting unhealthy response from the health check, the container will rollback to the previous version.
Paste the following code:
```json
{
"Parallelism": 1,
"Delay": 10000000000,
"FailureAction": "rollback",
"Order": "start-first"
}
```
Now you everything a production ready application with automated deployments, zero downtime, rollbacks and healthchecks.
We recommend strongly to use this approach in production since this will make your server never build the application, will only in charge of the deployment keeping your server without any downtime.

Some files were not shown because too many files have changed in this diff Show More