From 69a4a87079817d068242d1dbf3ac0c25ad2fbd15 Mon Sep 17 00:00:00 2001 From: seppulcro Date: Thu, 14 Nov 2024 15:06:53 +0000 Subject: [PATCH] feat: add nextcloud-aio template --- .../public/templates/nextcloud-aio.svg | 1 + .../nextcloud-aio/docker-compose.yml | 38 +++++++++++++++++++ apps/dokploy/templates/nextcloud-aio/index.ts | 25 ++++++++++++ apps/dokploy/templates/templates.ts | 15 ++++++++ 4 files changed, 79 insertions(+) create mode 100644 apps/dokploy/public/templates/nextcloud-aio.svg create mode 100644 apps/dokploy/templates/nextcloud-aio/docker-compose.yml create mode 100644 apps/dokploy/templates/nextcloud-aio/index.ts diff --git a/apps/dokploy/public/templates/nextcloud-aio.svg b/apps/dokploy/public/templates/nextcloud-aio.svg new file mode 100644 index 00000000..54e6056f --- /dev/null +++ b/apps/dokploy/public/templates/nextcloud-aio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dokploy/templates/nextcloud-aio/docker-compose.yml b/apps/dokploy/templates/nextcloud-aio/docker-compose.yml new file mode 100644 index 00000000..e8381d2b --- /dev/null +++ b/apps/dokploy/templates/nextcloud-aio/docker-compose.yml @@ -0,0 +1,38 @@ +services: + nextcloud: + image: nextcloud:30.0.2 + restart: always + networks: + - dokploy-network + ports: + - 80 + volumes: + - nextcloud_data:/var/www/html + environment: + - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} + - MYSQL_HOST=nextcloud_db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + - OVERWRITEPROTOCOL=https + + nextcloud_db: + image: mariadb + restart: always + networks: + - dokploy-network + volumes: + - nextcloud_db_data:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_SECRET_PASSWORD_ROOT} + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + +volumes: + nextcloud_data: + nextcloud_db_data: + +networks: + dokploy-network: + external: true diff --git a/apps/dokploy/templates/nextcloud-aio/index.ts b/apps/dokploy/templates/nextcloud-aio/index.ts new file mode 100644 index 00000000..def31601 --- /dev/null +++ b/apps/dokploy/templates/nextcloud-aio/index.ts @@ -0,0 +1,25 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const randomDomain = generateRandomDomain(schema); + const envs = [ + "NEXTCLOUD_DOMAIN=mynextclouddomain.tld", + "MYSQL_SECRET_PASSWORD=MYSQLPASSWORDCHANGEME", + "MYSQL_SECRET_PASSWORD_ROOT=MYSQLPASSWORDROOT_CHANGEME", + ]; + + const domains: DomainSchema[] = [ + { + host: randomDomain, + port: 80, + serviceName: "nextcloud", + }, + ]; + + return { envs, domains }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 28af7c56..37aeb1e1 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -702,4 +702,19 @@ export const templates: TemplateData[] = [ tags: ["IA", "chat"], load: () => import("./lobe-chat/index").then((m) => m.generate), }, + { + id: "nextcloud-aio", + name: "Nextcloud All in One", + version: "30.0.2", + description: + "Nextcloud (AIO) is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", + logo: "nextcloud-aio.svg", + links: { + github: "https://github.com/nextcloud/docker", + website: "https://nextcloud.com/", + docs: "https://docs.nextcloud.com/", + }, + tags: ["file", "sync"], + load: () => import("./nextcloud-aio/index").then((m) => m.generate), + }, ];