Add CT installers and metadata for six apps

Add container templates, install scripts and metadata for six applications: BirdNET-Go, ERPNext, Jitsi Meet, Storybook, Storyteller and Tube Archivist. New files include ct/* scripts (container templates and update handlers), install/* scripts (installation and systemd service setup, dependency installation and build steps) and json/* metadata entries (app catalog data, default resources, ports and notes). Each install script configures required dependencies, creates services, and prepares runtime configuration (e.g. DB, ElasticSearch, Node/Python environments, ffmpeg/Readium). This commit enables automated LXC provisioning and update flows for these apps.
This commit is contained in:
CanbiZ (MickLesk)
2026-03-25 10:21:42 +01:00
parent adcb155210
commit 9d21dfa112
18 changed files with 1135 additions and 0 deletions

48
json/birdnet-go.json Normal file
View File

@@ -0,0 +1,48 @@
{
"name": "BirdNET-Go",
"slug": "birdnet-go",
"categories": [
9
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://github.com/tphakala/birdnet-go/wiki",
"website": "https://github.com/tphakala/birdnet-go",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/birdnet-go.webp",
"config_path": "/opt/birdnet-go/data",
"description": "BirdNET-Go is an AI-powered solution for continuous avian monitoring and identification, providing 24/7 realtime bird song analysis.",
"install_methods": [
{
"type": "default",
"script": "ct/birdnet-go.sh",
"resources": {
"cpu": 4,
"ram": 2048,
"hdd": 12,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Audio device passthrough is required for realtime monitoring. Add the audio device to the LXC configuration.",
"type": "warning"
},
{
"text": "Data and recordings are stored in `/opt/birdnet-go/data`.",
"type": "info"
},
{
"text": "GPU acceleration is not available in the LXC version. CPU-based transcription is used.",
"type": "info"
}
]
}

48
json/erpnext.json Normal file
View File

@@ -0,0 +1,48 @@
{
"name": "ERPNext",
"slug": "erpnext",
"categories": [
25
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8000,
"documentation": "https://docs.erpnext.com/",
"website": "https://erpnext.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/erpnext.webp",
"config_path": "/opt/frappe-bench/.env",
"description": "ERPNext is a powerful, intuitive and open-source ERP system for managing accounting, inventory, manufacturing, CRM, projects, HR and more.",
"install_methods": [
{
"type": "default",
"script": "ct/erpnext.sh",
"resources": {
"cpu": 4,
"ram": 4096,
"hdd": 20,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "Administrator",
"password": null
},
"notes": [
{
"text": "Admin password is stored in `/opt/frappe-bench/.env`.",
"type": "info"
},
{
"text": "The default site name is `site1.local`. Configure your domain in Frappe settings.",
"type": "info"
},
{
"text": "Run `bench update` from `/opt/frappe-bench` to update ERPNext manually.",
"type": "info"
}
]
}

48
json/jitsi.json Normal file
View File

@@ -0,0 +1,48 @@
{
"name": "Jitsi Meet",
"slug": "jitsi",
"categories": [
0
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 443,
"documentation": "https://jitsi.github.io/handbook/",
"website": "https://jitsi.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/jitsi.webp",
"config_path": "/etc/jitsi",
"description": "Jitsi Meet is a set of open-source projects for secure, simple and scalable video conferences with state-of-the-art video quality and features.",
"install_methods": [
{
"type": "default",
"script": "ct/jitsi.sh",
"resources": {
"cpu": 4,
"ram": 4096,
"hdd": 12,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Uses a self-signed certificate by default. Your browser will show a security warning.",
"type": "info"
},
{
"text": "Port 10000/UDP must be forwarded to the container for video/audio to work properly.",
"type": "warning"
},
{
"text": "Configuration files are located in `/etc/jitsi/`.",
"type": "info"
}
]
}

44
json/storybook.json Normal file
View File

@@ -0,0 +1,44 @@
{
"name": "Storybook",
"slug": "storybook",
"categories": [
20
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 6006,
"documentation": "https://storybook.js.org/docs",
"website": "https://storybook.js.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/storybook.webp",
"config_path": "",
"description": "Storybook is a frontend workshop for building UI components and pages in isolation. It's used for UI development, testing, and documentation.",
"install_methods": [
{
"type": "default",
"script": "ct/storybook.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The installer uses an interactive setup wizard (like fumadocs). Follow the prompts during installation.",
"type": "info"
},
{
"text": "Storybook runs in development mode on port 6006.",
"type": "info"
}
]
}

48
json/storyteller.json Normal file
View File

@@ -0,0 +1,48 @@
{
"name": "Storyteller",
"slug": "storyteller",
"categories": [
13
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8001,
"documentation": "https://storyteller-platform.dev/docs/welcome",
"website": "https://storyteller-platform.dev/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/storyteller.webp",
"config_path": "/opt/storyteller/.env",
"description": "Storyteller is a self-hosted platform for creating and reading ebooks with synced narration, combining audiobooks and ebooks with automatic synchronization.",
"install_methods": [
{
"type": "default",
"script": "ct/storyteller.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 16,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Minimum 8GB RAM recommended. AI-based transcription is resource-intensive.",
"type": "warning"
},
{
"text": "Secret key is stored in `/opt/storyteller/.env`.",
"type": "info"
},
{
"text": "GPU acceleration is not available in the LXC version. Use CPU-based transcription.",
"type": "info"
}
]
}

52
json/tubearchivist.json Normal file
View File

@@ -0,0 +1,52 @@
{
"name": "Tube Archivist",
"slug": "tubearchivist",
"categories": [
13
],
"date_created": "2026-03-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8000,
"documentation": "https://docs.tubearchivist.com/",
"website": "https://github.com/tubearchivist/tubearchivist",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tube-archivist.webp",
"config_path": "/opt/tubearchivist/.env",
"description": "Tube Archivist is a self-hosted YouTube media collection manager that indexes your video collection with metadata for organizing, searching, and playing archived YouTube videos offline.",
"install_methods": [
{
"type": "default",
"script": "ct/tubearchivist.sh",
"resources": {
"cpu": 4,
"ram": 6144,
"hdd": 30,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": null
},
"notes": [
{
"text": "Requires `vm.max_map_count=262144` on the Proxmox host. Run `sysctl -w vm.max_map_count=262144` on the host and add it to `/etc/sysctl.conf` for persistence.",
"type": "warning"
},
{
"text": "ElasticSearch is configured with 1GB heap. Adjust `/etc/elasticsearch/jvm.options.d/heap.options` for larger collections.",
"type": "info"
},
{
"text": "Admin password is stored in `/opt/tubearchivist/.env`.",
"type": "info"
},
{
"text": "Minimum 6GB RAM recommended. ElasticSearch alone requires 2GB+.",
"type": "warning"
}
]
}