diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..97379020e
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,13 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: #
+open_collective: dokploy
+ko_fi: # Replace with a single Ko-fi username
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 02d9bce92..364918135 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -30,6 +30,8 @@ jobs:
run: pnpm install
- name: Run Build
run: pnpm build
+ - name: Run Tests
+ run: pnpm run test
build-and-push-docker-on-push:
if: github.event_name == 'push'
diff --git a/.gitignore b/.gitignore
index bfbda236c..4e788d919 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,4 +53,6 @@ yarn-error.log*
/.data
/.main
-*.lockb
\ No newline at end of file
+*.lockb
+*.rdb
+.idea
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bbda3053c..8686b98a8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -107,7 +107,7 @@ pnpm run docker:push
In the case you lost your password, you can reset it using the following command
```bash
-pnpm run build-server
+pnpm run reset-password
```
If you want to test the webhooks on development mode using localtunnel, make sure to install `localtunnel`
@@ -150,4 +150,93 @@ curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.32.1/pack-v0.
- If your pull request fixes an open issue, please reference the issue in the pull request description.
- Once your pull request is merged, you will be automatically added as a contributor to the project.
-Thank you for your contribution!
\ No newline at end of file
+Thank you for your contribution!
+
+
+
+
+
+## Templates
+
+To add a new template, go to `templates` folder and create a new folder with the name of the template.
+
+Let's take the example of `plausible` template.
+
+1. create a folder in `templates/plausible`
+2. create a `docker-compose.yml` file inside the folder with the content of compose.
+3. create a `index.ts` file inside the folder with the following code as base:
+4. When creating a pull request, please provide a video of the template working in action.
+
+```typescript
+// EXAMPLE
+import {
+ generateHash,
+ generateRandomDomain,
+ type Template,
+ type Schema,
+} from "../utils";
+
+
+export function generate(schema: Schema): Template {
+
+ // do your stuff here, like create a new domain, generate random passwords, mounts.
+ const mainServiceHash = generateHash(schema.projectName);
+ const randomDomain = generateRandomDomain(schema);
+ const secretBase = generateBase64(64);
+ const toptKeyBase = generateBase64(32);
+
+ const envs = [
+// If you want to show a domain in the UI, please add the prefix _HOST at the end of the variable name.
+ `PLAUSIBLE_HOST=${randomDomain}`,
+ "PLAUSIBLE_PORT=8000",
+ `BASE_URL=http://${randomDomain}`,
+ `SECRET_KEY_BASE=${secretBase}`,
+ `TOTP_VAULT_KEY=${toptKeyBase}`,
+ `HASH=${mainServiceHash}`,
+ ];
+
+ const mounts: Template["mounts"] = [
+ {
+ mountPath: "./clickhouse/clickhouse-config.xml",
+ content: `some content......`,
+ },
+ ];
+
+ return {
+ envs,
+ mounts,
+ };
+}
+```
+
+4. Now you need to add the information about the template to the `templates/templates.ts` is a object with the following properties:
+
+**Make sure the id of the template is the same as the folder name and don't have any spaces, only slugified names and lowercase.**
+
+```typescript
+{
+ id: "plausible",
+ name: "Plausible",
+ version: "v2.1.0",
+ description:
+ "Plausible is a open source, self-hosted web analytics platform that lets you track website traffic and user behavior.",
+ logo: "plausible.svg", // we defined the name and the extension of the logo
+ links: {
+ github: "https://github.com/plausible/plausible",
+ website: "https://plausible.io/",
+ docs: "https://plausible.io/docs",
+ },
+ tags: ["analytics"],
+ load: () => import("./plausible/index").then((m) => m.generate),
+},
+```
+
+5. Add the logo or image of the template to `public/templates/plausible.svg`
+
+
+### Recomendations
+- Use the same name of the folder as the id of the template.
+- The logo should be in the public folder.
+- If you want to show a domain in the UI, please add the prefix _HOST at the end of the variable name.
+- Test first on a vps or a server to make sure the template works.
+
diff --git a/Dockerfile b/Dockerfile
index 97d7b26a7..6d3e58758 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -26,7 +26,7 @@ FROM node:18-slim AS production
# Install dependencies only for production
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
-RUN corepack enable && apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
+RUN corepack enable && apt-get update && apt-get install -y curl && apt-get install -y apache2-utils && rm -rf /var/lib/apt/lists/*
WORKDIR /app
@@ -47,7 +47,6 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-l
# Install docker
RUN curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && rm get-docker.sh
-
# Install Nixpacks and tsx
# | VERBOSE=1 VERSION=1.21.0 bash
RUN curl -sSL https://nixpacks.com/install.sh -o install.sh \
diff --git a/LICENSE.MD b/LICENSE.MD
index abf659ebf..9031c94b9 100644
--- a/LICENSE.MD
+++ b/LICENSE.MD
@@ -1,4 +1,8 @@
-Copyright 2024-2024 Mauricio Siu.
+# License
+
+## Core License (Apache License 2.0)
+
+Copyright 2024 Mauricio Siu.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -9,27 +13,14 @@ You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+See the License for the specific language governing permissions and limitations under the License.
-Appendix:
-In case of a conflict, the terms of this appendix supersede the general apache license.
+## Additional Terms for Specific Features
-- Unless provided with a written agreement or permission, the paid features of Dokploy (as a service) cannot be modified.
-- Unless provided with a written agreement or permission, no persons are permitted to redistribute another paid version of Dokploy.
-- Unless provided with a written agreement or permission, no persons are permitted to create the same paid version of Dokploy.
-- Furthermore, any modifications of free features of Dokploy should be distributed as free & opensource software.
-
-Appendix B:
-
-- **Prohibition of Resale Without Permission:** Notwithstanding any provisions in the main body of the Apache License, Version 2.0, no party is permitted to sell, resell, or otherwise distribute for commercial gain, the software or any of its components, including both original and modified versions, through any form of commercial distribution channels, including but not limited to online marketplaces, software as a service (SaaS) platforms, or physical media distribution, without prior written consent from the copyright holder.
-
-- **Commercial Distribution:** Any form of distribution of Dokploy, whether for direct profit or indirect financial benefit, through commercial channels is strictly prohibited without a separate commercial agreement negotiated with the copyright holder. This includes but is not limited to, offerings on software marketplaces or through third-party distributors.
-
-- **Modification of Paid Features:** The paid features of Dokploy (as a service) may not be modified, integrated into other software, or redistributed in any form without explicit written permission from the copyright holder.
-
-- **Open Source Distribution of Free Features:** Any modifications to the free features of Dokploy must be distributed freely and must not be included in any paid or commercial package without complying with the open-source license terms stipulated in this agreement.
-
-If you have any questions, please feel free to reach out to us.
+The following additional terms apply to the multi-node support and Docker Compose file support features of Dokploy. In the event of a conflict, these provisions shall take precedence over those in the Apache License:
+- **Self-Hosted Version Free**: All features of Dokploy, including multi-node support and Docker Compose file support, will always be free to use in the self-hosted version.
+- **Restriction on Resale**: The multi-node support and Docker Compose file support features cannot be sold or offered as a service by any party other than the copyright holder without prior written consent.
+- **Modification Distribution**: Any modifications to the multi-node support and Docker Compose file support features must be distributed freely and cannot be sold or offered as a service.
+For further inquiries or permissions, please contact us directly.
diff --git a/README-de.md b/README-de.md
new file mode 100644
index 000000000..d9afbd414
--- /dev/null
+++ b/README-de.md
@@ -0,0 +1,57 @@
+
+
+
+
Dokploy
+
+
+
+
+
+
+
+
+Dokploy ist eine kostenlose und self-hostable Platform as a Service (PaaS), welche das hosten und managen von deinen Projekten und Datenbanken vereinfacht, das geschieht mithilfe von Docker und Treafik. Es ist designt, um deine Leistung und die Sicherheit deiner Projekte zu verbessern. Dokploy erlaubt dir schnell und einfach auf jeder VPS deine Projekte zu verwirklichen.
+
+
+## Erklärung
+[English](README.md) | [中文](README-zh.md) | [Deutsch](README-de.md) | [Русский Язык](README-ru.md)
+
+
+
+
+## 🌟 Vorteile
+
+- **Projekte**: - **Projekte**: Hoste jegliche Art von Projekt (Node.js, PHP, Python, Go, Ruby, etc.) mit Einfachheit.
+- **Datenbanken**: Erstelle und manage Datenbanken, wie MySQL, PostgreSQL, MongoDB, MariaDB, Redis, und mehr.
+- **Docker Management**: Einfach Docker container hosten und managen.
+- **Traefik Integration**: Automatische Integration mit Traefik für routing und load balancing
+- **Real-time Monitoring**: Monitor von CPU, RAM, Speicher, und network Nutzung.
+- **Database Backups**: Automatische Backups mit Support für mehrere Speicher Systeme.
+
+
+## 🚀 Loslegen
+
+Um anzufangen führe einfach den folgende command in einer VPS aus:
+
+```bash
+curl -sSL https://dokploy.com/install.sh | sh
+```
+
+Getestete Systems:
+
+- Ubuntu 24.04 LTS (Noble Numbat)
+- Ubuntu 23.10 (Mantic Minotaur)
+- Ubuntu 22.04 LTS (Jammy Jellyfish)
+- Ubuntu 20.04 LTS (Focal Fossa)
+- Ubuntu 18.04 LTS (Bionic Beaver)
+- Debian 12
+- Debian 11
+- Fedora 40
+- Centos 9
+- Centos 8
+
+
+## 📄 Dokumentation
+
+Für eine detaillierte Dokumentation, siehe [docs.dokploy.com/docs](https://docs.dokploy.com)
+
diff --git a/README-ru.md b/README-ru.md
new file mode 100644
index 000000000..52881a4ef
--- /dev/null
+++ b/README-ru.md
@@ -0,0 +1,56 @@
+
+
Dokploy
+
+
+
+
+
+
+
+
+
+Dokploy - это бесплатная самоустанавливаемая Платформа как Сервис (PaaS), которая упрощает развертывание и управление приложениями и базами данных с использованием Docker и Traefik. Разработанный для повышения эффективности и безопасности, Dokploy позволяет развертывать ваши приложения на любом VPS.
+
+
+
+## Объяснение
+[English](README.md) | [中文](README-zh.md) | [Deutsch](README-de.md)
+
+
+
+
+## 🌟 Особенности
+
+- **Приложения**: Легко развертывать любой тип приложения (Node.js, PHP, Python, Go, Ruby и др.).
+- **Базы данных**: Создавайте и управляйте базами данных с поддержкой MySQL, PostgreSQL, MongoDB, MariaDB, Redis и других.
+- **Управление Docker**: Легко развертывать и управляйте контейнерами Docker.
+- **Интеграция с Traefik**: Автоматически интегрируется с Traefik для маршрутизации и балансировки нагрузки.
+- **Мониторинг в реальном времени**: Отслеживайте использование CPU, памяти, хранилища и сети.
+- **Резервное копирование баз данных**: Автоматизируйте резервное копирование с поддержкой нескольких мест хранения.
+
+
+## 🚀 Начало работы
+
+Чтобы установить, выполните следующую команду на VPS:
+
+
+```bash
+curl -sSL https://dokploy.com/install.sh | sh
+```
+
+Проверенные системы:
+
+- Ubuntu 24.04 LTS (Noble Numbat)
+- Ubuntu 23.10 (Mantic Minotaur)
+- Ubuntu 22.04 LTS (Jammy Jellyfish)
+- Ubuntu 20.04 LTS (Focal Fossa)
+- Ubuntu 18.04 LTS (Bionic Beaver)
+- Debian 12
+- Debian 11
+- Fedora 40
+- Centos 9
+- Centos 8
+
+
+## 📄 Документация
+Для подробной документации посетите [docs.dokploy.com/docs](https://docs.dokploy.com).
diff --git a/README-zh.md b/README-zh.md
new file mode 100644
index 000000000..35c7fc1f9
--- /dev/null
+++ b/README-zh.md
@@ -0,0 +1,60 @@
+
+
+