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.
This commit is contained in:
10
apps/adminer/app.json
Normal file
10
apps/adminer/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/adminer/versions/1.0.0/config.json
Normal file
4
apps/adminer/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "adminer:latest",
|
||||
"port": 8080
|
||||
}
|
||||
10
apps/ghost/app.json
Normal file
10
apps/ghost/app.json
Normal file
@@ -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"
|
||||
}
|
||||
18
apps/ghost/versions/1.0.0/config.json
Normal file
18
apps/ghost/versions/1.0.0/config.json
Normal file
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
10
apps/gitea/app.json
Normal file
10
apps/gitea/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/gitea/versions/1.0.0/config.json
Normal file
4
apps/gitea/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "gitea/gitea:latest",
|
||||
"port": 3000
|
||||
}
|
||||
10
apps/grafana/app.json
Normal file
10
apps/grafana/app.json
Normal file
@@ -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"
|
||||
}
|
||||
10
apps/grafana/versions/1.0.0/config.json
Normal file
10
apps/grafana/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"image": "grafana/grafana:latest",
|
||||
"port": 3000,
|
||||
"envVars": [
|
||||
{
|
||||
"name": "GF_SECURITY_ADMIN_PASSWORD",
|
||||
"default": "admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
10
apps/mariadb/app.json
Normal file
10
apps/mariadb/app.json
Normal file
@@ -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"
|
||||
}
|
||||
10
apps/mariadb/versions/1.0.0/config.json
Normal file
10
apps/mariadb/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"image": "mariadb:latest",
|
||||
"port": 3306,
|
||||
"envVars": [
|
||||
{
|
||||
"name": "MARIADB_ROOT_PASSWORD",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
10
apps/mattermost/app.json
Normal file
10
apps/mattermost/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/mattermost/versions/1.0.0/config.json
Normal file
4
apps/mattermost/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "mattermost/mattermost-team-edition:latest",
|
||||
"port": 8065
|
||||
}
|
||||
10
apps/n8n/app.json
Normal file
10
apps/n8n/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/n8n/versions/1.0.0/config.json
Normal file
4
apps/n8n/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "n8nio/n8n:latest",
|
||||
"port": 5678
|
||||
}
|
||||
10
apps/nextcloud/app.json
Normal file
10
apps/nextcloud/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/nextcloud/versions/1.0.0/config.json
Normal file
4
apps/nextcloud/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "nextcloud:latest",
|
||||
"port": 80
|
||||
}
|
||||
10
apps/nginx/app.json
Normal file
10
apps/nginx/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/nginx/versions/1.0.0/config.json
Normal file
4
apps/nginx/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "nginx:alpine",
|
||||
"port": 80
|
||||
}
|
||||
10
apps/plausible/app.json
Normal file
10
apps/plausible/app.json
Normal file
@@ -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"
|
||||
}
|
||||
7
apps/plausible/versions/1.0.0/config.json
Normal file
7
apps/plausible/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"image": "plausible/analytics:latest",
|
||||
"port": 8000,
|
||||
"platformRequirements": {
|
||||
"clickhouse": true
|
||||
}
|
||||
}
|
||||
10
apps/portainer/app.json
Normal file
10
apps/portainer/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/portainer/versions/1.0.0/config.json
Normal file
4
apps/portainer/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "portainer/portainer-ce:latest",
|
||||
"port": 9000
|
||||
}
|
||||
10
apps/postgres/app.json
Normal file
10
apps/postgres/app.json
Normal file
@@ -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"
|
||||
}
|
||||
18
apps/postgres/versions/1.0.0/config.json
Normal file
18
apps/postgres/versions/1.0.0/config.json
Normal file
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
10
apps/redis/app.json
Normal file
10
apps/redis/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/redis/versions/1.0.0/config.json
Normal file
4
apps/redis/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "redis:alpine",
|
||||
"port": 6379
|
||||
}
|
||||
10
apps/uptime-kuma/app.json
Normal file
10
apps/uptime-kuma/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/uptime-kuma/versions/1.0.0/config.json
Normal file
4
apps/uptime-kuma/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "louislam/uptime-kuma:latest",
|
||||
"port": 3001
|
||||
}
|
||||
10
apps/vaultwarden/app.json
Normal file
10
apps/vaultwarden/app.json
Normal file
@@ -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"
|
||||
}
|
||||
4
apps/vaultwarden/versions/1.0.0/config.json
Normal file
4
apps/vaultwarden/versions/1.0.0/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image": "vaultwarden/server:latest",
|
||||
"port": 80
|
||||
}
|
||||
10
apps/wordpress/app.json
Normal file
10
apps/wordpress/app.json
Normal file
@@ -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"
|
||||
}
|
||||
22
apps/wordpress/versions/1.0.0/config.json
Normal file
22
apps/wordpress/versions/1.0.0/config.json
Normal file
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
150
catalog.json
Normal file
150
catalog.json
Normal file
@@ -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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user