Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
fbbb4f4
feat: Add numerous new blueprint templates for various applications
Siumauricio Mar 10, 2025
2956016
feat: migrate templates
Siumauricio Mar 10, 2025
f95af86
refactor: Replace index.ts files with template.yml in blueprints
Siumauricio Mar 10, 2025
7db8b87
feat: Add multiple blueprint icons and logos for various applications
Siumauricio Mar 10, 2025
7e80202
feat: Add PocketBase to meta.json and blueprint icon
Siumauricio Mar 10, 2025
6fd5c52
refactor: Optimize base64 templates workflow to process only changed …
Siumauricio Mar 10, 2025
6b24af4
refactor: Enhance base64 templates workflow with improved error handl…
Siumauricio Mar 10, 2025
6009e54
refactor: Modify base64 templates workflow to generate comprehensive …
Siumauricio Mar 10, 2025
f45a61b
refactor: Standardize blueprint template variable generation syntax
Siumauricio Mar 10, 2025
b32f752
chore: Remove Logto blueprint icon
Siumauricio Mar 10, 2025
09e6fd6
refactor: Simplify Supabase and Teable blueprint JWT and port configu…
Siumauricio Mar 10, 2025
9111332
feat: Add GitHub Actions workflow for PR preview deployments
Siumauricio Mar 10, 2025
d698d55
feat: add gh pages
Siumauricio Mar 10, 2025
3e0c332
refactor: Update GitHub Actions workflow for PR preview deployments
Siumauricio Mar 10, 2025
3e8da82
feat: Add index.html to PR preview deployment
Siumauricio Mar 10, 2025
18072c8
chore: Update PR preview deployment with static index.html
Siumauricio Mar 10, 2025
3dd7710
chore: Simplify PR preview deployment workflow trigger
Siumauricio Mar 10, 2025
5414f43
chore: Disable concurrency in deploy workflow
Siumauricio Mar 10, 2025
0015373
chore: Enhance PR preview workflow trigger events
Siumauricio Mar 10, 2025
813efef
feat: Add comprehensive blueprint collection and project setup
Siumauricio Mar 10, 2025
08b572d
feat: Add extensive collection of application blueprints with Docker …
Siumauricio Mar 10, 2025
df5919e
feat: Add extensive collection of application blueprints with Docker …
Siumauricio Mar 10, 2025
31ce86c
chore: Remove unused React import from App.tsx
Siumauricio Mar 10, 2025
f6ee900
chore: Add vite-plugin-static-copy to copy blueprints and meta.json t…
Siumauricio Mar 10, 2025
e90c2cd
chore: Update vite-plugin-static-copy to copy blueprints to dedicated…
Siumauricio Mar 10, 2025
736503f
refactor: Standardize template domain configuration to use ${domain} …
Siumauricio Mar 10, 2025
44f0332
docs: Update README to clarify template.yml structure and sections
Siumauricio Mar 10, 2025
5b287d6
feat: Add Grafana blueprint with Docker Compose configuration
Siumauricio Mar 10, 2025
c8ca14f
docs: Improve README formatting for template.yml sections
Siumauricio Mar 10, 2025
10b6acc
docs: Update README with detailed template contribution guidelines
Siumauricio Mar 10, 2025
da6301a
docs: Add local development instructions to README
Siumauricio Mar 10, 2025
f6284bb
feat: Initialize Dokploy Blueprints React application with core UI co…
Siumauricio Mar 10, 2025
294890c
fix: adjust props
Siumauricio Mar 10, 2025
fa221c0
feat: Add dark mode theme support with Radix UI dropdown menu
Siumauricio Mar 10, 2025
f2be845
feat: Add copy to clipboard functionality for Docker Compose and conf…
Siumauricio Mar 10, 2025
df6f80c
feat: Integrate CodeMirror for enhanced code viewing with syntax high…
Siumauricio Mar 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
66 changes: 0 additions & 66 deletions .github/workflows/base64-templates.yml

This file was deleted.

5 changes: 0 additions & 5 deletions .gitignore

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024 Dokploy
Copyright (c) 2024 Dokploy and Carlos Ortiz

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
146 changes: 146 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Dokploy Open Source Templates

This is the official repository for the Dokploy Open Source Templates.

### How to add a new template

1. Fork the repository
2. Create a new branch
3. Add the template to the `blueprints` folder (docker-compose.yml, template.yml)
4. Add the template metadata (name, description, version, logo, links, tags) to the `meta.json` file
5. Add the logo to the template folder
6. Commit and push your changes
7. Create a pull request (PR)
8. Every PR will automatically deploy a preview of the template to Dokploy.
9. if anyone want to test the template before merging it, you can enter to the preview URL in the PR description, and search the template, click on the Template Card, scroll down and then copy the BASE64 value, and paste in the advanced section of your compose service, in the Import section.

#### Optional

If you want to run the project locally, you can run the project with the following command:

```bash
cd app
pnpm install
pnpm run dev
go to http://localhost:5173/
```

### Example

Let's suppose you want to add the [Grafana](https://grafana.com/) template to the repository.

1. Create a new folder inside the `blueprints` folder named `grafana`
2. Add the `docker-compose.yml` file to the folder

```yaml
version: "3.8"
services:
grafana:
image: grafana/grafana-enterprise:9.5.20
restart: unless-stopped
volumes:
- grafana-storage:/var/lib/grafana
volumes:
grafana-storage: {}
```
3. Add the `template.yml` file to the folder, this is where we specify the domains, mounts and env variables, to understand more the structure of `template.yml` you can read here [Template.yml structure](#templateyml-structure)

```yaml
variables:
main_domain: ${domain}

config:
domains:
- serviceName: grafana
port: 3000
host: ${main_domain}
env: []
mounts: []
```
4. Add the `meta.json` file to the folder

```json
{
"id": "grafana",
"name": "Grafana",
"version": "9.5.20",
"description": "Grafana is an open source platform for data visualization and monitoring.",
"logo": "grafana.svg",
"links": {
"github": "https://github.com/grafana/grafana",
"website": "https://grafana.com/",
"docs": "https://grafana.com/docs/"
},
"tags": [
"monitoring"
]
},
```
5. Add the logo to the folder
6. Commit and push your changes
7. Create a pull request

### Template.yml structure

Dokploy use a defined structure for the `template.yml` file, we have 4 sections available:


1. `variables`: This is where we define the variables that will be used in the `domains`, `env` and `mounts` sections.
2. `domains`: This is where we define the configuration for the template.
3. `env`: This is where we define the environment variables for the template.
4. `mounts`: This is where we define the mounts for the template.


- The `variables(Optional)` structure is the following:

```yaml
variables:
main_domain: ${domain}
my_domain: https://my-domain.com
my_password: ${password:32}
any_helper: ${you-can-use-any-helper}
```

- The `config` structure is the following:

```yaml
config:
domains: # Optional
- serviceName: grafana # Required
port: 3000 # Required
host: ${main_domain} # Required
path: / -> Optional

env: # Optional
- AP_HOST=${main_domain}
- AP_API_KEY=${api_key}
- AP_ENCRYPTION_KEY=${encryption_key}
- AP_JWT_SECRET=${jwt_secret}
- AP_POSTGRES_PASSWORD=${postgres_password}

mounts: # Optional or []
- filePath: /content/file.txt
content: |
My content
```

Important: you can reference any variable in the `domains`, `env` and `mounts` sections. just use the `${variable_name}` syntax, in the case you don't want to define a variable, you can use the `domain`, `base64`, `password`, `hash`, `uuid`, `randomPort` or `timestamp` helpers.

### Helpers

We have a few helpers that are very common when creating a template, these are:

- `domain`: This is a helper that will generate a random domain for the template.
- `base64 or base64:length`: This is a helper that will encode a string to base64.
- `password or password:length`: This is a helper that will generate a random password for the template.
- `hash or hash:length`: This is a helper that will generate a hash for the template.
- `uuid`: This is a helper that will generate a uuid for the template.
- `randomPort`: This is a helper that will generate a random port for the template.
- `timestamp`: This is a helper that will generate a timestamp.
- `jwt or jwt:length`: This is a helper that will generate a jwt for the template.






24 changes: 24 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
21 changes: 21 additions & 0 deletions app/components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "",
"css": "src/index.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
13 changes: 13 additions & 0 deletions app/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dokploy Blueprints</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
47 changes: 47 additions & 0 deletions app/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"name": "my-app",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@radix-ui/react-dialog": "^1.1.6",
"@radix-ui/react-dropdown-menu": "^2.1.6",
"@radix-ui/react-slot": "^1.1.2",
"@tailwindcss/vite": "^4.0.12",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"copy-to-clipboard": "^3.3.3",
"lucide-react": "^0.479.0",
"next-themes": "^0.4.5",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"sonner": "^2.0.1",
"tailwind-merge": "^3.0.2",
"tailwindcss": "^4.0.12",
"tailwindcss-animate": "^1.0.7",
"vite-plugin-static-copy": "2.3.0",
"@codemirror/autocomplete": "^6.18.6",
"@codemirror/lang-json": "^6.0.1",
"@codemirror/lang-yaml": "^6.1.1",
"@codemirror/language": "^6.10.1",
"@codemirror/legacy-modes": "6.4.0",
"@codemirror/view": "6.29.0",
"@uiw/codemirror-theme-github": "^4.22.1",
"@uiw/react-codemirror": "^4.22.1"
},
"devDependencies": {
"@types/node": "^20.8.2",
"@types/react": "^19.0.10",
"@types/react-dom": "^19.0.4",
"@vitejs/plugin-react": "^4.3.4",
"globals": "^15.15.0",
"typescript": "~5.7.2",
"vite": "^6.2.0"
}
}
Loading