Go to file
2025-03-10 00:09:22 -06:00
.github/workflows refactor: Standardize template domain configuration to use ${domain} helper 2025-03-10 00:09:22 -06:00
blueprints refactor: Standardize template domain configuration to use ${domain} helper 2025-03-10 00:09:22 -06:00
public feat: Add extensive collection of application blueprints with Docker Compose configurations 2025-03-09 23:36:58 -06:00
src chore: Remove unused React import from App.tsx 2025-03-09 23:39:35 -06:00
.gitignore feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
components.json feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
index.html feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
LICENSE Initial commit 2024-11-26 21:53:24 -06:00
meta.json feat: Add extensive collection of application blueprints with Docker Compose configurations 2025-03-09 23:36:58 -06:00
package.json chore: Add vite-plugin-static-copy to copy blueprints and meta.json to dist 2025-03-09 23:45:54 -06:00
pnpm-lock.yaml chore: Add vite-plugin-static-copy to copy blueprints and meta.json to dist 2025-03-09 23:45:54 -06:00
README.md refactor: Standardize template domain configuration to use ${domain} helper 2025-03-10 00:09:22 -06:00
tsconfig.app.json feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
tsconfig.json feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
tsconfig.node.json feat: Add comprehensive blueprint collection and project setup 2025-03-09 23:30:52 -06:00
vite.config.ts chore: Update vite-plugin-static-copy to copy blueprints to dedicated directoryblueprints 2025-03-09 23:52:09 -06:00

Dokploy Open Source Templates

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

How to add a new template

  1. Clone the repository
  2. Add the template to the blueprints folder (docker-compose.yml, template.yml)
  3. Add the template metadata (name, description, version, logo, links, tags) to the meta.json file
  4. Add the logo to the template folder
  5. Commit and push your changes
  6. Create a pull request

Example

Let's suppose you want to add the Grafana 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
version: "3.8"
services:
  grafana:
    image: grafana/grafana-enterprise:9.5.20
    restart: unless-stopped
    volumes:
      - grafana-storage:/var/lib/grafana
volumes:
  grafana-storage: {}
  1. 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 []
variables:
  main_domain: ${domain}

config:
  domains:
    - serviceName: grafana
      port: 3000
      host: ${main_domain}
  env: []
  mounts: [] 
  1. Add the meta.json file to the folder
    {
      "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"
      ]
    },
  1. Add the logo to the folder
  2. Commit and push your changes
  3. 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 config section.

  2. config: 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.

  5. the variables(Optional) structure is the following:

1. variables:
  main_domain: ${domain}

2. variables:
  my-domain: https://my-domain.com
  1. the config structure is the following:
1. 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.