feat: migrate templates

This commit is contained in:
Mauricio Siu
2025-03-09 20:40:08 -06:00
parent fbbb4f46f3
commit 2956016dd3
215 changed files with 2533 additions and 4921 deletions

View File

@@ -1,44 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const apiKey = Array.from({ length: 32 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
const encryptionKey = Array.from({ length: 32 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
const jwtSecret = Array.from({ length: 32 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
const postgresPassword = Array.from({ length: 32 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 80,
serviceName: "activepieces",
},
];
const envs = [
`AP_HOST=${mainDomain}`,
`AP_API_KEY=${apiKey}`,
`AP_ENCRYPTION_KEY=${encryptionKey}`,
`AP_JWT_SECRET=${jwtSecret}`,
`AP_POSTGRES_PASSWORD=${postgresPassword}`,
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,21 @@
variables:
main_domain: ${randomDomain}
api_key: ${generatePassword(32)}
encryption_key: ${generatePassword(32)}
jwt_secret: ${generatePassword(32)}
postgres_password: ${generatePassword(32)}
config:
domains:
- serviceName: activepieces
port: 80
host: ${main_domain}
env:
- AP_HOST=${main_domain}
- AP_API_KEY=${api_key}
- AP_ENCRYPTION_KEY=${encryption_key}
- AP_JWT_SECRET=${jwt_secret}
- AP_POSTGRES_PASSWORD=${postgres_password}
mounts: []

View File

@@ -1,20 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 5006,
serviceName: "actualbudget",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: actualbudget
port: 5006
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,22 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 5244,
serviceName: "alist",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: alist
port: 5244
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,33 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainServiceHash = generateHash(schema.projectName);
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 9080,
serviceName: "answer",
},
];
const envs = [
`ANSWER_HOST=http://${mainDomain}`,
`SERVICE_HASH=${mainServiceHash}`,
];
const mounts: Template["mounts"] = [];
return {
envs,
mounts,
domains,
};
}

View File

@@ -0,0 +1,15 @@
variables:
main_domain: ${randomDomain}
service_hash: ${generateHash(projectName)}
config:
domains:
- serviceName: answer
port: 9080
host: ${main_domain}
env:
- ANSWER_HOST=http://${main_domain}
- SERVICE_HASH=${service_hash}
mounts: []

View File

@@ -1,23 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const _mainServiceHash = generateHash(schema.projectName);
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 80,
serviceName: "appsmith",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: appsmith
port: 80
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,153 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{ host: mainDomain, port: 80, serviceName: "appwrite", path: "/" },
{
host: mainDomain,
port: 80,
serviceName: "appwrite-console",
path: "/console",
},
{
host: mainDomain,
port: 80,
serviceName: "appwrite-realtime",
path: "/v1/realtime",
},
];
const envs = [
"_APP_ENV=production",
"_APP_LOCALE=en",
"_APP_OPTIONS_ABUSE=enabled",
"_APP_OPTIONS_FORCE_HTTPS=disabled",
"_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled",
"_APP_OPTIONS_ROUTER_PROTECTION=disabled",
"_APP_OPENSSL_KEY_V1=your-secret-key",
`_APP_DOMAIN=${mainDomain}`,
`_APP_DOMAIN_FUNCTIONS=${mainDomain}`,
`_APP_DOMAIN_TARGET=${mainDomain}`,
"_APP_CONSOLE_WHITELIST_ROOT=enabled",
"_APP_CONSOLE_WHITELIST_EMAILS=",
"_APP_CONSOLE_WHITELIST_IPS=",
"_APP_CONSOLE_HOSTNAMES=",
"_APP_SYSTEM_EMAIL_NAME=Appwrite",
"_APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io",
"_APP_SYSTEM_TEAM_EMAIL=team@appwrite.io",
"_APP_SYSTEM_RESPONSE_FORMAT=",
"_APP_SYSTEM_SECURITY_EMAIL_ADDRESS=certs@appwrite.io",
"_APP_EMAIL_SECURITY=",
"_APP_EMAIL_CERTIFICATES=",
"_APP_USAGE_STATS=enabled",
"_APP_LOGGING_PROVIDER=",
"_APP_LOGGING_CONFIG=",
"_APP_USAGE_AGGREGATION_INTERVAL=30",
"_APP_USAGE_TIMESERIES_INTERVAL=30",
"_APP_USAGE_DATABASE_INTERVAL=900",
"_APP_WORKER_PER_CORE=6",
"_APP_CONSOLE_SESSION_ALERTS=disabled",
"_APP_REDIS_HOST=redis",
"_APP_REDIS_PORT=6379",
"_APP_REDIS_USER=",
"_APP_REDIS_PASS=",
"_APP_DB_HOST=mariadb",
"_APP_DB_PORT=3306",
"_APP_DB_SCHEMA=appwrite",
"_APP_DB_USER=user",
"_APP_DB_PASS=password",
"_APP_DB_ROOT_PASS=rootsecretpassword",
"_APP_INFLUXDB_HOST=influxdb",
"_APP_INFLUXDB_PORT=8086",
"_APP_STATSD_HOST=telegraf",
"_APP_STATSD_PORT=8125",
"_APP_SMTP_HOST=",
"_APP_SMTP_PORT=",
"_APP_SMTP_SECURE=",
"_APP_SMTP_USERNAME=",
"_APP_SMTP_PASSWORD=",
"_APP_SMS_PROVIDER=",
"_APP_SMS_FROM=",
"_APP_STORAGE_LIMIT=30000000",
"_APP_STORAGE_PREVIEW_LIMIT=20000000",
"_APP_STORAGE_ANTIVIRUS=disabled",
"_APP_STORAGE_ANTIVIRUS_HOST=clamav",
"_APP_STORAGE_ANTIVIRUS_PORT=3310",
"_APP_STORAGE_DEVICE=local",
"_APP_STORAGE_S3_ACCESS_KEY=",
"_APP_STORAGE_S3_SECRET=",
"_APP_STORAGE_S3_REGION=us-east-1",
"_APP_STORAGE_S3_BUCKET=",
"_APP_STORAGE_DO_SPACES_ACCESS_KEY=",
"_APP_STORAGE_DO_SPACES_SECRET=",
"_APP_STORAGE_DO_SPACES_REGION=us-east-1",
"_APP_STORAGE_DO_SPACES_BUCKET=",
"_APP_STORAGE_BACKBLAZE_ACCESS_KEY=",
"_APP_STORAGE_BACKBLAZE_SECRET=",
"_APP_STORAGE_BACKBLAZE_REGION=us-west-004",
"_APP_STORAGE_BACKBLAZE_BUCKET=",
"_APP_STORAGE_LINODE_ACCESS_KEY=",
"_APP_STORAGE_LINODE_SECRET=",
"_APP_STORAGE_LINODE_REGION=eu-central-1",
"_APP_STORAGE_LINODE_BUCKET=",
"_APP_STORAGE_WASABI_ACCESS_KEY=",
"_APP_STORAGE_WASABI_SECRET=",
"_APP_STORAGE_WASABI_REGION=eu-central-1",
"_APP_STORAGE_WASABI_BUCKET=",
"_APP_FUNCTIONS_SIZE_LIMIT=30000000",
"_APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000",
"_APP_FUNCTIONS_TIMEOUT=900",
"_APP_FUNCTIONS_BUILD_TIMEOUT=900",
"_APP_FUNCTIONS_CONTAINERS=10",
"_APP_FUNCTIONS_CPUS=0",
"_APP_FUNCTIONS_MEMORY=0",
"_APP_FUNCTIONS_MEMORY_SWAP=0",
"_APP_FUNCTIONS_RUNTIMES=node-16.0,php-8.0,python-3.9,ruby-3.0",
"_APP_EXECUTOR_SECRET=your-secret-key",
"_APP_EXECUTOR_HOST=http://exc1/v1",
"_APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes",
"_APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0",
"_APP_FUNCTIONS_INACTIVE_THRESHOLD=60",
"DOCKERHUB_PULL_USERNAME=",
"DOCKERHUB_PULL_PASSWORD=",
"DOCKERHUB_PULL_EMAIL=",
"OPEN_RUNTIMES_NETWORK=appwrite_runtimes",
"_APP_FUNCTIONS_RUNTIMES_NETWORK=runtimes",
"_APP_DOCKER_HUB_USERNAME=",
"_APP_DOCKER_HUB_PASSWORD=",
"_APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600",
"_APP_VCS_GITHUB_APP_NAME=",
"_APP_VCS_GITHUB_PRIVATE_KEY=",
"_APP_VCS_GITHUB_APP_ID=",
"_APP_VCS_GITHUB_CLIENT_ID=",
"_APP_VCS_GITHUB_CLIENT_SECRET=",
"_APP_VCS_GITHUB_WEBHOOK_SECRET=",
"_APP_MAINTENANCE_INTERVAL=86400",
"_APP_MAINTENANCE_DELAY=0",
"_APP_MAINTENANCE_RETENTION_CACHE=2592000",
"_APP_MAINTENANCE_RETENTION_EXECUTION=1209600",
"_APP_MAINTENANCE_RETENTION_AUDIT=1209600",
"_APP_MAINTENANCE_RETENTION_ABUSE=86400",
"_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000",
"_APP_MAINTENANCE_RETENTION_SCHEDULES=86400",
"_APP_GRAPHQL_MAX_BATCH_SIZE=10",
"_APP_GRAPHQL_MAX_COMPLEXITY=250",
"_APP_GRAPHQL_MAX_DEPTH=3",
"_APP_MIGRATIONS_FIREBASE_CLIENT_ID=",
"_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=",
"_APP_ASSISTANT_OPENAI_API_KEY=",
];
return {
domains,
envs,
mounts: [],
};
}

View File

@@ -0,0 +1,139 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: appwrite
port: 80
host: ${main_domain}
path: /
- serviceName: appwrite-console
port: 80
host: ${main_domain}
path: /console
- serviceName: appwrite-realtime
port: 80
host: ${main_domain}
path: /v1/realtime
env:
- _APP_ENV=production
- _APP_LOCALE=en
- _APP_OPTIONS_ABUSE=enabled
- _APP_OPTIONS_FORCE_HTTPS=disabled
- _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled
- _APP_OPTIONS_ROUTER_PROTECTION=disabled
- _APP_OPENSSL_KEY_V1=your-secret-key
- _APP_DOMAIN=${main_domain}
- _APP_DOMAIN_FUNCTIONS=${main_domain}
- _APP_DOMAIN_TARGET=${main_domain}
- _APP_CONSOLE_WHITELIST_ROOT=enabled
- _APP_CONSOLE_WHITELIST_EMAILS=
- _APP_CONSOLE_WHITELIST_IPS=
- _APP_CONSOLE_HOSTNAMES=
- _APP_SYSTEM_EMAIL_NAME=Appwrite
- _APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io
- _APP_SYSTEM_TEAM_EMAIL=team@appwrite.io
- _APP_SYSTEM_RESPONSE_FORMAT=
- _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=certs@appwrite.io
- _APP_EMAIL_SECURITY=
- _APP_EMAIL_CERTIFICATES=
- _APP_USAGE_STATS=enabled
- _APP_LOGGING_PROVIDER=
- _APP_LOGGING_CONFIG=
- _APP_USAGE_AGGREGATION_INTERVAL=30
- _APP_USAGE_TIMESERIES_INTERVAL=30
- _APP_USAGE_DATABASE_INTERVAL=900
- _APP_WORKER_PER_CORE=6
- _APP_CONSOLE_SESSION_ALERTS=disabled
- _APP_REDIS_HOST=redis
- _APP_REDIS_PORT=6379
- _APP_REDIS_USER=
- _APP_REDIS_PASS=
- _APP_DB_HOST=mariadb
- _APP_DB_PORT=3306
- _APP_DB_SCHEMA=appwrite
- _APP_DB_USER=user
- _APP_DB_PASS=password
- _APP_DB_ROOT_PASS=rootsecretpassword
- _APP_INFLUXDB_HOST=influxdb
- _APP_INFLUXDB_PORT=8086
- _APP_STATSD_HOST=telegraf
- _APP_STATSD_PORT=8125
- _APP_SMTP_HOST=
- _APP_SMTP_PORT=
- _APP_SMTP_SECURE=
- _APP_SMTP_USERNAME=
- _APP_SMTP_PASSWORD=
- _APP_SMS_PROVIDER=
- _APP_SMS_FROM=
- _APP_STORAGE_LIMIT=30000000
- _APP_STORAGE_PREVIEW_LIMIT=20000000
- _APP_STORAGE_ANTIVIRUS=disabled
- _APP_STORAGE_ANTIVIRUS_HOST=clamav
- _APP_STORAGE_ANTIVIRUS_PORT=3310
- _APP_STORAGE_DEVICE=local
- _APP_STORAGE_S3_ACCESS_KEY=
- _APP_STORAGE_S3_SECRET=
- _APP_STORAGE_S3_REGION=us-east-1
- _APP_STORAGE_S3_BUCKET=
- _APP_STORAGE_DO_SPACES_ACCESS_KEY=
- _APP_STORAGE_DO_SPACES_SECRET=
- _APP_STORAGE_DO_SPACES_REGION=us-east-1
- _APP_STORAGE_DO_SPACES_BUCKET=
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY=
- _APP_STORAGE_BACKBLAZE_SECRET=
- _APP_STORAGE_BACKBLAZE_REGION=us-west-004
- _APP_STORAGE_BACKBLAZE_BUCKET=
- _APP_STORAGE_LINODE_ACCESS_KEY=
- _APP_STORAGE_LINODE_SECRET=
- _APP_STORAGE_LINODE_REGION=eu-central-1
- _APP_STORAGE_LINODE_BUCKET=
- _APP_STORAGE_WASABI_ACCESS_KEY=
- _APP_STORAGE_WASABI_SECRET=
- _APP_STORAGE_WASABI_REGION=eu-central-1
- _APP_STORAGE_WASABI_BUCKET=
- _APP_FUNCTIONS_SIZE_LIMIT=30000000
- _APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000
- _APP_FUNCTIONS_TIMEOUT=900
- _APP_FUNCTIONS_BUILD_TIMEOUT=900
- _APP_FUNCTIONS_CONTAINERS=10
- _APP_FUNCTIONS_CPUS=0
- _APP_FUNCTIONS_MEMORY=0
- _APP_FUNCTIONS_MEMORY_SWAP=0
- _APP_FUNCTIONS_RUNTIMES=node-16.0,php-8.0,python-3.9,ruby-3.0
- _APP_EXECUTOR_SECRET=your-secret-key
- _APP_EXECUTOR_HOST=http://exc1/v1
- _APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes
- _APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0
- _APP_FUNCTIONS_INACTIVE_THRESHOLD=60
- DOCKERHUB_PULL_USERNAME=
- DOCKERHUB_PULL_PASSWORD=
- DOCKERHUB_PULL_EMAIL=
- OPEN_RUNTIMES_NETWORK=appwrite_runtimes
- _APP_FUNCTIONS_RUNTIMES_NETWORK=runtimes
- _APP_DOCKER_HUB_USERNAME=
- _APP_DOCKER_HUB_PASSWORD=
- _APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600
- _APP_VCS_GITHUB_APP_NAME=
- _APP_VCS_GITHUB_PRIVATE_KEY=
- _APP_VCS_GITHUB_APP_ID=
- _APP_VCS_GITHUB_CLIENT_ID=
- _APP_VCS_GITHUB_CLIENT_SECRET=
- _APP_VCS_GITHUB_WEBHOOK_SECRET=
- _APP_MAINTENANCE_INTERVAL=86400
- _APP_MAINTENANCE_DELAY=0
- _APP_MAINTENANCE_RETENTION_CACHE=2592000
- _APP_MAINTENANCE_RETENTION_EXECUTION=1209600
- _APP_MAINTENANCE_RETENTION_AUDIT=1209600
- _APP_MAINTENANCE_RETENTION_ABUSE=86400
- _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000
- _APP_MAINTENANCE_RETENTION_SCHEDULES=86400
- _APP_GRAPHQL_MAX_BATCH_SIZE=10
- _APP_GRAPHQL_MAX_COMPLEXITY=250
- _APP_GRAPHQL_MAX_DEPTH=3
- _APP_MIGRATIONS_FIREBASE_CLIENT_ID=
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=
- _APP_ASSISTANT_OPENAI_API_KEY=
mounts: []

View File

@@ -1,27 +0,0 @@
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 domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "aptabase",
},
];
const envs = [`APTABASE_HOST=${mainDomain}`, `AUTH_SECRET=${authSecret}`];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,15 @@
variables:
main_domain: ${randomDomain}
auth_secret: ${generateBase64(32)}
config:
domains:
- serviceName: aptabase
port: 8080
host: ${main_domain}
env:
- APTABASE_HOST=${main_domain}
- AUTH_SECRET=${auth_secret}
mounts: []

View File

@@ -1,24 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainHost = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainHost,
port: 80,
serviceName: "baserow",
},
];
const envs = [`BASEROW_HOST=${mainHost}`];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: baserow
port: 80
host: ${main_domain}
env:
- BASEROW_HOST=${main_domain}
mounts: []

View File

@@ -1,34 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateHash,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const _mainServiceHash = generateHash(schema.projectName);
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "blender",
},
];
const envs = [
"PUID=1000",
"PGID=1000",
"TZ=Etc/UTC",
"SUBFOLDER=/",
"NVIDIA_VISIBLE_DEVICES=all",
"NVIDIA_DRIVER_CAPABILITIES=all",
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,18 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: blender
port: 3000
host: ${main_domain}
env:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUBFOLDER=/
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
mounts: []

View File

@@ -1,28 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainHost = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainHost,
port: 3000,
serviceName: "browserless",
},
];
const envs = [
`BROWERLESS_HOST=${mainHost}`,
`BROWSERLESS_TOKEN=${generatePassword(16)}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,15 @@
variables:
main_domain: ${randomDomain}
browserless_token: ${generatePassword(16)}
config:
domains:
- serviceName: browserless
port: 3000
host: ${main_domain}
env:
- BROWERLESS_HOST=${main_domain}
- BROWSERLESS_TOKEN=${browserless_token}
mounts: []

View File

@@ -1,45 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const apiKey = generatePassword(32);
const encryptionKey = generatePassword(32);
const jwtSecret = generatePassword(32);
const couchDbPassword = generatePassword(32);
const redisPassword = generatePassword(32);
const minioAccessKey = generatePassword(32);
const minioSecretKey = generatePassword(32);
const watchtowerPassword = generatePassword(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 10000,
serviceName: "proxy",
},
];
const envs = [
`BB_HOST=${mainDomain}`,
`BB_INTERNAL_API_KEY=${apiKey}`,
`BB_API_ENCRYPTION_KEY=${encryptionKey}`,
`BB_JWT_SECRET=${jwtSecret}`,
`BB_COUCHDB_PASSWORD=${couchDbPassword}`,
`BB_REDIS_PASSWORD=${redisPassword}`,
`BB_WATCHTOWER_PASSWORD=${watchtowerPassword}`,
`BB_MINIO_ACCESS_KEY=${minioAccessKey}`,
`BB_MINIO_SECRET_KEY=${minioSecretKey}`,
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,29 @@
variables:
main_domain: ${randomDomain}
api_key: ${generatePassword(32)}
encryption_key: ${generatePassword(32)}
jwt_secret: ${generatePassword(32)}
couchdb_password: ${generatePassword(32)}
redis_password: ${generatePassword(32)}
minio_access_key: ${generatePassword(32)}
minio_secret_key: ${generatePassword(32)}
watchtower_password: ${generatePassword(32)}
config:
domains:
- serviceName: proxy
port: 10000
host: ${main_domain}
env:
- BB_HOST=${main_domain}
- BB_INTERNAL_API_KEY=${api_key}
- BB_API_ENCRYPTION_KEY=${encryption_key}
- BB_JWT_SECRET=${jwt_secret}
- BB_COUCHDB_PASSWORD=${couchdb_password}
- BB_REDIS_PASSWORD=${redis_password}
- BB_WATCHTOWER_PASSWORD=${watchtower_password}
- BB_MINIO_ACCESS_KEY=${minio_access_key}
- BB_MINIO_SECRET_KEY=${minio_secret_key}
mounts: []

View File

@@ -1,32 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const calcomEncryptionKey = generateBase64(32);
const nextAuthSecret = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "calcom",
},
];
const envs = [
`CALCOM_HOST=${mainDomain}`,
`NEXTAUTH_SECRET=${nextAuthSecret}`,
`CALENDSO_ENCRYPTION_KEY=${calcomEncryptionKey}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,17 @@
variables:
main_domain: ${randomDomain}
calcom_encryption_key: ${generateBase64(32)}
nextauth_secret: ${generateBase64(32)}
config:
domains:
- serviceName: calcom
port: 3000
host: ${main_domain}
env:
- CALCOM_HOST=${main_domain}
- NEXTAUTH_SECRET=${nextauth_secret}
- CALENDSO_ENCRYPTION_KEY=${calcom_encryption_key}
mounts: []

View File

@@ -1,46 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretKeyBase = generateBase64(64);
const postgresPassword = generatePassword();
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "chatwoot-rails",
},
];
const envs = [
`FRONTEND_URL=http://${mainDomain}`,
`SECRET_KEY_BASE=${secretKeyBase}`,
"RAILS_ENV=production",
"NODE_ENV=production",
"INSTALLATION_ENV=docker",
"RAILS_LOG_TO_STDOUT=true",
"LOG_LEVEL=info",
"DEFAULT_LOCALE=en",
"POSTGRES_HOST=chatwoot-postgres",
"POSTGRES_PORT=5432",
"POSTGRES_DATABASE=chatwoot",
"POSTGRES_USERNAME=postgres",
`POSTGRES_PASSWORD=${postgresPassword}`,
"REDIS_URL=redis://chatwoot-redis:6379",
"ENABLE_ACCOUNT_SIGNUP=false",
"ACTIVE_STORAGE_SERVICE=local",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,30 @@
variables:
main_domain: ${randomDomain}
secret_key_base: ${generateBase64(64)}
postgres_password: ${generatePassword}
config:
domains:
- serviceName: chatwoot-rails
port: 3000
host: ${main_domain}
env:
- FRONTEND_URL=http://${main_domain}
- SECRET_KEY_BASE=${secret_key_base}
- RAILS_ENV=production
- NODE_ENV=production
- INSTALLATION_ENV=docker
- RAILS_LOG_TO_STDOUT=true
- LOG_LEVEL=info
- DEFAULT_LOCALE=en
- POSTGRES_HOST=chatwoot-postgres
- POSTGRES_PORT=5432
- POSTGRES_DATABASE=chatwoot
- POSTGRES_USERNAME=postgres
- POSTGRES_PASSWORD=${postgres_password}
- REDIS_URL=redis://chatwoot-redis:6379
- ENABLE_ACCOUNT_SIGNUP=false
- ACTIVE_STORAGE_SERVICE=local
mounts: []

View File

@@ -1,25 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const envs = [`DOMAIN=${mainDomain}`];
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 80,
serviceName: "client",
},
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: client
port: 80
host: ${main_domain}
env:
- DOMAIN=${main_domain}
mounts: []

View File

@@ -1,9 +0,0 @@
import type { Schema, Template } from "../utils";
export function generate(_schema: Schema): Template {
const envs = [`CLOUDFLARE_TUNNEL_TOKEN="<INSERT TOKEN>"`];
return {
envs,
};
}

View File

@@ -0,0 +1,9 @@
variables: {}
config:
domains: []
env:
- CLOUDFLARE_TUNNEL_TOKEN="<INSERT TOKEN>"
mounts: []

View File

@@ -1,30 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 7080,
serviceName: "coder",
},
];
const envs = [
"CODER_ACCESS_URL=",
"CODER_HTTP_ADDRESS=0.0.0.0:7080",
"",
"POSTGRES_DB=coder",
"POSTGRES_USER=coder",
"POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,18 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
config:
domains:
- serviceName: coder
port: 7080
host: ${main_domain}
env:
- CODER_ACCESS_URL=
- CODER_HTTP_ADDRESS=0.0.0.0:7080
- POSTGRES_DB=coder
- POSTGRES_USER=coder
- POSTGRES_PASSWORD=${postgres_password}
mounts: []

View File

@@ -1,28 +0,0 @@
// EXAMPLE
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const matrixSubdomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: matrixSubdomain,
port: 6167,
serviceName: "homeserver",
},
];
const envs = [
`MATRIX_SUBDOMAIN=${matrixSubdomain} # Replace by your server name`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: homeserver
port: 6167
host: ${main_domain}
env:
- MATRIX_SUBDOMAIN=${main_domain}
mounts: []

View File

@@ -1,30 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const matrixSubdomain = generateRandomDomain(schema);
const registrationToken = generatePassword(20);
const domains: DomainSchema[] = [
{
host: matrixSubdomain,
port: 6167,
serviceName: "homeserver",
},
];
const envs = [
`CONDUWUIT_SERVER_NAME=${matrixSubdomain}`,
`CONDUWUIT_REGISTRATION_TOKEN=${registrationToken}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,15 @@
variables:
main_domain: ${randomDomain}
registration_token: ${generatePassword(20)}
config:
domains:
- serviceName: homeserver
port: 6167
host: ${main_domain}
env:
- CONDUWUIT_SERVER_NAME=${main_domain}
- CONDUWUIT_REGISTRATION_TOKEN=${registration_token}
mounts: []

View File

@@ -1,38 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const dashboardDomain = generateRandomDomain(schema);
const backendDomain = generateRandomDomain(schema);
const actionsDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: dashboardDomain,
port: 6791,
serviceName: "dashboard",
},
{
host: backendDomain,
port: 3210,
serviceName: "backend",
},
{
host: actionsDomain,
port: 3211,
serviceName: "backend",
},
];
const envs = [
`NEXT_PUBLIC_DEPLOYMENT_URL=http://${backendDomain}`,
`CONVEX_CLOUD_ORIGIN=http://${backendDomain}`,
`CONVEX_SITE_ORIGIN=http://${actionsDomain}`,
];
return { envs, domains };
}

View File

@@ -0,0 +1,23 @@
variables:
dashboard_domain: ${randomDomain}
backend_domain: ${randomDomain}
actions_domain: ${randomDomain}
config:
domains:
- serviceName: dashboard
port: 6791
host: ${dashboard_domain}
- serviceName: backend
port: 3210
host: ${backend_domain}
- serviceName: backend
port: 3211
host: ${actions_domain}
env:
- NEXT_PUBLIC_DEPLOYMENT_URL=http://${backend_domain}
- CONVEX_CLOUD_ORIGIN=http://${backend_domain}
- CONVEX_SITE_ORIGIN=http://${actions_domain}
mounts: []

View File

@@ -1,28 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const username = generatePassword(16);
const password = generatePassword(32);
const domains: DomainSchema[] = [
{
serviceName: "couchdb",
host: mainDomain,
port: 5984,
},
];
const envs = [`COUCHDB_USER=${username}`, `COUCHDB_PASSWORD=${password}`];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,16 @@
variables:
main_domain: ${randomDomain}
username: ${generatePassword(16)}
password: ${generatePassword(32)}
config:
domains:
- serviceName: couchdb
port: 5984
host: ${main_domain}
env:
- COUCHDB_USER=${username}
- COUCHDB_PASSWORD=${password}
mounts: []

View File

@@ -1,23 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 8080,
serviceName: "datalens",
},
];
const envs = ["HC=1"];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: datalens
port: 8080
host: ${main_domain}
env:
- HC=1
mounts: []

View File

@@ -1,31 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const directusSecret = generateBase64(64);
const databasePassword = generatePassword();
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 8055,
serviceName: "directus",
},
];
const envs = [
`DATABASE_PASSWORD=${databasePassword}`,
`DIRECTUS_SECRET=${directusSecret}`,
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,16 @@
variables:
main_domain: ${randomDomain}
directus_secret: ${generateBase64(64)}
database_password: ${generatePassword}
config:
domains:
- serviceName: directus
port: 8055
host: ${main_domain}
env:
- DATABASE_PASSWORD=${database_password}
- DIRECTUS_SECRET=${directus_secret}
mounts: []

View File

@@ -1,45 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const mysqlPassword = generatePassword();
const mysqlRootPassword = generatePassword();
const mysqlUser = "tickets";
const mysqlDatabase = "tickets";
const encryptionKey = Array.from({ length: 48 }, () =>
Math.floor(Math.random() * 16).toString(16),
).join("");
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8169,
serviceName: "tickets-app",
},
];
const envs = [
`TICKETS_HOST=${mainDomain}`,
`MYSQL_DATABASE=${mysqlDatabase}`,
`MYSQL_PASSWORD=${mysqlPassword}`,
`MYSQL_ROOT_PASSWORD=${mysqlRootPassword}`,
`MYSQL_USER=${mysqlUser}`,
`ENCRYPTION_KEY=${encryptionKey}`,
"# Follow the guide at: https://discordtickets.app/self-hosting/installation/docker/#creating-the-discord-application",
"DISCORD_SECRET=",
"DISCORD_TOKEN=",
"SUPER_USERS=YOUR_DISCORD_USER_ID", // Default super user
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,27 @@
variables:
main_domain: ${randomDomain}
mysql_password: ${generatePassword}
mysql_root_password: ${generatePassword}
mysql_user: tickets
mysql_database: tickets
encryption_key: ${generatePassword(48)}
config:
domains:
- serviceName: tickets-app
port: 8169
host: ${main_domain}
env:
- TICKETS_HOST=${main_domain}
- MYSQL_DATABASE=${mysql_database}
- MYSQL_PASSWORD=${mysql_password}
- MYSQL_ROOT_PASSWORD=${mysql_root_password}
- MYSQL_USER=${mysql_user}
- ENCRYPTION_KEY=${encryption_key}
- "# Follow the guide at: https://discordtickets.app/self-hosting/installation/docker/#creating-the-discord-application"
- DISCORD_SECRET=
- DISCORD_TOKEN=
- SUPER_USERS=YOUR_DISCORD_USER_ID
mounts: []

View File

@@ -1,37 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const postgresPassword = generatePassword();
const redisPassword = generatePassword();
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "discourse-app",
},
];
const envs = [
`DISCOURSE_HOST=${mainDomain}`,
`POSTGRES_PASSWORD=${postgresPassword}`,
`REDIS_PASSWORD=${redisPassword}`,
"# Optional: Configure SMTP for email delivery",
"# SMTP_HOST=smtp.example.com",
"# SMTP_PORT=587",
"# SMTP_USER=your_smtp_user",
"# SMTP_PASSWORD=your_smtp_password",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,22 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
redis_password: ${generatePassword}
config:
domains:
- serviceName: discourse-app
port: 3000
host: ${main_domain}
env:
- DISCOURSE_HOST=${main_domain}
- POSTGRES_PASSWORD=${postgres_password}
- REDIS_PASSWORD=${redis_password}
- # Optional: Configure SMTP for email delivery
- # SMTP_HOST=smtp.example.com
- # SMTP_PORT=587
- # SMTP_USER=your_smtp_user
- # SMTP_PASSWORD=your_smtp_password
mounts: []

View File

@@ -1,29 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 3000,
serviceName: "docmost",
},
];
const envs = [
"POSTGRES_DB=docmost",
"POSTGRES_USER=docmost",
"POSTGRES_PASSWORD=STRONG_DB_PASSWORD",
"APP_URL=http://localhost:3000",
"APP_SECRET=VERY_STRONG_SECRET",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,19 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
app_secret: ${generatePassword}
config:
domains:
- serviceName: docmost
port: 3000
host: ${main_domain}
env:
- POSTGRES_DB=docmost
- POSTGRES_USER=docmost
- POSTGRES_PASSWORD=${postgres_password}
- APP_URL=http://${main_domain}:3000
- APP_SECRET=${app_secret}
mounts: []

View File

@@ -1,36 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const nextAuthSecret = generateBase64(32);
const documensoEncryptionKey = generatePassword(32);
const documensoSecondaryEncryptionKey = generatePassword(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "documenso",
},
];
const envs = [
`DOCUMENSO_HOST=${mainDomain}`,
"DOCUMENSO_PORT=3000",
`NEXTAUTH_SECRET=${nextAuthSecret}`,
`NEXT_PRIVATE_ENCRYPTION_KEY=${documensoEncryptionKey}`,
`NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${documensoSecondaryEncryptionKey}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,20 @@
variables:
main_domain: ${randomDomain}
nextauth_secret: ${generateBase64(32)}
encryption_key: ${generatePassword(32)}
secondary_encryption_key: ${generatePassword(64)}
config:
domains:
- serviceName: documenso
port: 3000
host: ${main_domain}
env:
- DOCUMENSO_HOST=${main_domain}
- DOCUMENSO_PORT=3000
- NEXTAUTH_SECRET=${nextauth_secret}
- NEXT_PRIVATE_ENCRYPTION_KEY=${encryption_key}
- NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${secondary_encryption_key}
mounts: []

View File

@@ -1,36 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretKeyBase = generateBase64(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 4000,
serviceName: "doublezero",
},
];
const envs = [
`DOUBLEZERO_HOST=${mainDomain}`,
"DOUBLEZERO_PORT=4000",
`SECRET_KEY_BASE=${secretKeyBase}`,
"AWS_ACCESS_KEY_ID=your-aws-access-key",
"AWS_SECRET_ACCESS_KEY=your-aws-secret-key",
"AWS_REGION=your-aws-region",
"SQS_URL=your-aws-sqs-url",
"SYSTEM_EMAIL=",
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,21 @@
variables:
main_domain: ${randomDomain}
secret_key_base: ${generateBase64(64)}
config:
domains:
- serviceName: doublezero
port: 4000
host: ${main_domain}
env:
- DOUBLEZERO_HOST=${main_domain}
- DOUBLEZERO_PORT=4000
- SECRET_KEY_BASE=${secret_key_base}
- AWS_ACCESS_KEY_ID=your-aws-access-key
- AWS_SECRET_ACCESS_KEY=your-aws-secret-key
- AWS_REGION=your-aws-region
- SQS_URL=your-aws-sqs-url
- SYSTEM_EMAIL=
mounts: []

View File

@@ -1,31 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const _secretKeyBase = generateBase64(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "drawio",
},
];
const envs = [
`DRAWIO_HOST=${mainDomain}`,
`DRAWIO_BASE_URL=https://${mainDomain}`,
`DRAWIO_SERVER_URL=https://${mainDomain}/`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,15 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: drawio
port: 8080
host: ${main_domain}
env:
- DRAWIO_HOST=${main_domain}
- DRAWIO_BASE_URL=https://${main_domain}
- DRAWIO_SERVER_URL=https://${main_domain}/
mounts: []

View File

@@ -1,28 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const apiDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 5601,
serviceName: "kibana",
},
{
host: apiDomain,
port: 9200,
serviceName: "elasticsearch",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,16 @@
variables:
main_domain: ${randomDomain}
api_domain: ${randomDomain}
config:
domains:
- serviceName: kibana
port: 5601
host: ${main_domain}
- serviceName: elasticsearch
port: 9200
host: ${api_domain}
env: []
mounts: []

View File

@@ -1,39 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const dbRootPassword = generatePassword(32);
const adminPassword = generatePassword(32);
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "frontend",
},
];
const envs = [
`SITE_NAME=${mainDomain}`,
`ADMIN_PASSWORD=${adminPassword}`,
`DB_ROOT_PASSWORD=${dbRootPassword}`,
"MIGRATE=1",
"ENABLE_DB=1",
"DB_HOST=db",
"CREATE_SITE=1",
"CONFIGURE=1",
"REGENERATE_APPS_TXT=1",
"INSTALL_APP_ARGS=--install-app erpnext",
"IMAGE_NAME=docker.io/frappe/erpnext",
"VERSION=version-15",
"FRAPPE_SITE_NAME_HEADER=",
];
return { envs, domains };
}

View File

@@ -0,0 +1,27 @@
variables:
main_domain: ${randomDomain}
db_root_password: ${generatePassword(32)}
admin_password: ${generatePassword(32)}
config:
domains:
- serviceName: frontend
port: 8080
host: ${main_domain}
env:
- SITE_NAME=${main_domain}
- ADMIN_PASSWORD=${admin_password}
- DB_ROOT_PASSWORD=${db_root_password}
- MIGRATE=1
- ENABLE_DB=1
- DB_HOST=db
- CREATE_SITE=1
- CONFIGURE=1
- REGENERATE_APPS_TXT=1
- INSTALL_APP_ARGS=--install-app erpnext
- IMAGE_NAME=docker.io/frappe/erpnext
- VERSION=version-15
- FRAPPE_SITE_NAME_HEADER=
mounts: []

View File

@@ -1,59 +0,0 @@
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,40 @@
variables:
main_domain: ${randomDomain}
api_key: ${generateBase64(64)}
postgres_password: ${generatePassword}
config:
domains:
- serviceName: evolution-api
port: 8080
host: ${main_domain}
env:
- SERVER_URL=https://${main_domain}
- AUTHENTICATION_TYPE=apikey
- AUTHENTICATION_API_KEY=${api_key}
- 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=${postgres_password}
- DATABASE_ENABLED=true
- DATABASE_PROVIDER=postgresql
- DATABASE_CONNECTION_URI=postgres://postgresql:${postgres_password}@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
mounts: []

View File

@@ -1,22 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 80,
serviceName: "excalidraw",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: excalidraw
port: 80
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,24 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "filebrowser",
},
];
const envs = ["FB_BASEURL=/filebrowser"];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: filebrowser
port: 8080
host: ${main_domain}
env:
- FB_BASEURL=/filebrowser
mounts: []

View File

@@ -1,38 +0,0 @@
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

@@ -0,0 +1,20 @@
variables:
main_domain: ${randomDomain}
secret_base: ${generateBase64(64)}
encryption_key: ${generateBase64(48)}
cron_secret: ${generateBase64(32)}
config:
domains:
- serviceName: formbricks
port: 3000
host: ${main_domain}
env:
- WEBAPP_URL=http://${main_domain}
- NEXTAUTH_URL=http://${main_domain}
- NEXTAUTH_SECRET=${secret_base}
- ENCRYPTION_KEY=${encryption_key}
- CRON_SECRET=${cron_secret}
mounts: []

View File

@@ -1,39 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const dbRootPassword = generatePassword(32);
const adminPassword = generatePassword(32);
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "frontend",
},
];
const envs = [
`SITE_NAME=${mainDomain}`,
`ADMIN_PASSWORD=${adminPassword}`,
`DB_ROOT_PASSWORD=${dbRootPassword}`,
"MIGRATE=1",
"ENABLE_DB=1",
"DB_HOST=db",
"CREATE_SITE=1",
"CONFIGURE=1",
"REGENERATE_APPS_TXT=1",
"INSTALL_APP_ARGS=--install-app hrms",
"IMAGE_NAME=ghcr.io/frappe/hrms",
"VERSION=version-15",
"FRAPPE_SITE_NAME_HEADER=",
];
return { envs, domains };
}

View File

@@ -0,0 +1,27 @@
variables:
main_domain: ${randomDomain}
db_root_password: ${generatePassword(32)}
admin_password: ${generatePassword(32)}
config:
domains:
- serviceName: frontend
port: 8080
host: ${main_domain}
env:
- SITE_NAME=${main_domain}
- ADMIN_PASSWORD=${admin_password}
- DB_ROOT_PASSWORD=${db_root_password}
- MIGRATE=1
- ENABLE_DB=1
- DB_HOST=db
- CREATE_SITE=1
- CONFIGURE=1
- REGENERATE_APPS_TXT=1
- INSTALL_APP_ARGS=--install-app hrms
- IMAGE_NAME=ghcr.io/frappe/hrms
- VERSION=version-15
- FRAPPE_SITE_NAME_HEADER=
mounts: []

View File

@@ -1,24 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 2368,
serviceName: "ghost",
},
];
const envs = [`GHOST_HOST=${mainDomain}`];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,13 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: ghost
port: 2368
host: ${main_domain}
env:
- GHOST_HOST=${main_domain}
mounts: []

View File

@@ -1,24 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "gitea",
},
];
const envs = ["USER_UID=1000", "USER_GID=1000"];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,14 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: gitea
port: 3000
host: ${main_domain}
env:
- USER_UID=1000
- USER_GID=1000
mounts: []

View File

@@ -1,108 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8080,
serviceName: "glance",
},
];
const mounts: Template["mounts"] = [
{
filePath: "/app/config/glance.yml",
content: `
branding:
hide-footer: true
logo-text: P
pages:
- name: Home
columns:
- size: small
widgets:
- type: calendar
- type: releases
show-source-icon: true
repositories:
- Dokploy/dokploy
- n8n-io/n8n
- Budibase/budibase
- home-assistant/core
- tidbyt/pixlet
- type: twitch-channels
channels:
- nmplol
- extraemily
- qtcinderella
- ludwig
- timthetatman
- mizkif
- size: full
widgets:
- type: hacker-news
- type: videos
style: grid-cards
channels:
- UC3GzdWYwUYI1ACxuP9Nm-eg
- UCGbg3DjQdcqWwqOLHpYHXIg
- UC24RSoLcjiNZbQcT54j5l7Q
limit: 3
- type: rss
limit: 10
collapse-after: 3
cache: 3h
feeds:
- url: https://daringfireball.net/feeds/main
title: Daring Fireball
- size: small
widgets:
- type: weather
location: Gansevoort, New York, United States
show-area-name: false
units: imperial
hour-format: 12h
- type: markets
markets:
- symbol: SPY
name: S&P 500
- symbol: VOO
name: Vanguard
- symbol: BTC-USD
name: Bitcoin
- symbol: ETH-USD
name: Etherium
- symbol: NVDA
name: NVIDIA
- symbol: AAPL
name: Apple
- symbol: MSFT
name: Microsoft
- symbol: GOOGL
name: Google
- symbol: AMD
name: AMD
- symbol: TSLA
name: Tesla`,
},
];
return {
domains,
mounts,
};
}

View File

@@ -0,0 +1,93 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: glance
port: 8080
host: ${main_domain}
env: []
mounts:
- filePath: /app/config/glance.yml
content: |
branding:
hide-footer: true
logo-text: P
pages:
- name: Home
columns:
- size: small
widgets:
- type: calendar
- type: releases
show-source-icon: true
repositories:
- Dokploy/dokploy
- n8n-io/n8n
- Budibase/budibase
- home-assistant/core
- tidbyt/pixlet
- type: twitch-channels
channels:
- nmplol
- extraemily
- qtcinderella
- ludwig
- timthetatman
- mizkif
- size: full
widgets:
- type: hacker-news
- type: videos
style: grid-cards
channels:
- UC3GzdWYwUYI1ACxuP9Nm-eg
- UCGbg3DjQdcqWwqOLHpYHXIg
- UC24RSoLcjiNZbQcT54j5l7Q
limit: 3
- type: rss
limit: 10
collapse-after: 3
cache: 3h
feeds:
- url: https://daringfireball.net/feeds/main
title: Daring Fireball
- size: small
widgets:
- type: weather
location: Gansevoort, New York, United States
show-area-name: false
units: imperial
hour-format: 12h
- type: markets
markets:
- symbol: SPY
name: S&P 500
- symbol: VOO
name: Vanguard
- symbol: BTC-USD
name: Bitcoin
- symbol: ETH-USD
name: Etherium
- symbol: NVDA
name: NVIDIA
- symbol: AAPL
name: Apple
- symbol: MSFT
name: Microsoft
- symbol: GOOGL
name: Google
- symbol: AMD
name: AMD
- symbol: TSLA
name: Tesla

View File

@@ -1,30 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretKey = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8000,
serviceName: "web",
},
];
const envs = [
`GLITCHTIP_HOST=${mainDomain}`,
"GLITCHTIP_PORT=8000",
`SECRET_KEY=${secretKey}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,16 @@
variables:
main_domain: ${randomDomain}
secret_key: ${generateBase64(32)}
config:
domains:
- serviceName: web
port: 8000
host: ${main_domain}
env:
- GLITCHTIP_HOST=${main_domain}
- GLITCHTIP_PORT=8000
- SECRET_KEY=${secret_key}
mounts: []

View File

@@ -1,20 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const randomDomain = generateRandomDomain(schema);
const domains: DomainSchema[] = [
{
host: randomDomain,
port: 80,
serviceName: "glpi-web",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: glpi-web
port: 80
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,29 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const username = "gotenberg";
const password = "changethis";
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 3000,
serviceName: "gotenberg",
},
];
const envs = [
`GOTENBERG_API_BASIC_AUTH_USERNAME=${username}`,
`GOTENBERG_API_BASIC_AUTH_PASSWORD=${password}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,16 @@
variables:
main_domain: ${randomDomain}
username: gotenberg
password: changethis
config:
domains:
- serviceName: gotenberg
port: 3000
host: ${main_domain}
env:
- GOTENBERG_API_BASIC_AUTH_USERNAME=${username}
- GOTENBERG_API_BASIC_AUTH_PASSWORD=${password}
mounts: []

View File

@@ -1,19 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 3000,
serviceName: "grafana",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: grafana
port: 3000
host: ${main_domain}
env: []
mounts: []

View File

@@ -1,32 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const sessionKey = generateBase64(64);
const formEncryptionKey = generateBase64(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 8000,
serviceName: "heyform",
},
];
const envs = [
`APP_HOMEPAGE_URL=http://${mainDomain}`,
`SESSION_KEY=${sessionKey}`,
`FORM_ENCRYPTION_KEY=${formEncryptionKey}`,
];
return {
envs,
domains,
};
}

View File

@@ -0,0 +1,17 @@
variables:
main_domain: ${randomDomain}
session_key: ${generateBase64(64)}
form_encryption_key: ${generateBase64(64)}
config:
domains:
- serviceName: heyform
port: 8000
host: ${main_domain}
env:
- APP_HOMEPAGE_URL=http://${main_domain}
- SESSION_KEY=${session_key}
- FORM_ENCRYPTION_KEY=${form_encryption_key}
mounts: []

View File

@@ -1,41 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 80,
serviceName: "all-in-one",
},
];
const envs = [
"# change domain here",
"DOMAIN=my-events.com",
"",
"POSTGRES_DB=hievents",
"POSTGRES_USER=hievents",
"POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
"",
"VITE_STRIPE_PUBLISHABLE_KEY=",
"",
"APP_KEY=my-app-key",
"JWT_SECRET=STRONG_JWT_SECRET",
"",
"MAIL_MAILER=",
"MAIL_HOST=",
"MAIL_PORT=",
"MAIL_FROM_ADDRESS=",
"MAIL_FROM_NAME=",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,27 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
jwt_secret: ${generatePassword}
app_key: ${generatePassword}
config:
domains:
- serviceName: all-in-one
port: 80
host: ${main_domain}
env:
- DOMAIN=${main_domain}
- POSTGRES_DB=hievents
- POSTGRES_USER=hievents
- POSTGRES_PASSWORD=${postgres_password}
- VITE_STRIPE_PUBLISHABLE_KEY=
- APP_KEY=${app_key}
- JWT_SECRET=${jwt_secret}
- MAIL_MAILER=
- MAIL_HOST=
- MAIL_PORT=
- MAIL_FROM_ADDRESS=
- MAIL_FROM_NAME=
mounts: []

View File

@@ -1,34 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const postgresPassword = generatePassword();
const nextSecret = generateBase64(32);
const meiliMasterKey = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 3000,
serviceName: "web",
},
];
const envs = [
`NEXTAUTH_SECRET=${nextSecret}`,
`MEILI_MASTER_KEY=${meiliMasterKey}`,
`NEXTAUTH_URL=http://${mainDomain}`,
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,18 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
next_secret: ${generateBase64(32)}
meili_master_key: ${generateBase64(32)}
config:
domains:
- serviceName: web
port: 3000
host: ${main_domain}
env:
- NEXTAUTH_SECRET=${next_secret}
- MEILI_MASTER_KEY=${meili_master_key}
- NEXTAUTH_URL=http://${main_domain}
mounts: []

View File

@@ -1,27 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const secretKey = generatePassword(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 7575,
serviceName: "homarr",
},
];
const envs = [`SECRET_ENCRYPTION_KEY=${secretKey}`];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,14 @@
variables:
main_domain: ${randomDomain}
secret_key: ${generatePassword(64)}
config:
domains:
- serviceName: homarr
port: 7575
host: ${main_domain}
env:
- SECRET_ENCRYPTION_KEY=${secret_key}
mounts: []

View File

@@ -1,152 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const hulySecret = generateBase64(64);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 80,
serviceName: "nginx",
},
];
const envs = [
"HULY_VERSION=v0.6.377",
"DOCKER_NAME=huly",
"",
"# The address of the host or server from which you will access your Huly instance.",
"# This can be a domain name (e.g., huly.example.com) or an IP address (e.g., 192.168.1.1).",
`HOST_ADDRESS=${mainDomain}`,
"",
"# Set this variable to 'true' to enable SSL (HTTPS/WSS). ",
"# Leave it empty to use non-SSL (HTTP/WS).",
"SECURE=",
"",
"# Specify the IP address to bind to; leave blank to bind to all interfaces (0.0.0.0).",
"# Do not use IP:PORT format in HTTP_BIND or HTTP_PORT.",
"HTTP_PORT=80",
"HTTP_BIND=",
"",
"# Huly specific variables",
"TITLE=Huly",
"DEFAULT_LANGUAGE=en",
"LAST_NAME_FIRST=true",
"",
"# The following configs are auto-generated by the setup script. ",
"# Please do not manually overwrite.",
"",
"# Run with --secret to regenerate.",
`SECRET=${hulySecret}`,
];
const mounts: Template["mounts"] = [
{
filePath: "/volumes/nginx/.huly.nginx",
content: `server {
listen 80;
server_name _;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://front:8080;
}
location /_accounts {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_accounts(/.*)$ $1 break;
proxy_pass http://account:3000/;
}
#location /_love {
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# rewrite ^/_love(/.*)$ $1 break;
# proxy_pass http://love:8096/;
#}
location /_collaborator {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite ^/_collaborator(/.*)$ $1 break;
proxy_pass http://collaborator:3078/;
}
location /_transactor {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite ^/_transactor(/.*)$ $1 break;
proxy_pass http://transactor:3333/;
}
location ~ ^/eyJ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://transactor:3333;
}
location /_rekoni {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_rekoni(/.*)$ $1 break;
proxy_pass http://rekoni:4004/;
}
location /_stats {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_stats(/.*)$ $1 break;
proxy_pass http://stats:4900/;
}
}`,
},
];
return {
domains,
envs,
mounts,
};
}

View File

@@ -0,0 +1,104 @@
variables:
main_domain: ${randomDomain}
huly_secret: ${generateBase64(64)}
config:
domains:
- serviceName: nginx
port: 80
host: ${main_domain}
env:
- HULY_VERSION=v0.6.377
- DOCKER_NAME=huly
- HOST_ADDRESS=${main_domain}
- SECURE=
- HTTP_PORT=80
- HTTP_BIND=
- TITLE=Huly
- DEFAULT_LANGUAGE=en
- LAST_NAME_FIRST=true
- SECRET=${huly_secret}
mounts:
- filePath: /volumes/nginx/.huly.nginx
content: |
server {
listen 80;
server_name _;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://front:8080;
}
location /_accounts {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_accounts(/.*)$ $1 break;
proxy_pass http://account:3000/;
}
location /_collaborator {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite ^/_collaborator(/.*)$ $1 break;
proxy_pass http://collaborator:3078/;
}
location /_transactor {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
rewrite ^/_transactor(/.*)$ $1 break;
proxy_pass http://transactor:3333/;
}
location ~ ^/eyJ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://transactor:3333;
}
location /_rekoni {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_rekoni(/.*)$ $1 break;
proxy_pass http://rekoni:4004/;
}
location /_stats {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/_stats(/.*)$ $1 break;
proxy_pass http://stats:4900/;
}
}

View File

@@ -1,46 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateBase64,
generatePassword,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const mainDomain = generateRandomDomain(schema);
const dbPassword = generatePassword();
const dbUser = "immich";
const _appSecret = generateBase64(32);
const domains: DomainSchema[] = [
{
host: mainDomain,
port: 2283,
serviceName: "immich-server",
},
];
const envs = [
`IMMICH_HOST=${mainDomain}`,
`SERVER_URL=https://${mainDomain}`,
`FRONT_BASE_URL=https://${mainDomain}`,
"# Database Configuration",
"DB_HOSTNAME=immich-database",
"DB_PORT=5432",
`DB_USERNAME=${dbUser}`,
`DB_PASSWORD=${dbPassword}`,
"DB_DATABASE_NAME=immich",
"# Redis Configuration",
"REDIS_HOSTNAME=immich-redis",
"REDIS_PORT=6379",
"REDIS_DBINDEX=0",
"# Server Configuration",
"TZ=UTC",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,26 @@
variables:
main_domain: ${randomDomain}
db_password: ${generatePassword}
db_user: immich
config:
domains:
- serviceName: immich-server
port: 2283
host: ${main_domain}
env:
- IMMICH_HOST=${main_domain}
- SERVER_URL=https://${main_domain}
- FRONT_BASE_URL=https://${main_domain}
- DB_HOSTNAME=immich-database
- DB_PORT=5432
- DB_USERNAME=${db_user}
- DB_PASSWORD=${db_password}
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich-redis
- REDIS_PORT=6379
- REDIS_DBINDEX=0
- TZ=UTC
mounts: []

View File

@@ -1,93 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 8080,
serviceName: "backend",
},
];
const envs = [
"# THIS IS A SAMPLE ENCRYPTION KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
"ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218",
"",
"# THIS IS A SAMPLE AUTH_SECRET KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
"AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE=",
"# Postgres creds",
"POSTGRES_PASSWORD=infisical",
"POSTGRES_USER=infisical",
"POSTGRES_DB=infisical",
"",
"# Website URL",
"# Required",
"SITE_URL=http://localhost:8080",
"",
"# Mail/SMTP",
"SMTP_HOST=",
"SMTP_PORT=",
"SMTP_NAME=",
"SMTP_USERNAME=",
"SMTP_PASSWORD=",
"",
"# Integration",
"# Optional only if integration is used",
"CLIENT_ID_HEROKU=",
"CLIENT_ID_VERCEL=",
"CLIENT_ID_NETLIFY=",
"CLIENT_ID_GITHUB=",
"CLIENT_ID_GITHUB_APP=",
"CLIENT_SLUG_GITHUB_APP=",
"CLIENT_ID_GITLAB=",
"CLIENT_ID_BITBUCKET=",
"CLIENT_SECRET_HEROKU=",
"CLIENT_SECRET_VERCEL=",
"CLIENT_SECRET_NETLIFY=",
"CLIENT_SECRET_GITHUB=",
"CLIENT_SECRET_GITHUB_APP=",
"CLIENT_SECRET_GITLAB=",
"CLIENT_SECRET_BITBUCKET=",
"CLIENT_SLUG_VERCEL=",
"",
"CLIENT_PRIVATE_KEY_GITHUB_APP=",
"CLIENT_APP_ID_GITHUB_APP=",
"",
"# Sentry (optional) for monitoring errors",
"SENTRY_DSN=",
"",
"# Infisical Cloud-specific configs",
"# Ignore - Not applicable for self-hosted version",
"POSTHOG_HOST=",
"POSTHOG_PROJECT_API_KEY=",
"",
"# SSO-specific variables",
"CLIENT_ID_GOOGLE_LOGIN=",
"CLIENT_SECRET_GOOGLE_LOGIN=",
"",
"CLIENT_ID_GITHUB_LOGIN=",
"CLIENT_SECRET_GITHUB_LOGIN=",
"",
"CLIENT_ID_GITLAB_LOGIN=",
"CLIENT_SECRET_GITLAB_LOGIN=",
"",
"CAPTCHA_SECRET=",
"",
"NEXT_PUBLIC_CAPTCHA_SITE_KEY=",
"",
"PLAIN_API_KEY=",
"PLAIN_WISH_LABEL_IDS=",
"",
"SSL_CLIENT_CERTIFICATE_HEADER_KEY=",
];
return {
domains,
envs,
};
}

View File

@@ -0,0 +1,58 @@
variables:
main_domain: ${randomDomain}
postgres_password: ${generatePassword}
postgres_user: infisical
postgres_db: infisical
config:
domains:
- serviceName: backend
port: 8080
host: ${main_domain}
env:
- ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218 # Sample key, not for production
- AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE= # Sample key, not for production
- POSTGRES_PASSWORD=${postgres_password}
- POSTGRES_USER=${postgres_user}
- POSTGRES_DB=${postgres_db}
- SITE_URL=http://${main_domain}:8080
- SMTP_HOST=
- SMTP_PORT=
- SMTP_NAME=
- SMTP_USERNAME=
- SMTP_PASSWORD=
- CLIENT_ID_HEROKU=
- CLIENT_ID_VERCEL=
- CLIENT_ID_NETLIFY=
- CLIENT_ID_GITHUB=
- CLIENT_ID_GITHUB_APP=
- CLIENT_SLUG_GITHUB_APP=
- CLIENT_ID_GITLAB=
- CLIENT_ID_BITBUCKET=
- CLIENT_SECRET_HEROKU=
- CLIENT_SECRET_VERCEL=
- CLIENT_SECRET_NETLIFY=
- CLIENT_SECRET_GITHUB=
- CLIENT_SECRET_GITHUB_APP=
- CLIENT_SECRET_GITLAB=
- CLIENT_SECRET_BITBUCKET=
- CLIENT_SLUG_VERCEL=
- CLIENT_PRIVATE_KEY_GITHUB_APP=
- CLIENT_APP_ID_GITHUB_APP=
- SENTRY_DSN=
- POSTHOG_HOST=
- POSTHOG_PROJECT_API_KEY=
- CLIENT_ID_GOOGLE_LOGIN=
- CLIENT_SECRET_GOOGLE_LOGIN=
- CLIENT_ID_GITHUB_LOGIN=
- CLIENT_SECRET_GITHUB_LOGIN=
- CLIENT_ID_GITLAB_LOGIN=
- CLIENT_SECRET_GITLAB_LOGIN=
- CAPTCHA_SECRET=
- NEXT_PUBLIC_CAPTCHA_SITE_KEY=
- PLAIN_API_KEY=
- PLAIN_WISH_LABEL_IDS=
- SSL_CLIENT_CERTIFICATE_HEADER_KEY=
mounts: []

View File

@@ -1,19 +0,0 @@
import {
type DomainSchema,
type Schema,
type Template,
generateRandomDomain,
} from "../utils";
export function generate(schema: Schema): Template {
const domains: DomainSchema[] = [
{
host: generateRandomDomain(schema),
port: 8086,
serviceName: "influxdb",
},
];
return {
domains,
};
}

View File

@@ -0,0 +1,12 @@
variables:
main_domain: ${randomDomain}
config:
domains:
- serviceName: influxdb
port: 8086
host: ${main_domain}
env: {}
mounts: []

Some files were not shown because too many files have changed in this diff Show More