commit b5585534eb7cc644b0895e36c45fdf044734bde0 Author: Juergen Kunz Date: Thu Mar 19 15:30:08 2026 +0000 feat: initial app template catalog with 16 apps Populate the appstore-apptemplates repo with catalog.json and per-app config files for all 16 curated Docker apps, each at v1.0.0. diff --git a/apps/adminer/app.json b/apps/adminer/app.json new file mode 100644 index 0000000..1cd3470 --- /dev/null +++ b/apps/adminer/app.json @@ -0,0 +1,10 @@ +{ + "id": "adminer", + "name": "Adminer", + "description": "Lightweight database management tool with web interface", + "category": "Databases", + "iconName": "adminer", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/adminer/versions/1.0.0/config.json b/apps/adminer/versions/1.0.0/config.json new file mode 100644 index 0000000..d4f2f9e --- /dev/null +++ b/apps/adminer/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "adminer:latest", + "port": 8080 +} diff --git a/apps/ghost/app.json b/apps/ghost/app.json new file mode 100644 index 0000000..560ece4 --- /dev/null +++ b/apps/ghost/app.json @@ -0,0 +1,10 @@ +{ + "id": "ghost", + "name": "Ghost", + "description": "Professional publishing platform for blogs and newsletters", + "category": "CMS", + "iconName": "ghost", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/ghost/versions/1.0.0/config.json b/apps/ghost/versions/1.0.0/config.json new file mode 100644 index 0000000..e19ba38 --- /dev/null +++ b/apps/ghost/versions/1.0.0/config.json @@ -0,0 +1,18 @@ +{ + "image": "ghost:latest", + "port": 2368, + "envVars": [ + { + "name": "database__client", + "default": "sqlite3" + }, + { + "name": "database__connection__filename", + "default": "/var/lib/ghost/content/data/ghost.db" + }, + { + "name": "url", + "default": "http://localhost:2368" + } + ] +} diff --git a/apps/gitea/app.json b/apps/gitea/app.json new file mode 100644 index 0000000..38728f5 --- /dev/null +++ b/apps/gitea/app.json @@ -0,0 +1,10 @@ +{ + "id": "gitea", + "name": "Gitea", + "description": "Lightweight self-hosted Git service", + "category": "Development", + "iconName": "gitea", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/gitea/versions/1.0.0/config.json b/apps/gitea/versions/1.0.0/config.json new file mode 100644 index 0000000..9e6a38f --- /dev/null +++ b/apps/gitea/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "gitea/gitea:latest", + "port": 3000 +} diff --git a/apps/grafana/app.json b/apps/grafana/app.json new file mode 100644 index 0000000..e6f1d3c --- /dev/null +++ b/apps/grafana/app.json @@ -0,0 +1,10 @@ +{ + "id": "grafana", + "name": "Grafana", + "description": "Open-source analytics and monitoring platform", + "category": "Monitoring", + "iconName": "grafana", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/grafana/versions/1.0.0/config.json b/apps/grafana/versions/1.0.0/config.json new file mode 100644 index 0000000..e09d2a5 --- /dev/null +++ b/apps/grafana/versions/1.0.0/config.json @@ -0,0 +1,10 @@ +{ + "image": "grafana/grafana:latest", + "port": 3000, + "envVars": [ + { + "name": "GF_SECURITY_ADMIN_PASSWORD", + "default": "admin" + } + ] +} diff --git a/apps/mariadb/app.json b/apps/mariadb/app.json new file mode 100644 index 0000000..d0a417c --- /dev/null +++ b/apps/mariadb/app.json @@ -0,0 +1,10 @@ +{ + "id": "mariadb", + "name": "MariaDB", + "description": "Community-developed relational database forked from MySQL", + "category": "Databases", + "iconName": "mariadb", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/mariadb/versions/1.0.0/config.json b/apps/mariadb/versions/1.0.0/config.json new file mode 100644 index 0000000..943da2b --- /dev/null +++ b/apps/mariadb/versions/1.0.0/config.json @@ -0,0 +1,10 @@ +{ + "image": "mariadb:latest", + "port": 3306, + "envVars": [ + { + "name": "MARIADB_ROOT_PASSWORD", + "required": true + } + ] +} diff --git a/apps/mattermost/app.json b/apps/mattermost/app.json new file mode 100644 index 0000000..d2f0352 --- /dev/null +++ b/apps/mattermost/app.json @@ -0,0 +1,10 @@ +{ + "id": "mattermost", + "name": "Mattermost", + "description": "Open-source team messaging and collaboration platform", + "category": "Communication", + "iconName": "mattermost", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/mattermost/versions/1.0.0/config.json b/apps/mattermost/versions/1.0.0/config.json new file mode 100644 index 0000000..b7f550c --- /dev/null +++ b/apps/mattermost/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "mattermost/mattermost-team-edition:latest", + "port": 8065 +} diff --git a/apps/n8n/app.json b/apps/n8n/app.json new file mode 100644 index 0000000..d70b36d --- /dev/null +++ b/apps/n8n/app.json @@ -0,0 +1,10 @@ +{ + "id": "n8n", + "name": "n8n", + "description": "Workflow automation platform with visual editor", + "category": "Automation", + "iconName": "n8n", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/n8n/versions/1.0.0/config.json b/apps/n8n/versions/1.0.0/config.json new file mode 100644 index 0000000..09b85d4 --- /dev/null +++ b/apps/n8n/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "n8nio/n8n:latest", + "port": 5678 +} diff --git a/apps/nextcloud/app.json b/apps/nextcloud/app.json new file mode 100644 index 0000000..0cce027 --- /dev/null +++ b/apps/nextcloud/app.json @@ -0,0 +1,10 @@ +{ + "id": "nextcloud", + "name": "Nextcloud", + "description": "Self-hosted productivity and file sharing platform", + "category": "Cloud Storage", + "iconName": "nextcloud", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/nextcloud/versions/1.0.0/config.json b/apps/nextcloud/versions/1.0.0/config.json new file mode 100644 index 0000000..f652939 --- /dev/null +++ b/apps/nextcloud/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "nextcloud:latest", + "port": 80 +} diff --git a/apps/nginx/app.json b/apps/nginx/app.json new file mode 100644 index 0000000..ae71b37 --- /dev/null +++ b/apps/nginx/app.json @@ -0,0 +1,10 @@ +{ + "id": "nginx", + "name": "Nginx", + "description": "High-performance web server and reverse proxy", + "category": "Web Servers", + "iconName": "nginx", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/nginx/versions/1.0.0/config.json b/apps/nginx/versions/1.0.0/config.json new file mode 100644 index 0000000..cf57bd2 --- /dev/null +++ b/apps/nginx/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "nginx:alpine", + "port": 80 +} diff --git a/apps/plausible/app.json b/apps/plausible/app.json new file mode 100644 index 0000000..10a8a65 --- /dev/null +++ b/apps/plausible/app.json @@ -0,0 +1,10 @@ +{ + "id": "plausible", + "name": "Plausible", + "description": "Privacy-friendly web analytics platform", + "category": "Analytics", + "iconName": "plausible", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/plausible/versions/1.0.0/config.json b/apps/plausible/versions/1.0.0/config.json new file mode 100644 index 0000000..8d3ba70 --- /dev/null +++ b/apps/plausible/versions/1.0.0/config.json @@ -0,0 +1,7 @@ +{ + "image": "plausible/analytics:latest", + "port": 8000, + "platformRequirements": { + "clickhouse": true + } +} diff --git a/apps/portainer/app.json b/apps/portainer/app.json new file mode 100644 index 0000000..312aacc --- /dev/null +++ b/apps/portainer/app.json @@ -0,0 +1,10 @@ +{ + "id": "portainer", + "name": "Portainer", + "description": "Container management UI for Docker environments", + "category": "Infrastructure", + "iconName": "portainer", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/portainer/versions/1.0.0/config.json b/apps/portainer/versions/1.0.0/config.json new file mode 100644 index 0000000..32cbc55 --- /dev/null +++ b/apps/portainer/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "portainer/portainer-ce:latest", + "port": 9000 +} diff --git a/apps/postgres/app.json b/apps/postgres/app.json new file mode 100644 index 0000000..64f3fcf --- /dev/null +++ b/apps/postgres/app.json @@ -0,0 +1,10 @@ +{ + "id": "postgres", + "name": "PostgreSQL", + "description": "Advanced open-source relational database", + "category": "Databases", + "iconName": "postgres", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/postgres/versions/1.0.0/config.json b/apps/postgres/versions/1.0.0/config.json new file mode 100644 index 0000000..44045e8 --- /dev/null +++ b/apps/postgres/versions/1.0.0/config.json @@ -0,0 +1,18 @@ +{ + "image": "postgres:16-alpine", + "port": 5432, + "envVars": [ + { + "name": "POSTGRES_PASSWORD", + "required": true + }, + { + "name": "POSTGRES_USER", + "default": "postgres" + }, + { + "name": "POSTGRES_DB", + "default": "postgres" + } + ] +} diff --git a/apps/redis/app.json b/apps/redis/app.json new file mode 100644 index 0000000..2b54210 --- /dev/null +++ b/apps/redis/app.json @@ -0,0 +1,10 @@ +{ + "id": "redis", + "name": "Redis", + "description": "In-memory data store for caching and message brokering", + "category": "Databases", + "iconName": "redis", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/redis/versions/1.0.0/config.json b/apps/redis/versions/1.0.0/config.json new file mode 100644 index 0000000..5ccde15 --- /dev/null +++ b/apps/redis/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "redis:alpine", + "port": 6379 +} diff --git a/apps/uptime-kuma/app.json b/apps/uptime-kuma/app.json new file mode 100644 index 0000000..837250d --- /dev/null +++ b/apps/uptime-kuma/app.json @@ -0,0 +1,10 @@ +{ + "id": "uptime-kuma", + "name": "Uptime Kuma", + "description": "Self-hosted uptime monitoring tool", + "category": "Monitoring", + "iconName": "uptime-kuma", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/uptime-kuma/versions/1.0.0/config.json b/apps/uptime-kuma/versions/1.0.0/config.json new file mode 100644 index 0000000..77d4f87 --- /dev/null +++ b/apps/uptime-kuma/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "louislam/uptime-kuma:latest", + "port": 3001 +} diff --git a/apps/vaultwarden/app.json b/apps/vaultwarden/app.json new file mode 100644 index 0000000..dce141f --- /dev/null +++ b/apps/vaultwarden/app.json @@ -0,0 +1,10 @@ +{ + "id": "vaultwarden", + "name": "Vaultwarden", + "description": "Lightweight Bitwarden-compatible password manager server", + "category": "Security", + "iconName": "vaultwarden", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/vaultwarden/versions/1.0.0/config.json b/apps/vaultwarden/versions/1.0.0/config.json new file mode 100644 index 0000000..d635d7f --- /dev/null +++ b/apps/vaultwarden/versions/1.0.0/config.json @@ -0,0 +1,4 @@ +{ + "image": "vaultwarden/server:latest", + "port": 80 +} diff --git a/apps/wordpress/app.json b/apps/wordpress/app.json new file mode 100644 index 0000000..14ea69f --- /dev/null +++ b/apps/wordpress/app.json @@ -0,0 +1,10 @@ +{ + "id": "wordpress", + "name": "WordPress", + "description": "Popular open-source content management system", + "category": "CMS", + "iconName": "wordpress", + "latestVersion": "1.0.0", + "versions": ["1.0.0"], + "maintainer": "serve.zone" +} diff --git a/apps/wordpress/versions/1.0.0/config.json b/apps/wordpress/versions/1.0.0/config.json new file mode 100644 index 0000000..de29578 --- /dev/null +++ b/apps/wordpress/versions/1.0.0/config.json @@ -0,0 +1,22 @@ +{ + "image": "wordpress:latest", + "port": 80, + "envVars": [ + { + "name": "WORDPRESS_DB_HOST", + "required": true + }, + { + "name": "WORDPRESS_DB_USER", + "default": "wordpress" + }, + { + "name": "WORDPRESS_DB_PASSWORD", + "required": true + }, + { + "name": "WORDPRESS_DB_NAME", + "default": "wordpress" + } + ] +} diff --git a/catalog.json b/catalog.json new file mode 100644 index 0000000..67611de --- /dev/null +++ b/catalog.json @@ -0,0 +1,150 @@ +{ + "schemaVersion": 1, + "updatedAt": "2026-03-19T00:00:00Z", + "apps": [ + { + "id": "nginx", + "name": "Nginx", + "description": "High-performance web server and reverse proxy. Lightweight, fast, and battle-tested.", + "category": "Web Server", + "iconName": "globe", + "latestVersion": "1.0.0", + "tags": ["web", "proxy"] + }, + { + "id": "wordpress", + "name": "WordPress", + "description": "The world's most popular content management system. Powers over 40% of the web.", + "category": "CMS", + "iconName": "file-text", + "latestVersion": "1.0.0", + "tags": ["cms", "blog"] + }, + { + "id": "ghost", + "name": "Ghost", + "description": "Modern publishing platform for creating professional blogs and newsletters.", + "category": "CMS", + "iconName": "book-open", + "latestVersion": "1.0.0", + "tags": ["cms", "blog", "newsletter"] + }, + { + "id": "gitea", + "name": "Gitea", + "description": "Lightweight self-hosted Git service. Easy to install and maintain.", + "category": "Dev Tools", + "iconName": "git-branch", + "latestVersion": "1.0.0", + "tags": ["git", "devtools"] + }, + { + "id": "nextcloud", + "name": "Nextcloud", + "description": "Self-hosted file sync and share platform. Your own private cloud.", + "category": "Storage", + "iconName": "package", + "latestVersion": "1.0.0", + "tags": ["storage", "cloud"] + }, + { + "id": "grafana", + "name": "Grafana", + "description": "Open-source observability platform for metrics, logs, and traces visualization.", + "category": "Monitoring", + "iconName": "monitor", + "latestVersion": "1.0.0", + "tags": ["monitoring", "observability"] + }, + { + "id": "uptime-kuma", + "name": "Uptime Kuma", + "description": "Self-hosted monitoring tool. Beautiful UI for tracking uptime of services.", + "category": "Monitoring", + "iconName": "monitor", + "latestVersion": "1.0.0", + "tags": ["monitoring", "uptime"] + }, + { + "id": "plausible", + "name": "Plausible Analytics", + "description": "Privacy-friendly web analytics. No cookies, GDPR compliant by design.", + "category": "Analytics", + "iconName": "monitor", + "latestVersion": "1.0.0", + "tags": ["analytics"] + }, + { + "id": "vaultwarden", + "name": "Vaultwarden", + "description": "Lightweight Bitwarden-compatible password manager server.", + "category": "Security", + "iconName": "shield", + "latestVersion": "1.0.0", + "tags": ["security", "passwords"] + }, + { + "id": "n8n", + "name": "N8N", + "description": "Workflow automation tool. Connect anything to everything with a visual editor.", + "category": "Automation", + "iconName": "server", + "latestVersion": "1.0.0", + "tags": ["automation", "workflow"] + }, + { + "id": "mattermost", + "name": "Mattermost", + "description": "Open-source Slack alternative for team communication and collaboration.", + "category": "Communication", + "iconName": "mail", + "latestVersion": "1.0.0", + "tags": ["communication", "chat"] + }, + { + "id": "portainer", + "name": "Portainer", + "description": "Docker management UI. Monitor and manage containers from a web interface.", + "category": "Dev Tools", + "iconName": "package", + "latestVersion": "1.0.0", + "tags": ["docker", "devtools"] + }, + { + "id": "redis", + "name": "Redis", + "description": "In-memory data store used as database, cache, and message broker.", + "category": "Database", + "iconName": "database", + "latestVersion": "1.0.0", + "tags": ["database", "cache"] + }, + { + "id": "postgres", + "name": "PostgreSQL", + "description": "Advanced open-source relational database. Reliable and feature-rich.", + "category": "Database", + "iconName": "database", + "latestVersion": "1.0.0", + "tags": ["database", "sql"] + }, + { + "id": "mariadb", + "name": "MariaDB", + "description": "Community-developed fork of MySQL. Drop-in replacement with enhanced features.", + "category": "Database", + "iconName": "database", + "latestVersion": "1.0.0", + "tags": ["database", "sql", "mysql"] + }, + { + "id": "adminer", + "name": "Adminer", + "description": "Database management tool in a single PHP file. Supports MySQL, PostgreSQL, SQLite.", + "category": "Dev Tools", + "iconName": "database", + "latestVersion": "1.0.0", + "tags": ["database", "devtools"] + } + ] +}