export default [ { "templateVersion": "1.0.0", "defaultVersion": "latest", "name": "weblate", "displayName": "Weblate", "description": "", "services": { "$$id": { "name": "Weblate", "depends_on": [ "$$id-postgresql", "$$id-redis" ], "image": "weblate/weblate:$$core_version", "volumes": [ "$$id-data:/app/data", ], "environment": [ `WEBLATE_SITE_DOMAIN=$$config_weblate_site_domain`, `WEBLATE_ADMIN_PASSWORD=$$secret_weblate_admin_password`, `POSTGRES_PASSWORD=$$secret_postgres_password`, `POSTGRES_USER=$$config_postgres_user`, `POSTGRES_DATABASE=$$config_postgres_db`, `POSTGRES_HOST=$$id-postgresql`, `POSTGRES_PORT=5432`, `REDIS_HOST=$$id-redis`, ], "ports": [ "8080" ] }, "$$id-postgresql": { "name": "PostgreSQL", "depends_on": [], "image": "postgres:14-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", ], "ports": [] }, "$$id-redis": { "name": "Redis", "depends_on": [], "image": "redis:7-alpine", "volumes": [ "$$id-redis-data:/data", ], "environment": [], "ports": [], } }, "variables": [ { "id": "$$config_weblate_site_domain", "name": "WEBLATE_SITE_DOMAIN", "label": "Weblate Domain", "defaultValue": "$$generate_domain", "description": "", }, { "id": "$$secret_weblate_admin_password", "name": "WEBLATE_ADMIN_PASSWORD", "label": "Weblate Admin Password", "defaultValue": "$$generate_password", "description": "", "extras": { "isVisibleOnUI": true, } }, { "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": "weblate", "description": "", }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "2022.10.14-1a5b0965", "name": "searxng", "displayName": "SearXNG", "description": "", "services": { "$$id": { "name": "SearXNG", "depends_on": [ "$$id-redis" ], "image": "searxng/searxng:$$core_version", "volumes": [ "$$id-searxng:/etc/searxng", ], "environment": [ "SEARXNG_BASE_URL=$$config_searxng_base_url", ], "ports": [ "8080" ], "cap_drop": ['ALL'], "cap_add": ['CHOWN', 'SETGID', 'SETUID', 'DAC_OVERRIDE'], "extras": { "files": [ { source: "$$workdir/settings.yml", destination: "/etc/searxng/settings.yml", content: ` # see https://docs.searxng.org/admin/engines/settings.html#use-default-settings use_default_settings: true server: secret_key: $$secret_secret_key limiter: true image_proxy: true ui: static_use_hash: true redis: url: redis://:$$secret_redis_password@$$id-redis:6379/0` } ] } }, "$$id-redis": { "name": "Redis", "command": `redis-server --requirepass $$secret_redis_password --save "" --appendonly "no"`, "depends_on": [], "image": "redis:7-alpine", "volumes": [ "$$id-redis-data:/data", ], "environment": [ "REDIS_PASSWORD=$$secret_redis_password", ], "ports": [], "cap_drop": ['ALL'], "cap_add": ['SETGID', 'SETUID', 'DAC_OVERRIDE'], } }, "variables": [ { "id": "$$config_searxng_base_url", "name": "SEARXNG_BASE_URL", "label": "SearXNG Base URL", "defaultValue": "$$generate_fqdn", "description": "", }, { "id": "$$secret_secret_key", "name": "SECRET_KEY", "label": "Secret Key", "defaultValue": "$$generate_passphrase", "description": "", }, { "id": "$$secret_redis_password", "name": "REDIS_PASSWORD", "label": "Redis Password", "defaultValue": "$$generate_password", "description": "", } ] }, { "templateVersion": "1.0.0", "defaultVersion": "v2.0.6", "name": "glitchtip", "displayName": "GlitchTip", "description": "", "services": { "$$id": { "name": "GlitchTip", "depends_on": [ "$$id-postgresql", "$$id-redis" ], "image": "glitchtip/glitchtip:$$core_version", "volumes": [], "environment": [ "PORT=3000", "GLITCHTIP_DOMAIN=$$config_glitchtip_domain", "SECRET_KEY=$$secret_secret_key", "DATABASE_URL=$$secret_database_url", "REDIS_URL=$$secret_redis_url", "DEFAULT_FROM_EMAIL=$$config_default_from_email", "EMAIL_HOST=$$config_email_host", "EMAIL_PORT=$$config_email_port", "EMAIL_HOST_USER=$$config_email_host_user", "EMAIL_HOST_PASSWORD=$$secret_email_host_password", "EMAIL_USE_TLS=$$config_email_use_tls", "EMAIL_USE_SSL=$$config_email_use_ssl", "EMAIL_BACKEND=$$config_email_backend", "MAILGUN_API_KEY=$$secret_mailgun_api_key", "SENDGRID_API_KEY=$$secret_sendgrid_api_key", "ENABLE_OPEN_USER_REGISTRATION=$$config_enable_open_user_registration", "DJANGO_SUPERUSER_EMAIL=$$config_django_superuser_email", "DJANGO_SUPERUSER_PASSWORD=$$secret_django_superuser_password", "DJANGO_SUPERUSER_USERNAME=$$config_django_superuser_username", ], "ports": [ "8000" ] }, "$$id-postgresql": { "name": "PostgreSQL", "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", ], "ports": [] }, "$$id-redis": { "name": "Redis", "depends_on": [], "image": "redis:7-alpine", "volumes": [ "$$id-postgresql-redis-data:/data", ], "environment": [], "ports": [] } }, "variables": [ { "id": "$$config_glitchtip_domain", "name": "GLITCHTIP_DOMAIN", "label": "GlitchTip Domain", "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_redis_url", "name": "REDIS_URL", "label": "Redis URL", "defaultValue": "redis://$$id-redis:6379/0", "description": "", }, { "id": "$$config_default_from_email", "name": "DEFAULT_FROM_EMAIL", "label": "Default Email Address", "defaultValue": "noreply@example.com", "description": "", }, { "id": "$$config_email_host", "name": "EMAIL_HOST", "label": "Email SMTP Host", "defaultValue": "", "description": "", }, { "id": "$$config_email_port", "name": "EMAIL_PORT", "label": "Email SMTP Port", "defaultValue": "25", "description": "", }, { "id": "$$config_email_host_user", "name": "EMAIL_HOST_USER", "label": "Email SMTP User", "defaultValue": "", "description": "", }, { "id": "$$secret_email_host_password", "name": "EMAIL_HOST_PASSWORD", "label": "Email SMTP Password", "defaultValue": "", "description": "", }, { "id": "$$config_email_use_tls", "name": "EMAIL_USE_TLS", "label": "Email Use TLS", "defaultValue": "false", "description": "", }, { "id": "$$config_email_use_ssl", "name": "EMAIL_USE_SSL", "label": "Email Use SSL", "defaultValue": "false", "description": "", }, { "id": "$$secret_email_smtp_password", "name": "EMAIL_SMTP_PASSWORD", "label": "SMTP Password", "defaultValue": "", "description": "", }, { "id": "$$config_email_backend", "name": "EMAIL_BACKEND", "label": "Email Backend", "defaultValue": "", "description": "", }, { "id": "$$secret_mailgun_api_key", "name": "MAILGUN_API_KEY", "label": "Mailgun API Key", "defaultValue": "", "description": "", }, { "id": "$$secret_sendgrid_api_key", "name": "SENDGRID_API_KEY", "label": "Sendgrid API Key", "defaultValue": "", "description": "", }, { "id": "$$config_enable_open_user_registration", "name": "ENABLE_OPEN_USER_REGISTRATION", "label": "Enable Open User Registration", "defaultValue": "true", "description": "", }, { "id": "$$config_django_superuser_email", "name": "DJANGO_SUPERUSER_EMAIL", "label": "Django Superuser Email", "defaultValue": "", "description": "", }, { "id": "$$config_django_superuser_username", "name": "DJANGO_SUPERUSER_USERNAME", "label": "Django Superuser Username", "defaultValue": "", "description": "", }, { "id": "$$secret_django_superuser_password", "name": "DJANGO_SUPERUSER_PASSWORD", "label": "Django Superuser Password", "defaultValue": "$$generate_password", "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": "", "description": "", }, { "id": "$$config_postgres_db", "name": "POSTGRES_DB", "label": "PostgreSQL Database", "defaultValue": "hasura", "description": "", }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "v2.13.0", "name": "hasura", "displayName": "Hasura", "description": "Instant realtime GraphQL APIs on any Postgres application, existing or new.", "services": { "$$id": { "name": "Hasura", "depends_on": [ "$$id-postgresql" ], "image": "hasura/graphql-engine:$$core_version", "volumes": [], "environment": [ "HASURA_GRAPHQL_ENABLE_CONSOLE=$$config_hasura_graphql_enable_console", "HASURA_GRAPHQL_METADATA_DATABASE_URL=$$secret_hasura_graphql_metadata_database_url", "HASURA_GRAPHQL_ADMIN_PASSWORD=$$secret_hasura_graphql_admin_password", ], "ports": [ "8080" ] }, "$$id-postgresql": { "name": "PostgreSQL", "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", ], "ports": [] } }, "variables": [ { "id": "$$config_hasura_graphql_enable_console", "name": "HASURA_GRAPHQL_ENABLE_CONSOLE", "label": "Enable Hasura Console", "defaultValue": "true", "description": "", }, { "id": "$$secret_hasura_graphql_metadata_database_url", "name": "HASURA_GRAPHQL_METADATA_DATABASE_URL", "label": "Hasura Metadata Database URL", "defaultValue": "postgresql://$$config_postgres_user:$$secret_postgres_password@$$id-postgresql:5432/$$config_postgres_db", "description": "" }, { "id": "$$secret_hasura_graphql_admin_password", "name": "HASURA_GRAPHQL_ADMIN_PASSWORD", "label": "Hasura Admin Password", "defaultValue": "$$generate_password", "description": "", "extras": { "isVisibleOnUI": true, } }, { "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": "hasura", "description": "", }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "postgresql-v1.38.0", "name": "umami", "displayName": "Umami", "description": "Umami is a simple, easy to use, self-hosted web analytics solution. The goal is to provide you with a friendly privacy-focused alternative to Google Analytics.", "services": { "$$id": { "name": "Umami", "documentation": "Official docs are [here](https://umami.is/docs/getting-started)", "depends_on": [ "$$id-postgresql" ], "image": "ghcr.io/umami-software/umami:$$core_version", "volumes": [], "environment": [ "ADMIN_PASSWORD=$$secret_admin_password", "DATABASE_URL=$$secret_database_url", "DATABASE_TYPE=postgresql", "HASH_SALT=$$secret_hash_salt", ], "ports": [ "3000" ] }, "$$id-postgresql": { "name": "PostgreSQL", "documentation": "Official docs are [here](https://umami.is/docs/getting-started)", "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", ], "ports": [], "extras": { "files": [ { source: "$$workdir/schema.postgresql.sql", destination: "/docker-entrypoint-initdb.d/schema.postgresql.sql", content: ` -- CreateTable CREATE TABLE "account" ( "user_id" SERIAL NOT NULL, "username" VARCHAR(255) NOT NULL, "password" VARCHAR(60) NOT NULL, "is_admin" BOOLEAN NOT NULL DEFAULT false, "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("user_id") ); -- CreateTable CREATE TABLE "event" ( "event_id" SERIAL NOT NULL, "website_id" INTEGER NOT NULL, "session_id" INTEGER NOT NULL, "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, "url" VARCHAR(500) NOT NULL, "event_type" VARCHAR(50) NOT NULL, "event_value" VARCHAR(50) NOT NULL, PRIMARY KEY ("event_id") ); -- CreateTable CREATE TABLE "pageview" ( "view_id" SERIAL NOT NULL, "website_id" INTEGER NOT NULL, "session_id" INTEGER NOT NULL, "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, "url" VARCHAR(500) NOT NULL, "referrer" VARCHAR(500), PRIMARY KEY ("view_id") ); -- CreateTable CREATE TABLE "session" ( "session_id" SERIAL NOT NULL, "session_uuid" UUID NOT NULL, "website_id" INTEGER NOT NULL, "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, "hostname" VARCHAR(100), "browser" VARCHAR(20), "os" VARCHAR(20), "device" VARCHAR(20), "screen" VARCHAR(11), "language" VARCHAR(35), "country" CHAR(2), PRIMARY KEY ("session_id") ); -- CreateTable CREATE TABLE "website" ( "website_id" SERIAL NOT NULL, "website_uuid" UUID NOT NULL, "user_id" INTEGER NOT NULL, "name" VARCHAR(100) NOT NULL, "domain" VARCHAR(500), "share_id" VARCHAR(64), "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("website_id") ); -- CreateIndex CREATE UNIQUE INDEX "account.username_unique" ON "account"("username"); -- CreateIndex CREATE INDEX "event_created_at_idx" ON "event"("created_at"); -- CreateIndex CREATE INDEX "event_session_id_idx" ON "event"("session_id"); -- CreateIndex CREATE INDEX "event_website_id_idx" ON "event"("website_id"); -- CreateIndex CREATE INDEX "pageview_created_at_idx" ON "pageview"("created_at"); -- CreateIndex CREATE INDEX "pageview_session_id_idx" ON "pageview"("session_id"); -- CreateIndex CREATE INDEX "pageview_website_id_created_at_idx" ON "pageview"("website_id", "created_at"); -- CreateIndex CREATE INDEX "pageview_website_id_idx" ON "pageview"("website_id"); -- CreateIndex CREATE INDEX "pageview_website_id_session_id_created_at_idx" ON "pageview"("website_id", "session_id", "created_at"); -- CreateIndex CREATE UNIQUE INDEX "session.session_uuid_unique" ON "session"("session_uuid"); -- CreateIndex CREATE INDEX "session_created_at_idx" ON "session"("created_at"); -- CreateIndex CREATE INDEX "session_website_id_idx" ON "session"("website_id"); -- CreateIndex CREATE UNIQUE INDEX "website.website_uuid_unique" ON "website"("website_uuid"); -- CreateIndex CREATE UNIQUE INDEX "website.share_id_unique" ON "website"("share_id"); -- CreateIndex CREATE INDEX "website_user_id_idx" ON "website"("user_id"); -- AddForeignKey ALTER TABLE "event" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "event" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "pageview" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "pageview" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "session" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "website" ADD FOREIGN KEY ("user_id") REFERENCES "account"("user_id") ON DELETE CASCADE ON UPDATE CASCADE; insert into account (username, password, is_admin) values ('admin', '$$hashed$$secret_admin_password', true);` }, ] } } }, "variables": [ { "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_hash_salt", "name": "HASH_SALT", "label": "Hash Salt", "defaultValue": "$$generate_passphrase", "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": "umami", "description": "", }, { "id": "$$secret_admin_password", "name": "ADMIN_PASSWORD", "label": "Initial Admin Password", "defaultValue": "$$generate_password", "description": "", "extras": { "isVisibleOnUI": true, } }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "v0.29.1", "name": "meilisearch", "displayName": "MeiliSearch", "description": "MeiliSearch is a lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine", "services": { "$$id": { "name": "MeiliSearch", "documentation": "https://docs.meilisearch.com/", "depends_on": [], "image": "getmeili/meilisearch:$$core_version", "volumes": [ "$$id-datams:/meili_data/data.ms", "$$id-data:/meili_data", "$$id-snapshot:/snapshot", "$$id-dump:/dumps" ], "environment": [ "MEILI_MASTER_KEY=$$secret_meili_master_key", ], "ports": [ "7700" ] } }, "variables": [ { "id": "$$secret_meili_master_key", "name": "MEILI_MASTER_KEY", "label": "Master Key", "defaultValue": "$$generate_passphrase", "description": "", "extras": { "isVisibleOnUI": true, } } ] }, { "templateVersion": "1.0.0", "defaultVersion": "latest", "name": "ghost", "displayName": "Ghost", "description": "Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License", "services": { "$$id": { "name": "Ghost", "documentation": "Taken from https://docs.ghost.org/", "depends_on": [ "$$id-mariadb" ], "image": "bitnami/ghost:$$core_version", "volumes": [ "$$id-ghost:/bitnami/ghost", ], "environment": [ "url=$$config_url", "GHOST_HOST=$$config_ghost_host", "GHOST_ENABLE_HTTPS=$$config_ghost_enable_https", "GHOST_EMAIL=$$config_ghost_email", "GHOST_PASSWORD=$$secret_ghost_password", "GHOST_DATABASE_HOST=$$config_ghost_database_host", "GHOST_DATABASE_USER=$$config_mariadb_user", "GHOST_DATABASE_PASSWORD=$$secret_ghost_database_password", "GHOST_DATABASE_NAME=$$config_mariadb_database", "GHOST_DATABASE_PORT_NUMBER=3306", ], "ports": [ "2368" ] }, "$$id-mariadb": { "name": "MariaDB", "depends_on": [], "image": "bitnami/mariadb:latest", "volumes": [ "$$id-mariadb:/bitnami/mariadb", ], "environment": [ "MARIADB_USER=$$config_mariadb_user", "MARIADB_PASSWORD=$$secret_mariadb_password", "MARIADB_DATABASE=$$config_mariadb_database", "MARIADB_ROOT_USER=$$config_mariadb_root_user", "MARIADB_ROOT_PASSWORD=$$secret_mariadb_root_password" ], "ports": [] } }, "variables": [ { "id": "$$config_url", "name": "url", "label": "URL", "defaultValue": "$$generate_fqdn", "description": "" }, { "id": "$$config_ghost_host", "name": "GHOST_HOST", "label": "Ghost Host", "defaultValue": "", "description": "" }, { "id": "$$config_ghost_enable_https", "name": "GHOST_ENABLE_HTTPS", "label": "Ghost Enable HTTPS", "defaultValue": "no", "description": "" }, { "id": "$$config_ghost_email", "name": "GHOST_EMAIL", "label": "Ghost Default Email", "defaultValue": "admin@example.com", "description": "" }, { "id": "$$secret_ghost_password", "name": "GHOST_PASSWORD", "label": "Ghost Default Password", "defaultValue": "$$generate_password", "description": "" }, { "id": "$$config_ghost_database_host", "name": "GHOST_DATABASE_HOST", "label": "Ghost Database Host", "defaultValue": "$$id-mariadb", "description": "" }, { "id": "$$config_ghost_database_user", "name": "GHOST_DATABASE_USER", "label": "MariaDB User", "defaultValue": "$$config_mariadb_user", "description": "" }, { "id": "$$secret_ghost_database_password", "name": "GHOST_DATABASE_PASSWORD", "label": "MariaDB Password", "defaultValue": "$$secret_mariadb_password", "description": "" }, { "id": "$$config_ghost_database_name", "name": "GHOST_DATABASE_NAME", "label": "MariaDB Database", "defaultValue": "$$config_mariadb_database", "description": "" }, { "id": "$$config_mariadb_user", "name": "MARIADB_USER", "label": "MariaDB User", "defaultValue": "$$generate_username", "description": "" }, { "id": "$$secret_mariadb_password", "name": "MARIADB_PASSWORD", "label": "MariaDB Password", "defaultValue": "$$generate_password", "description": "" }, { "id": "$$config_mariadb_database", "name": "MARIADB_DATABASE", "label": "MariaDB Database", "defaultValue": "ghost", "description": "" }, { "id": "$$config_mariadb_root_user", "name": "MARIADB_ROOT_USER", "label": "MariaDB Root User", "defaultValue": "$$generate_username", "description": "" }, { "id": "$$secret_mariadb_root_password", "name": "MARIADB_ROOT_PASSWORD", "label": "MariaDB Root Password", "defaultValue": "$$generate_password", "description": "" }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "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_mysql_user", "WORDPRESS_DB_PASSWORD=$$secret_mysql_password", "WORDPRESS_DB_NAME=$$config_mysql_database", "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": "" } ] }, { "templateVersion": "1.0.0", "defaultVersion": "4.7.1", "name": "vscodeserver", "displayName": "VSCode Server", "description": "vscode-server by Coder is VS Code running on a remote server, accessible through the browser.", "services": { "$$id": { "name": "VSCode Server", "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", "description": "", "extras": { "isVisibleOnUI": true, } } ] }, { "templateVersion": "1.0.0", "defaultVersion": "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", "MINIO_ROOT_PASSWORD=$$secret_minio_root_user_password" ], "ports": [ "9001", "9000" ] } }, "variables": [ { "id": "$$config_server_url", "name": "MINIO_SERVER_URL", "label": "Server/Console URL", "defaultValue": "", "description": "", "extras": { "required": true } }, { "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": "", } ] }, { "templateVersion": "1.0.0", "defaultVersion": "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=$$secret_email_mailgun_api", "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", "name": "EMAIL_MAILGUN_API", "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": "", }, ] }, { "templateVersion": "1.0.0", "defaultVersion": "0.198.1", "name": "n8n", "displayName": "n8n.io", "description": "n8n is a free and open node based Workflow Automation Tool.", "services": { "$$id": { "name": "N8n", "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": [ "WEBHOOK_URL=$$config_webhook_url" ], "ports": [ "5678" ] } }, "variables": [ { "id": "$$config_webhook_url", "name": "WEBHOOK_URL", "label": "Webhook URL", "defaultValue": "$$generate_fqdn", "description": "", }] }, { "templateVersion": "1.0.0", "defaultVersion": "stable", "name": "plausibleanalytics", "displayName": "PlausibleAnalytics", "description": "Plausible is a lightweight and open-source website analytics tool.", "services": { "$$id": { "name": "Plausible Analytics", "documentation": "Taken from https://plausible.io/", "command": 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin && /entrypoint.sh run"', "depends_on": [ "$$id-postgresql", "$$id-clickhouse" ], "image": "plausible/analytics:$$core_version", "environment": [ "ADMIN_USER_EMAIL=$$config_admin_user_email", "ADMIN_USER_NAME=$$config_admin_user_name", "ADMIN_USER_PWD=$$secret_admin_user_pwd", "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", ], "ports": [ "8000" ], }, "$$id-postgresql": { "name": "PostgreSQL", "documentation": "Taken from https://plausible.io/", "image": "bitnami/postgresql:13.2.0", "volumes": [ '$$id-postgresql-data:/bitnami/postgresql', ], "environment": [ "POSTGRESQL_PASSWORD=$$secret_postgresql_password", "POSTGRESQL_USERNAME=$$config_postgresql_username", "POSTGRESQL_DATABASE=$$config_postgresql_database", ], }, "$$id-clickhouse": { "name": "Clickhouse", "documentation": "Taken from https://plausible.io/", "volumes": [ '$$id-clickhouse-data:/var/lib/clickhouse', ], "image": "yandex/clickhouse-server:21.3.2.5", "ulimits": { "nofile": { "soft": 262144, "hard": 262144 } }, "extras": { "files": [ { source: "$$workdir/clickhouse-config.xml", destination: '/etc/clickhouse-server/users.d/logging.xml', content: 'warningtrue' }, { source: "$$workdir/clickhouse-user-config.xml", destination: '/etc/clickhouse-server/config.d/logging.xml', content: '00' }, { source: "$$workdir/init.query", destination: '/docker-entrypoint-initdb.d/init.query', content: 'CREATE DATABASE IF NOT EXISTS plausible;' }, { source: "$$workdir/init-db.sh", destination: '/docker-entrypoint-initdb.d/init-db.sh', content: 'clickhouse client --queries-file /docker-entrypoint-initdb.d/init.query' } ] } }, }, "variables": [ { "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", "defaultValue": "admin@example.com", "description": "This is the admin email. Please change it.", }, { "id": "$$config_admin_user_name", "name": "ADMIN_USER_NAME", "label": "Admin User Name", "defaultValue": "$$generate_username", "description": "This is the admin username. Please change it.", }, { "id": "$$secret_admin_user_pwd", "name": "ADMIN_USER_PWD", "label": "Admin User Password", "defaultValue": "$$generate_password", "description": "This is the admin password. Please change it.", "extras": { "isVisibleOnUI": true, } }, { "id": "$$secret_secret_key_base", "name": "SECRET_KEY_BASE", "label": "Secret Key Base", "defaultValue": "$$generate_passphrase", "description": "", }, { "id": "$$config_disable_auth", "name": "DISABLE_AUTH", "label": "Disable Authentication", "defaultValue": "false", "description": "", }, { "id": "$$config_disable_registration", "name": "DISABLE_REGISTRATION", "label": "Disable Registration", "defaultValue": "true", "description": "", }, { "id": "$$config_postgresql_username", "name": "POSTGRESQL_USERNAME", "label": "PostgreSQL Username", "defaultValue": "postgresql", "description": "", }, { "id": "$$secret_postgresql_password", "name": "POSTGRESQL_PASSWORD", "label": "PostgreSQL Password", "defaultValue": "$$generate_password", "description": "", } , { "id": "$$config_postgresql_database", "name": "POSTGRESQL_DATABASE", "label": "PostgreSQL Database", "defaultValue": "plausible", "description": "", }, { "id": "$$config_scriptName", "name": "SCRIPT_NAME", "label": "Custom Script Name", "defaultValue": "plausible.js", "description": "This is the default script name.", }, ] } ]