Phase 4: service registry — index.json + 4 service manifests
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"id": "calendar",
|
||||
"name": "Calendar & Contacts",
|
||||
"description": "CalDAV/CardDAV server based on Radicale. Provides calendar and contacts sync for all your devices.",
|
||||
"version": "1.0.0",
|
||||
"author": "roof",
|
||||
"image": "tomsquest/docker-radicale:latest",
|
||||
"volumes": [{"name": "radicale-data", "mount": "/data"}],
|
||||
"env": [],
|
||||
"caddy_route": {"subdomain": "calendar", "upstream": "cell-radicale:5232"},
|
||||
"dns_entry": {"subdomain": "calendar"},
|
||||
"iptables_rules": [{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 5232, "proto": "tcp"}],
|
||||
"container_name": "cell-radicale",
|
||||
"network_ip_var": "RADICALE_IP",
|
||||
"ports": [5232]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"id": "email",
|
||||
"name": "Email Server",
|
||||
"description": "Full email server: Postfix (SMTP) + Dovecot (IMAP). Requires a domain and proper DNS MX records.",
|
||||
"version": "1.0.0",
|
||||
"author": "roof",
|
||||
"image": "mailserver/docker-mailserver:latest",
|
||||
"volumes": [{"name": "mail-data", "mount": "/var/mail"}, {"name": "mail-state", "mount": "/var/mail-state"}],
|
||||
"env": [{"key": "DOMAINNAME", "value": "${CELL_DOMAIN}"}, {"key": "HOSTNAME", "value": "mail"}],
|
||||
"caddy_route": null,
|
||||
"dns_entry": {"subdomain": "mail"},
|
||||
"iptables_rules": [
|
||||
{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 25, "proto": "tcp"},
|
||||
{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 587, "proto": "tcp"},
|
||||
{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 993, "proto": "tcp"}
|
||||
],
|
||||
"container_name": "cell-mail",
|
||||
"network_ip_var": "MAIL_IP",
|
||||
"ports": [25, 587, 993]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"id": "files",
|
||||
"name": "File Storage",
|
||||
"description": "WebDAV file storage. Mount as a network drive or use the web interface.",
|
||||
"version": "1.0.0",
|
||||
"author": "roof",
|
||||
"image": "bytemark/webdav:latest",
|
||||
"volumes": [{"name": "webdav-data", "mount": "/var/lib/dav"}],
|
||||
"env": [{"key": "AUTH_TYPE", "value": "Basic"}, {"key": "USERNAME", "value": "admin"}, {"key": "PASSWORD", "value": "${WEBDAV_PASSWORD}"}],
|
||||
"caddy_route": {"subdomain": "files", "upstream": "cell-webdav:80"},
|
||||
"dns_entry": {"subdomain": "files"},
|
||||
"iptables_rules": [{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 80, "proto": "tcp"}],
|
||||
"container_name": "cell-webdav",
|
||||
"network_ip_var": "WEBDAV_IP",
|
||||
"ports": [80]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"id": "webmail",
|
||||
"name": "Webmail",
|
||||
"description": "Rainloop webmail UI. Requires email service to be installed first.",
|
||||
"version": "1.0.0",
|
||||
"author": "roof",
|
||||
"image": "hardware/rainloop",
|
||||
"volumes": [{"name": "rainloop-data", "mount": "/rainloop/data"}],
|
||||
"env": [],
|
||||
"caddy_route": {"subdomain": "webmail", "upstream": "cell-rainloop:8888"},
|
||||
"dns_entry": {"subdomain": "webmail"},
|
||||
"iptables_rules": [{"type": "ACCEPT", "dest_ip": "${SERVICE_IP}", "dest_port": 8888, "proto": "tcp"}],
|
||||
"container_name": "cell-rainloop",
|
||||
"network_ip_var": "RAINLOOP_IP",
|
||||
"ports": [8888],
|
||||
"requires": ["email"]
|
||||
}
|
||||
Reference in New Issue
Block a user