feat: add aptabase template

This commit is contained in:
Freilyn Bernabe
2024-08-21 16:31:02 -04:00
parent afbe42a577
commit 5a3d0f8288
4 changed files with 101 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
<svg class="w-12 text-primary" viewBox="0 0 1000 760" xmlns="http://www.w3.org/2000/svg">
<path fill="#1a61ff"
d="M626.7 177.36c-55.8-98.4-197.59-98.4-253.39 0L112.97 636.44H500c0-51.67 41.88-93.55 93.55-93.55h22.09l57.82 93.55h213.57L626.69 177.37Zm-11.06 365.52-70.21-123.82c-20.01-35.28-70.84-35.28-90.85 0l-70.21 123.82H273.58l181.01-319.19c20.01-35.28 70.84-35.28 90.85 0l181.01 319.19H615.66Z"
style="--darkreader-inline-fill:currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 465 B

View File

@@ -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

View File

@@ -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,
};
}

View File

@@ -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),
},
];