From 5a3d0f82883b07beac1c19fe59a0761872e1966f Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Wed, 21 Aug 2024 16:31:02 -0400 Subject: [PATCH 1/6] feat: add aptabase template --- apps/dokploy/public/templates/aptabase.svg | 5 +++ .../templates/aptabase/docker-compose.yml | 45 +++++++++++++++++++ apps/dokploy/templates/aptabase/index.ts | 36 +++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++++++ 4 files changed, 101 insertions(+) create mode 100644 apps/dokploy/public/templates/aptabase.svg create mode 100644 apps/dokploy/templates/aptabase/docker-compose.yml create mode 100644 apps/dokploy/templates/aptabase/index.ts diff --git a/apps/dokploy/public/templates/aptabase.svg b/apps/dokploy/public/templates/aptabase.svg new file mode 100644 index 00000000..3cb71ecf --- /dev/null +++ b/apps/dokploy/public/templates/aptabase.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml new file mode 100644 index 00000000..057aec9d --- /dev/null +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -0,0 +1,45 @@ +services: + aptabase_db: + container_name: aptabase_db + image: postgres:15-alpine + restart: always + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_USER: aptabase + POSTGRES_PASSWORD: sTr0NGp4ssw0rd + + aptabase_events_db: + container_name: aptabase_events_db + image: clickhouse/clickhouse-server:23.8.16.16-alpine + restart: always + volumes: + - events-db-data:/var/lib/clickhouse + environment: + CLICKHOUSE_USER: aptabase + CLICKHOUSE_PASSWORD: sTr0NGp4ssw0rd + ulimits: + nofile: + soft: 262144 + hard: 262144 + + aptabase: + container_name: aptabase_app + image: ghcr.io/aptabase/aptabase:main + restart: always + depends_on: + - aptabase_events_db + - aptabase_db + ports: + - 8000:8080 + environment: + BASE_URL: http://localhost:8000 # replace with your ip or domain, including port if needed + AUTH_SECRET: c4rI4x8kz5DgKJ1is5Eiu9bNncSQ6ROD # get a strong secret from https://randomkeygen.com/ + DATABASE_URL: Server=aptabase_db;Port=5432;User Id=aptabase;Password=sTr0NGp4ssw0rd;Database=aptabase + CLICKHOUSE_URL: Host=aptabase_events_db;Port=8123;Username=aptabase;Password=sTr0NGp4ssw0rd + +volumes: + db-data: + driver: local + events-db-data: + driver: local diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts new file mode 100644 index 00000000..6a6cb527 --- /dev/null +++ b/apps/dokploy/templates/aptabase/index.ts @@ -0,0 +1,36 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainDomain = generateRandomDomain(schema); + const authSecret = generateBase64(32); + const postgresPassword = generateBase64(16); + const clickhousePassword = generateBase64(16); + + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8000, + serviceName: "aptabase", + }, + ]; + + const envs = [ + `BASE_URL=http://${mainDomain}`, + `AUTH_SECRET=${authSecret}`, + `POSTGRES_PASSWORD=${postgresPassword}`, + `CLICKHOUSE_PASSWORD=${clickhousePassword}`, + `DATABASE_URL=Server=aptabase_db;Port=5432;User Id=aptabase;Password=${postgresPassword};Database=aptabase`, + `CLICKHOUSE_URL=Host=aptabase_events_db;Port=8123;Username=aptabase;Password=${clickhousePassword}`, + ]; + + return { + envs, + domains, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index bf783181..336ab400 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -423,4 +423,19 @@ export const templates: TemplateData[] = [ tags: ["chat"], load: () => import("./soketi/index").then((m) => m.generate), }, + { + id: "aptabase", + name: "Aptabase", + version: "v1.0.0", + description: "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", + logo: "aptabase.svg", + links: { + github: "https://github.com/aptabase/aptabase", + website: "https://aptabase.com/", + docs: "https://github.com/aptabase/aptabase/blob/main/README.md", + }, + tags: ["analytics", "self-hosted"], + load: () => import("./aptabase/index").then((m) => m.generate), + }, + ]; From 53b24534a8da942699aa4975d74303714773151a Mon Sep 17 00:00:00 2001 From: Freilynbp03 Date: Wed, 21 Aug 2024 21:45:14 -0400 Subject: [PATCH 2/6] feat(template): add Aptabase template with ClickHouse and PostgreSQL --- .../templates/aptabase/docker-compose.yml | 18 ++++++++++++++++-- apps/dokploy/templates/aptabase/index.ts | 8 ++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 057aec9d..357c99d0 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -8,6 +8,13 @@ services: environment: POSTGRES_USER: aptabase POSTGRES_PASSWORD: sTr0NGp4ssw0rd + networks: + - dokploy-network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U aptabase"] + interval: 10s + timeout: 5s + retries: 5 aptabase_events_db: container_name: aptabase_events_db @@ -22,6 +29,13 @@ services: nofile: soft: 262144 hard: 262144 + networks: + - dokploy-network + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8123 || exit 1"] + interval: 10s + timeout: 5s + retries: 5 aptabase: container_name: aptabase_app @@ -33,8 +47,8 @@ services: ports: - 8000:8080 environment: - BASE_URL: http://localhost:8000 # replace with your ip or domain, including port if needed - AUTH_SECRET: c4rI4x8kz5DgKJ1is5Eiu9bNncSQ6ROD # get a strong secret from https://randomkeygen.com/ + BASE_URL: http://${APTABASE_HOST} + AUTH_SECRET: ${AUTH_SECRET} DATABASE_URL: Server=aptabase_db;Port=5432;User Id=aptabase;Password=sTr0NGp4ssw0rd;Database=aptabase CLICKHOUSE_URL: Host=aptabase_events_db;Port=8123;Username=aptabase;Password=sTr0NGp4ssw0rd diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 6a6cb527..8d793d68 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -21,12 +21,8 @@ export function generate(schema: Schema): Template { ]; const envs = [ - `BASE_URL=http://${mainDomain}`, - `AUTH_SECRET=${authSecret}`, - `POSTGRES_PASSWORD=${postgresPassword}`, - `CLICKHOUSE_PASSWORD=${clickhousePassword}`, - `DATABASE_URL=Server=aptabase_db;Port=5432;User Id=aptabase;Password=${postgresPassword};Database=aptabase`, - `CLICKHOUSE_URL=Host=aptabase_events_db;Port=8123;Username=aptabase;Password=${clickhousePassword}`, + `APTABASE_HOST=${mainDomain}`, + `AUTH_SECRET=${authSecret}` ]; return { From ac28aff022c75afa538d1511a7538e24852cc56a Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 08:38:51 -0400 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- apps/dokploy/templates/aptabase/docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 357c99d0..1e333ebd 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -44,8 +44,6 @@ services: depends_on: - aptabase_events_db - aptabase_db - ports: - - 8000:8080 environment: BASE_URL: http://${APTABASE_HOST} AUTH_SECRET: ${AUTH_SECRET} From b8741f1702fa6c108a862a69d3a9b763e1d0ecfe Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 08:41:12 -0400 Subject: [PATCH 4/6] feat(template): aptabase set port 8080 --- apps/dokploy/templates/aptabase/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 8d793d68..1075485c 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -15,7 +15,7 @@ export function generate(schema: Schema): Template { const domains: DomainSchema[] = [ { host: mainDomain, - port: 8000, + port: 8080, serviceName: "aptabase", }, ]; From 137edf1250607b582a4f5a85a38e60ae0750d826 Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 15:12:03 -0400 Subject: [PATCH 5/6] feat: remove container_name prop --- apps/dokploy/templates/aptabase/docker-compose.yml | 6 ------ apps/dokploy/templates/aptabase/index.ts | 2 -- 2 files changed, 8 deletions(-) diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml index 1e333ebd..934fd1ee 100644 --- a/apps/dokploy/templates/aptabase/docker-compose.yml +++ b/apps/dokploy/templates/aptabase/docker-compose.yml @@ -1,6 +1,5 @@ services: aptabase_db: - container_name: aptabase_db image: postgres:15-alpine restart: always volumes: @@ -17,7 +16,6 @@ services: retries: 5 aptabase_events_db: - container_name: aptabase_events_db image: clickhouse/clickhouse-server:23.8.16.16-alpine restart: always volumes: @@ -38,12 +36,8 @@ services: retries: 5 aptabase: - container_name: aptabase_app image: ghcr.io/aptabase/aptabase:main restart: always - depends_on: - - aptabase_events_db - - aptabase_db environment: BASE_URL: http://${APTABASE_HOST} AUTH_SECRET: ${AUTH_SECRET} diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index 1075485c..bc83cc81 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -9,8 +9,6 @@ import { export function generate(schema: Schema): Template { const mainDomain = generateRandomDomain(schema); const authSecret = generateBase64(32); - const postgresPassword = generateBase64(16); - const clickhousePassword = generateBase64(16); const domains: DomainSchema[] = [ { From 1e6e85ed5b2569a06f19d548bd39f00170aa844d Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Thu, 22 Aug 2024 16:08:48 -0400 Subject: [PATCH 6/6] style: run code formatting on two files --- apps/dokploy/templates/aptabase/index.ts | 41 +++++++++++------------- apps/dokploy/templates/templates.ts | 4 +-- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts index bc83cc81..38b077ae 100644 --- a/apps/dokploy/templates/aptabase/index.ts +++ b/apps/dokploy/templates/aptabase/index.ts @@ -1,30 +1,27 @@ import { - type DomainSchema, - type Schema, - type Template, - generateBase64, - generateRandomDomain, + type DomainSchema, + type Schema, + type Template, + generateBase64, + generateRandomDomain, } from "../utils"; export function generate(schema: Schema): Template { - const mainDomain = generateRandomDomain(schema); - const authSecret = generateBase64(32); + const mainDomain = generateRandomDomain(schema); + const authSecret = generateBase64(32); - const domains: DomainSchema[] = [ - { - host: mainDomain, - port: 8080, - serviceName: "aptabase", - }, - ]; + const domains: DomainSchema[] = [ + { + host: mainDomain, + port: 8080, + serviceName: "aptabase", + }, + ]; - const envs = [ - `APTABASE_HOST=${mainDomain}`, - `AUTH_SECRET=${authSecret}` - ]; + const envs = [`APTABASE_HOST=${mainDomain}`, `AUTH_SECRET=${authSecret}`]; - return { - envs, - domains, - }; + return { + envs, + domains, + }; } diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 336ab400..205a4e46 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -427,7 +427,8 @@ export const templates: TemplateData[] = [ id: "aptabase", name: "Aptabase", version: "v1.0.0", - description: "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", + description: + "Aptabase is a self-hosted web analytics platform that lets you track website traffic and user behavior.", logo: "aptabase.svg", links: { github: "https://github.com/aptabase/aptabase", @@ -437,5 +438,4 @@ export const templates: TemplateData[] = [ tags: ["analytics", "self-hosted"], load: () => import("./aptabase/index").then((m) => m.generate), }, - ];