Merge branch 'canary' into template-frappe-hr

This commit is contained in:
Mauricio Siu
2025-01-30 23:32:56 -06:00
committed by GitHub
10 changed files with 233 additions and 10 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -0,0 +1,61 @@
services:
evolution-api:
image: atendai/evolution-api:v2.1.2
restart: always
volumes:
- evolution-instances:/evolution/instances
networks:
- dokploy-network
environment:
- SERVER_URL=${SERVER_URL}
- AUTHENTICATION_TYPE=${AUTHENTICATION_TYPE}
- AUTHENTICATION_API_KEY=${AUTHENTICATION_API_KEY}
- AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=${AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES}
- LANGUAGE=${LANGUAGE}
- CONFIG_SESSION_PHONE_CLIENT=${CONFIG_SESSION_PHONE_CLIENT}
- CONFIG_SESSION_PHONE_NAME=${CONFIG_SESSION_PHONE_NAME}
- TELEMETRY=${TELEMETRY}
- TELEMETRY_URL=${TELEMETRY_URL}
- DATABASE_ENABLED=${DATABASE_ENABLED}
- DATABASE_PROVIDER=${DATABASE_PROVIDER}
- DATABASE_CONNECTION_URI=${DATABASE_CONNECTION_URI}
- DATABASE_SAVE_DATA_INSTANCE=${DATABASE_SAVE_DATA_INSTANCE}
- DATABASE_SAVE_DATA_NEW_MESSAGE=${DATABASE_SAVE_DATA_NEW_MESSAGE}
- DATABASE_SAVE_MESSAGE_UPDATE=${DATABASE_SAVE_MESSAGE_UPDATE}
- DATABASE_SAVE_DATA_CONTACTS=${DATABASE_SAVE_DATA_CONTACTS}
- DATABASE_SAVE_DATA_CHATS=${DATABASE_SAVE_DATA_CHATS}
- DATABASE_SAVE_DATA_LABELS=${DATABASE_SAVE_DATA_LABELS}
- DATABASE_SAVE_DATA_HISTORIC=${DATABASE_SAVE_DATA_HISTORIC}
- CACHE_REDIS_ENABLED=${CACHE_REDIS_ENABLED}
- CACHE_REDIS_URI=${CACHE_REDIS_URI}
- CACHE_REDIS_PREFIX_KEY=${CACHE_REDIS_PREFIX_KEY}
- CACHE_REDIS_SAVE_INSTANCES=${CACHE_REDIS_SAVE_INSTANCES}
evolution-postgres:
image: postgres:16-alpine
restart: always
volumes:
- evolution-postgres-data:/var/lib/postgresql/data
networks:
- dokploy-network
environment:
- POSTGRES_DB=${POSTGRES_DATABASE}
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
evolution-redis:
image: redis:alpine
restart: always
volumes:
- evolution-redis-data:/data
networks:
- dokploy-network
networks:
dokploy-network:
external: true
volumes:
evolution-instances:
evolution-postgres-data:
evolution-redis-data:

View File

@@ -0,0 +1,59 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const apiKey = generateBase64(64);
const postgresPassword = generatePassword();
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "evolution-api",
},
];
const envs = [
`SERVER_URL=https://${mainDomain}`,
"AUTHENTICATION_TYPE=apikey",
`AUTHENTICATION_API_KEY=${apiKey}`,
"AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true",
"LANGUAGE=en",
"CONFIG_SESSION_PHONE_CLIENT=Evolution API",
"CONFIG_SESSION_PHONE_NAME=Chrome",
"TELEMETRY=false",
"TELEMETRY_URL=",
"POSTGRES_DATABASE=evolution",
"POSTGRES_USERNAME=postgresql",
`POSTGRES_PASSWORD=${postgresPassword}`,
"DATABASE_ENABLED=true",
"DATABASE_PROVIDER=postgresql",
`DATABASE_CONNECTION_URI=postgres://postgresql:${postgresPassword}@evolution-postgres:5432/evolution`,
"DATABASE_SAVE_DATA_INSTANCE=true",
"DATABASE_SAVE_DATA_NEW_MESSAGE=true",
"DATABASE_SAVE_MESSAGE_UPDATE=true",
"DATABASE_SAVE_DATA_CONTACTS=true",
"DATABASE_SAVE_DATA_CHATS=true",
"DATABASE_SAVE_DATA_LABELS=true",
"DATABASE_SAVE_DATA_HISTORIC=true",
"CACHE_REDIS_ENABLED=true",
"CACHE_REDIS_URI=redis://evolution-redis:6379",
"CACHE_REDIS_PREFIX_KEY=evolution",
"CACHE_REDIS_SAVE_INSTANCES=true",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,38 @@
x-environment: &environment
environment:
WEBAPP_URL: ${WEBAPP_URL}
NEXTAUTH_URL: ${NEXTAUTH_URL}
DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/formbricks?schema=public"
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
CRON_SECRET: ${CRON_SECRET}
EMAIL_VERIFICATION_DISABLED: 1
PASSWORD_RESET_DISABLED: 1
S3_FORCE_PATH_STYLE: 0
services:
postgres:
restart: always
image: pgvector/pgvector:pg17
volumes:
- postgres:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=postgres
networks:
- dokploy-network
formbricks:
restart: always
image: ghcr.io/formbricks/formbricks:v3.1.3
depends_on:
- postgres
ports:
- 3000
volumes:
- ../files/uploads:/home/nextjs/apps/web/uploads/
<<: *environment
volumes:
postgres:
driver: local
uploads:

View File

@@ -0,0 +1,39 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretBase = generateBase64(64);
const encryptionKey = generateBase64(48);
const cronSecret = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "formbricks",
},
];
const envs = [
`WEBAPP_URL=http://${mainDomain}`,
`NEXTAUTH_URL=http://${mainDomain}`,
`NEXTAUTH_SECRET=${secretBase}`,
`ENCRYPTION_KEY=${encryptionKey}`,
`CRON_SECRET=${cronSecret}`,
];
const mounts: Template["mounts"] = [];
return {
envs,
mounts,
domains,
};
}

View File

@@ -1,6 +1,6 @@
services:
db:
image: postgres:13
image: postgres:17-alpine
ports:
- 5432
networks:
@@ -19,7 +19,7 @@ services:
- listmonk-data:/var/lib/postgresql/data
setup:
image: listmonk/listmonk:v3.0.0
image: listmonk/listmonk:v4.1.0
networks:
- dokploy-network
volumes:
@@ -35,7 +35,7 @@ services:
app:
restart: unless-stopped
image: listmonk/listmonk:v3.0.0
image: listmonk/listmonk:v4.1.0
environment:
- TZ=Etc/UTC
depends_on:

View File

@@ -2,13 +2,11 @@ import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const randomDomain = generateRandomDomain(schema);
const adminPassword = generatePassword(32);
const domains: DomainSchema[] = [
{
@@ -19,7 +17,7 @@ export function generate(schema: Schema): Template {
];
const envs = [
`# login with admin:${adminPassword}`,
`# visit the page to setup your super admin user`,
"# check config.toml in Advanced / Volumes for more options",
];
@@ -29,9 +27,6 @@ export function generate(schema: Schema): Template {
content: `[app]
address = "0.0.0.0:9000"
admin_username = "admin"
admin_password = "${adminPassword}"
[db]
host = "db"
port = 5432

View File

@@ -2,7 +2,7 @@ version: "3.9"
services:
teable:
image: ghcr.io/teableio/teable:1.3.1-alpha-build.460
image: ghcr.io/teableio/teable:latest
restart: always
volumes:
- teable-data:/app/.assets

View File

@@ -1239,6 +1239,21 @@ export const templates: TemplateData[] = [
tags: ["matrix", "communication"],
load: () => import("./conduit/index").then((m) => m.generate),
},
{
id: "evolutionapi",
name: "Evolution API",
version: "v2.1.2",
description:
"Evolution API is a robust platform dedicated to empowering small businesses with limited resources, going beyond a simple messaging solution via WhatsApp.",
logo: "evolutionapi.png",
links: {
github: "https://github.com/EvolutionAPI/evolution-api",
docs: "https://doc.evolution-api.com/v2/en/get-started/introduction",
website: "https://evolution-api.com/opensource-whatsapp-api/",
},
tags: ["api", "whatsapp", "messaging"],
load: () => import("./evolutionapi/index").then((m) => m.generate),
},
{
id: "conduwuit",
name: "Conduwuit",
@@ -1452,5 +1467,21 @@ export const templates: TemplateData[] = [
},
tags: ["hrms", "payroll", "leaves", "expenses", "attendance", "performace"],
load: () => import("./frappe-hr/index").then((m) => m.generate),
},
{
id: "formbricks",
name: "Formbricks",
version: "v3.1.3",
description:
"Formbricks is an open-source survey and form platform for collecting user data.",
logo: "formbricks.png",
links: {
github: "https://github.com/formbricks/formbricks",
website: "https://formbricks.com/",
docs: "https://formbricks.com/docs",
},
tags: ["forms", "analytics"],
load: () => import("./formbricks/index").then((m) => m.generate),
},
];