lasthourcloud/apps/api/src/lib/templates.ts

609 lines
23 KiB
TypeScript
Raw Normal View History

2022-10-14 15:48:37 +02:00
export default [
2022-10-18 15:01:18 +02:00
{
"templateVersion": "1.0.0",
"serviceDefaultVersion": "php8.1",
"name": "wordpress",
"displayName": "WordPress",
"description": "WordPress is a content management system based on PHP.",
"services": {
"$$id": {
"name": "WordPress",
"documentation": " Taken from https://docs.docker.com/compose/wordpress/",
"depends_on": [
"$$id_mysql"
],
"image": "wordpress:$$core_version",
"volumes": [
"$$id-wordpress-data:/var/www/html",
],
"environment": [
"WORDPRESS_DB_HOST=$$config_wordpress_db_host",
"WORDPRESS_DB_USER=$$config_wordpress_db_user",
"WORDPRESS_DB_PASSWORD=$$secret_wordpress_db_password",
"WORDPRESS_DB_NAME=$$config_wordpress_db_name",
"WORDPRESS_CONFIG_EXTRA=$$config_wordpress_config_extra"
],
"ports": [
"80"
]
},
"$$id-mysql": {
"name": "MySQL",
"depends_on": [],
"image": "mysql:5.7",
"volumes": [
"$$id-mysql-data:/var/lib/mysql",
],
"environment": [
"MYSQL_ROOT_PASSWORD=$$secret_mysql_root_password",
"MYSQL_ROOT_USER=$$config_mysql_root_user",
"MYSQL_DATABASE=$$config_mysql_database",
"MYSQL_USER=$$config_mysql_user",
"MYSQL_PASSWORD=$$secret_mysql_password",
],
"ports": []
}
},
"variables": [
{
"id": "$$config_wordpress_db_host",
"name": "WORDPRESS_DB_HOST",
"label": "WordPress DB Host",
"defaultValue": "$$id-mysql",
"description": ""
},
{
"id": "$$config_wordpress_db_user",
"name": "WORDPRESS_DB_USER",
"label": "WordPress DB User",
"defaultValue": "$$config_mysql_user",
"description": ""
},
{
"id": "$$secret_wordpress_db_password",
"name": "WORDPRESS_DB_PASSWORD",
"label": "WordPress DB Password",
"defaultValue": "$$secret_mysql_password",
"description": ""
},
{
"id": "$$config_wordpress_db_name",
"name": "WORDPRESS_DB_NAME",
"label": "WordPress DB Name",
"defaultValue": "$$config_mysql_database",
"description": ""
},
{
"id": "$$config_wordpress_config_extra",
"name": "WORDPRESS_CONFIG_EXTRA",
"label": "WordPress Config Extra",
"defaultValue": "",
"description": ""
},
{
"id": "$$secret_mysql_root_password",
"name": "MYSQL_ROOT_PASSWORD",
"label": "MySQL Root Password",
"defaultValue": "$$generate_password",
"description": ""
},
{
"id": "$$config_mysql_root_user",
"name": "MYSQL_ROOT_USER",
"label": "MySQL Root User",
"defaultValue": "$$generate_username",
"description": ""
},
{
"id": "$$config_mysql_database",
"name": "MYSQL_DATABASE",
"label": "MySQL Database",
"defaultValue": "wordpress",
"description": ""
},
{
"id": "$$config_mysql_user",
"name": "MYSQL_USER",
"label": "MySQL User",
"defaultValue": "$$generate_username",
"description": ""
},
{
"id": "$$secret_mysql_password",
"name": "MYSQL_PASSWORD",
"label": "MySQL Password",
"defaultValue": "$$generate_password",
"description": ""
}
]
},
2022-10-18 14:34:10 +02:00
{
"templateVersion": "1.0.0",
"serviceDefaultVersion": "4.7.1",
2022-10-18 14:45:30 +02:00
"name": "vscodeserver",
"displayName": "VSCode Server",
"description": "vscode-server by Coder is VS Code running on a remote server, accessible through the browser.",
2022-10-18 14:34:10 +02:00
"services": {
"$$id": {
2022-10-18 14:45:30 +02:00
"name": "VSCode Server",
2022-10-18 14:34:10 +02:00
"documentation": "Taken from https://github.com/coder/code-server/. ",
"depends_on": [],
"image": "codercom/code-server:$$core_version",
"volumes": [
"$$id-config-data:/home/coder/.local/share/code-server",
"$$id-vscodeserver-data:/home/coder",
"$$id-keys-directory:/root/.ssh",
"$$id-theme-and-plugin-directory:/root/.local/share/code-server"
],
"environment": [
"PASSWORD=$$secret_password",
],
"ports": [
"8080"
]
}
},
"variables": [
{
"id": "$$secret_password",
"name": "PASSWORD",
"label": "Password",
"defaultValue": "$$generate_password",
2022-10-18 14:45:30 +02:00
"description": "",
"extras": {
"isVisibleOnUI": true,
}
2022-10-18 14:34:10 +02:00
}
]
},
2022-10-18 13:52:47 +02:00
{
"templateVersion": "1.0.0",
2022-10-18 14:12:33 +02:00
"serviceDefaultVersion": "RELEASE.2022-10-15T19-57-03Z",
"name": "minio",
"displayName": "MinIO",
"description": " MinIO is a cloud storage server compatible with Amazon S3",
"services": {
"$$id": {
"name": "MinIO",
"command": "server /data --console-address :9001",
"documentation": "Taken from https://docs.min.io/docs/minio-docker-quickstart-guide.html",
"depends_on": [],
"image": "minio/minio:$$core_version",
"volumes": [
"$$id-data-write:/files",
],
"environment": [
"MINIO_SERVER_URL=$$config_minio_server_url",
"MINIO_BROWSER_REDIRECT_URL=$$config_minio_browser_redirect_url",
"MINIO_DOMAIN=$$config_minio_domain",
"MINIO_ROOT_USER=$$config_minio_root_user",
2022-10-18 14:34:10 +02:00
"MINIO_ROOT_PASSWORD=$$secret_minio_root_user_password"
2022-10-18 14:12:33 +02:00
],
"ports": [
"9001",
"9000"
]
}
},
"variables": [
{
"id": "$$config_server_url",
"name": "MINIO_SERVER_URL",
2022-10-18 14:34:10 +02:00
"label": "Server/Console URL",
2022-10-18 14:12:33 +02:00
"defaultValue": "",
"description": "",
2022-10-18 14:34:10 +02:00
"extras": {
"required": true
}
2022-10-18 14:12:33 +02:00
},
{
"id": "$$config_browser_redirect_url",
"name": "MINIO_BROWSER_REDIRECT_URL",
"label": "Browser Redirect URL",
"defaultValue": "$$generate_fqdn",
"description": "",
},
{
"id": "$$config_minio_domain",
"name": "MINIO_DOMAIN",
"label": "Domain",
"defaultValue": "$$generate_domain",
"description": "",
},
{
"id": "$$config_minio_root_user",
"name": "MINIO_ROOT_USER",
"label": "Root User",
"defaultValue": "$$generate_username",
"description": "",
},
{
"id": "$$secret_minio_root_user_password",
"name": "MINIO_ROOT_PASSWORD",
"label": "Root User Password",
"defaultValue": "$$generate_password",
"description": "",
2022-10-18 14:34:10 +02:00
}
2022-10-18 14:12:33 +02:00
]
},
{
"templateVersion": "1.0.0",
2022-10-18 13:52:47 +02:00
"serviceDefaultVersion": "0.21.1",
"name": "fider",
"displayName": "Fider",
"description": "Fider is a platform to collect and organize customer feedback.",
"services": {
"$$id": {
"name": "Fider",
"image": "getfider/fider:$$core_version",
"documentation": "Taken from https://hub.docker.com/r/getfider/fider/",
"depends_on": [
'$$id-postgresql'
],
"environment": [
"BASE_URL=$$config_base_url",
"JWT_SECRET=$$secret_jwt_secret",
"EMAIL_NOREPLY=$$config_email_noreply",
"EMAIL_MAILGUN_API_KEY=$$secret_email_mailgun_api_key",
"EMAIL_MAILGUN_REGION=$$config_email_mailgun_region",
"EMAIL_MAILGUN_DOMAIN=$$config_email_mailgun_domain",
"EMAIL_SMTP_HOST=$$config_email_smtp_host",
"EMAIL_SMTP_PORT=$$config_email_smtp_port",
"EMAIL_SMTP_USER=$$config_email_smtp_user",
"EMAIL_SMTP_PASSWORD=$$secret_email_smtp_password",
"EMAIL_SMTP_ENABLE_STARTTLS=$$config_email_smtp_enable_starttls",
],
"ports": [
"3000"
]
},
"$$id-postgresql": {
"name": "PostgreSQL",
"documentation": "Taken from https://hub.docker.com/r/getfider/fider/",
"depends_on": [],
"image": "postgres:12-alpine",
"volumes": [
"$$id-postgresql-data:/var/lib/postgresql/data"
],
"environment": [
"POSTGRES_USER=$$config_postgres_user",
"POSTGRES_PASSWORD=$$secret_postgres_password",
"POSTGRES_DB=$$config_postgres_db",
]
}
},
"variables": [
{
"id": "$$config_base_url",
"name": "BASE_URL",
"label": "Base URL",
"defaultValue": "$$generate_fqdn",
"description": "",
},
{
"id": "$$secret_database_url",
"name": "DATABASE_URL",
"label": "Database URL for PostgreSQL",
"defaultValue": "postgresql://$$config_postgres_user:$$secret_postgres_password@$$id-postgresql:5432/$$config_postgres_db",
"description": "",
},
{
"id": "$$secret_jwt_secret",
"name": "JWT_SECRET",
"label": "JWT Secret",
"defaultValue": "$$generate_passphrase",
"description": "",
},
{
"id": "$$config_email_noreply",
"name": "EMAIL_NOREPLY",
"label": "No Reply Email Address",
"defaultValue": "noreply@example.com",
"description": "",
},
{
"id": "$$secret_email_mailgun_api_key",
"name": "EMAIL_MAILGUN_API_KEY",
"label": "Mailgun API Key",
"defaultValue": "",
"description": "",
},
{
"id": "$$config_email_mailgun_region",
"name": "EMAIL_MAILGUN_REGION",
"label": "Mailgun Region",
"defaultValue": "EU",
"description": "",
},
{
"id": "$$config_email_mailgun_domain",
"name": "EMAIL_MAILGUN_DOMAIN",
"label": "Mailgun Domain",
"defaultValue": "",
"description": "",
},
{
"id": "$$config_email_smtp_host",
"name": "EMAIL_SMTP_HOST",
"label": "SMTP Host",
"defaultValue": "",
"description": "",
},
{
"id": "$$config_email_smtp_port",
"name": "EMAIL_SMTP_PORT",
"label": "SMTP Port",
"defaultValue": "587",
"description": "",
},
{
"id": "$$config_email_smtp_user",
"name": "EMAIL_SMTP_USER",
"label": "SMTP User",
"defaultValue": "",
"description": "",
},
{
"id": "$$secret_email_smtp_password",
"name": "EMAIL_SMTP_PASSWORD",
"label": "SMTP Password",
"defaultValue": "",
"description": "",
},
{
"id": "$$config_email_smtp_enable_starttls",
"name": "EMAIL_SMTP_ENABLE_STARTTLS",
"label": "SMTP Enable StartTLS",
"defaultValue": "false",
"description": "",
},
{
"id": "$$config_postgres_user",
"name": "POSTGRES_USER",
"label": "PostgreSQL User",
"defaultValue": "$$generate_username",
"description": "",
},
{
"id": "$$secret_postgres_password",
"name": "POSTGRES_PASSWORD",
"label": "PostgreSQL Password",
"defaultValue": "$$generate_password",
"description": "",
},
{
"id": "$$config_postgres_db",
"name": "POSTGRES_DB",
"label": "PostgreSQL Database",
"defaultValue": "$$generate_username",
"description": "",
},
]
},
2022-10-14 15:48:37 +02:00
{
"templateVersion": "1.0.0",
"serviceDefaultVersion": "0.198.1",
"name": "n8n",
"displayName": "n8n.io",
"description": "n8n is a free and open node based Workflow Automation Tool.",
"services": {
"$$id": {
2022-10-17 15:43:57 +02:00
"name": "N8n",
2022-10-14 15:48:37 +02:00
"documentation": "Taken from https://hub.docker.com/r/n8nio/n8n",
"depends_on": [],
"image": "n8nio/n8n:$$core_version",
"volumes": [
"$$id-data:/root/.n8n",
"$$id-data-write:/files",
"/var/run/docker.sock:/var/run/docker.sock"
],
"environment": [
2022-10-17 15:43:57 +02:00
"WEBHOOK_URL=$$config_webhook_url"
2022-10-14 15:48:37 +02:00
],
"ports": [
"5678"
]
}
},
2022-10-17 15:43:57 +02:00
"variables": [
{
"id": "$$config_webhook_url",
"name": "WEBHOOK_URL",
"label": "Webhook URL",
"defaultValue": "$$generate_fqdn",
"description": "",
}]
2022-10-14 15:48:37 +02:00
},
{
"templateVersion": "1.0.0",
"serviceDefaultVersion": "stable",
"name": "plausibleanalytics",
"displayName": "PlausibleAnalytics",
"description": "Plausible is a lightweight and open-source website analytics tool.",
"services": {
"$$id": {
2022-10-17 15:43:57 +02:00
"name": "Plausible Analytics",
2022-10-14 15:48:37 +02:00
"documentation": "Taken from https://plausible.io/",
2022-10-18 11:32:38 +02:00
"command": 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"',
2022-10-14 15:48:37 +02:00
"depends_on": [
"$$id-postgresql",
"$$id-clickhouse"
],
"image": "plausible/analytics:$$core_version",
"environment": [
2022-10-17 15:43:57 +02:00
"ADMIN_USER_EMAIL=$$config_admin_user_email",
"ADMIN_USER_NAME=$$config_admin_user_name",
2022-10-18 11:32:38 +02:00
"ADMIN_USER_PWD=$$secret_admin_user_pwd",
2022-10-17 15:43:57 +02:00
"BASE_URL=$$config_base_url",
"SECRET_KEY_BASE=$$secret_secret_key_base",
"DISABLE_AUTH=$$config_disable_auth",
"DISABLE_REGISTRATION=$$config_disable_registration",
"DATABASE_URL=$$secret_database_url",
"CLICKHOUSE_DATABASE_URL=$$secret_clickhouse_database_url",
2022-10-14 15:48:37 +02:00
],
"ports": [
"8000"
],
},
"$$id-postgresql": {
2022-10-17 15:43:57 +02:00
"name": "PostgreSQL",
2022-10-14 15:48:37 +02:00
"documentation": "Taken from https://plausible.io/",
"image": "bitnami/postgresql:13.2.0",
2022-10-18 11:32:38 +02:00
"volumes": [
2022-10-18 12:02:09 +02:00
'$$id-postgresql-data:/bitnami/postgresql',
2022-10-18 11:32:38 +02:00
],
2022-10-14 15:48:37 +02:00
"environment": [
"POSTGRESQL_PASSWORD=$$secret_postgresql_password",
2022-10-17 15:43:57 +02:00
"POSTGRESQL_USERNAME=$$config_postgresql_username",
"POSTGRESQL_DATABASE=$$config_postgresql_database",
2022-10-14 15:48:37 +02:00
],
},
"$$id-clickhouse": {
2022-10-17 15:43:57 +02:00
"name": "Clickhouse",
2022-10-14 15:48:37 +02:00
"documentation": "Taken from https://plausible.io/",
2022-10-18 11:32:38 +02:00
"build": {
context: "$$workdir",
dockerfile: "Dockerfile.$$id-clickhouse"
},
"volumes": [
'$$id-clickhouse-data:/var/lib/clickhouse',
],
2022-10-14 15:48:37 +02:00
"image": "yandex/clickhouse-server:21.3.2.5",
"ulimits": {
"nofile": {
"soft": 262144,
"hard": 262144
}
},
"extras": {
2022-10-18 11:32:38 +02:00
"files": [
2022-10-14 15:48:37 +02:00
{
2022-10-18 11:32:38 +02:00
source: "$$workdir/clickhouse-config.xml",
destination: '/etc/clickhouse-server/users.d/logging.xml',
2022-10-14 15:48:37 +02:00
content: '<yandex><logger><level>warning</level><console>true</console></logger><query_thread_log remove="remove"/><query_log remove="remove"/><text_log remove="remove"/><trace_log remove="remove"/><metric_log remove="remove"/><asynchronous_metric_log remove="remove"/><session_log remove="remove"/><part_log remove="remove"/></yandex>'
},
{
2022-10-18 11:32:38 +02:00
source: "$$workdir/clickhouse-user-config.xml",
destination: '/etc/clickhouse-server/config.d/logging.xml',
2022-10-14 15:48:37 +02:00
content: '<yandex><profiles><default><log_queries>0</log_queries><log_query_threads>0</log_query_threads></default></profiles></yandex>'
},
{
2022-10-18 11:32:38 +02:00
source: "$$workdir/init.query",
destination: '/docker-entrypoint-initdb.d/init.query',
2022-10-14 15:48:37 +02:00
content: 'CREATE DATABASE IF NOT EXISTS plausible;'
},
{
2022-10-18 11:32:38 +02:00
source: "$$workdir/init-db.sh",
destination: '/docker-entrypoint-initdb.d/init-db.sh',
2022-10-14 15:48:37 +02:00
content: 'clickhouse client --queries-file /docker-entrypoint-initdb.d/init.query'
}
]
}
},
},
"variables": [
{
2022-10-17 15:43:57 +02:00
"id": "$$config_base_url",
"name": "BASE_URL",
"label": "Base URL",
"defaultValue": "$$generate_fqdn",
"description": "You must set this to the FQDN of the Plausible Analytics instance. This is used to generate the links to the Plausible Analytics instance.",
},
{
"id": "$$secret_database_url",
"name": "DATABASE_URL",
"label": "Database URL for PostgreSQL",
"defaultValue": "postgresql://$$config_postgresql_username:$$secret_postgresql_password@$$id-postgresql:5432/$$config_postgresql_database",
"description": "",
},
{
"id": "$$secret_clickhouse_database_url",
"name": "CLICKHOUSE_DATABASE_URL",
"label": "Database URL for Clickhouse",
"defaultValue": "http://$$id-clickhouse:8123/plausible",
"description": "",
},
{
"id": "$$config_admin_user_email",
"name": "ADMIN_USER_EMAIL",
"label": "Admin Email Address",
2022-10-14 15:48:37 +02:00
"defaultValue": "admin@example.com",
"description": "This is the admin email. Please change it.",
},
{
2022-10-17 15:43:57 +02:00
"id": "$$config_admin_user_name",
"name": "ADMIN_USER_NAME",
"label": "Admin User Name",
2022-10-14 15:54:19 +02:00
"defaultValue": "$$generate_username",
2022-10-14 15:48:37 +02:00
"description": "This is the admin username. Please change it.",
},
{
2022-10-18 11:32:38 +02:00
"id": "$$secret_admin_user_pwd",
"name": "ADMIN_USER_PWD",
2022-10-17 15:43:57 +02:00
"label": "Admin User Password",
"defaultValue": "$$generate_password",
2022-10-14 15:48:37 +02:00
"description": "This is the admin password. Please change it.",
2022-10-18 11:32:38 +02:00
"extras": {
"isVisibleOnUI": true
}
2022-10-14 15:48:37 +02:00
},
{
"id": "$$secret_secret_key_base",
2022-10-17 15:43:57 +02:00
"name": "SECRET_KEY_BASE",
2022-10-14 15:48:37 +02:00
"label": "Secret Key Base",
2022-10-17 15:43:57 +02:00
"defaultValue": "$$generate_passphrase",
2022-10-14 15:48:37 +02:00
"description": "",
2022-10-18 11:32:38 +02:00
"extras": {
"length": 64
2022-10-17 14:55:28 +00:00
}
2022-10-14 15:48:37 +02:00
},
{
2022-10-17 15:43:57 +02:00
"id": "$$config_disable_auth",
"name": "DISABLE_AUTH",
"label": "Disable Authentication",
2022-10-14 15:48:37 +02:00
"defaultValue": "false",
"description": "",
},
{
2022-10-17 15:43:57 +02:00
"id": "$$config_disable_registration",
"name": "DISABLE_REGISTRATION",
2022-10-14 15:48:37 +02:00
"label": "Disable Registration",
"defaultValue": "true",
"description": "",
},
{
2022-10-17 15:43:57 +02:00
"id": "$$config_postgresql_username",
"name": "POSTGRESQL_USERNAME",
2022-10-14 15:48:37 +02:00
"label": "PostgreSQL Username",
"defaultValue": "postgresql",
"description": "",
},
{
"id": "$$secret_postgresql_password",
2022-10-17 15:43:57 +02:00
"name": "POSTGRESQL_PASSWORD",
2022-10-14 15:48:37 +02:00
"label": "PostgreSQL Password",
2022-10-14 15:54:19 +02:00
"defaultValue": "$$generate_password",
2022-10-14 15:48:37 +02:00
"description": "",
}
,
{
2022-10-17 15:43:57 +02:00
"id": "$$config_postgresql_database",
"name": "POSTGRESQL_DATABASE",
2022-10-14 15:48:37 +02:00
"label": "PostgreSQL Database",
"defaultValue": "plausible",
"description": "",
2022-10-17 15:43:57 +02:00
},
{
"id": "$$config_scriptName",
"name": "SCRIPT_NAME",
"label": "Custom Script Name",
"defaultValue": "plausible.js",
"description": "This is the default script name.",
},
2022-10-14 15:48:37 +02:00
]
}
]