Compare commits

..

28 Commits

Author SHA1 Message Date
gyurix
becd96416a Refactor domain configuration to use a unified DOMAIN key across Nextcloud JSON files 2025-09-06 17:04:41 +02:00
gyurix
09371f8b4b Update DOMAIN key in service-nextcloud.json to use NEXTCLOUD_TRUSTED_DOMAINS 2025-09-06 17:03:16 +02:00
gyurix
56e6e4e789 Update description in template.json to reflect new identity management features 2025-09-06 16:27:40 +02:00
gyurix
f5130b0c57 Update volume destination paths in service-matrix.json and service-pocketid.json for PostgreSQL data 2025-09-02 14:16:22 +02:00
gyurix
1ef0fd1f5c Update EXTRA configuration in service-matrix.json for container cleanup 2025-09-02 11:31:52 +02:00
gyurix
ca41276ecf Remove unnecessary EXTRA configuration from service-matrix.json 2025-09-02 11:14:15 +02:00
gyurix
7a2a4e90ed Update volume mapping in service-matrix.json for improved clarity 2025-09-02 11:08:41 +02:00
gyurix
4bb61da615 Remove unused PORTS configuration from service-matrix.json 2025-09-02 10:56:19 +02:00
gyurix
e3862bbeb7 Rename matrixserver-setup to matrixserver-dbinit and add new volume mapping for input data 2025-09-02 10:33:26 +02:00
gyurix
fc0197dcf1 Refactor configuration file structure for enhanced readability and organization 2025-09-01 16:22:29 +02:00
gyurix
c30a5ceadb Update SUBPATH details in template.json for clearer usage instructions 2025-09-01 10:17:54 +02:00
gyurix
fcc452af8a Rename LOCAL_PATH to LOCATION in domain-matrix-admin.json for clarity 2025-09-01 10:09:57 +02:00
gyurix
daaa19d32a Update domain keys in configuration files for consistency and clarity 2025-09-01 10:05:22 +02:00
gyurix
2129a7e8f9 Refactor matrix configuration structure for improved clarity and maintainability 2025-08-31 19:57:40 +02:00
gyurix
22e37d90af Update domain and path keys in configuration files for consistency 2025-08-31 14:46:04 +02:00
gyurix
efd077e41a Add DOMAIN_ADMIN and SUB_PATH fields to configuration files 2025-08-31 14:38:12 +02:00
gyurix
3fbdace533 Rename matrix server components and add finalize setup configuration 2025-08-31 14:27:09 +02:00
gyurix
f065b4f6ce Add required fields and types to matrix template configuration 2025-08-31 14:18:20 +02:00
gyurix
05f0a6d10f Add matrix service configuration and update related settings 2025-08-31 14:14:34 +02:00
gyurix
01ca5a196c Refactor database connection string to enhance clarity and consistency 2025-08-31 12:21:26 +02:00
gyurix
b5c693bc8b Add initial configuration files for matrix service and firewalls 2025-08-31 12:15:16 +02:00
gyurix
37e93e661d Update port configuration from 3000 to 1411 in domain, firewall, and service JSON files 2025-08-30 09:48:49 +02:00
gyurix
9c0932bdd4 Rename POSTGRES_CONNECTION_STRING to DB_CONNECTION_STRING in pocketid-secret.json 2025-08-30 09:38:35 +02:00
gyurix
a8f4533991 Update PocketID image reference in service-pocketid.json to use versioned tag 2025-08-30 09:36:14 +02:00
gyurix
feace468dc Update PostgreSQL volume paths in service-pocketid.json 2025-08-30 09:27:26 +02:00
gyurix
4e19534cae Update SERVICE_NAME in domain-pocketid.json from 'vaultwarden' to 'pocketid' 2025-08-30 09:22:15 +02:00
gyurix
5fd409e79c Update Pocketid icon in applications-tree.json to a new SVG representation 2025-08-30 09:21:01 +02:00
gyurix
0e487b02c5 Add PocketID configuration files for PostgreSQL integration and firewall settings 2025-08-30 08:56:08 +02:00
20 changed files with 1237 additions and 49 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,63 @@
{
"main": {
"SERVICE_NAME": "matrix",
"DOMAIN": "#ADMINDOMAIN"
},
"containers": [
{
"IMAGE": "safebox/domain-check",
"UPDATE": "true",
"MEMORY": "64M",
"NAME": "domain_checker",
"ROLES": "domain_checker",
"NETWORK": "host",
"SELECTOR": "",
"SCALE": "0",
"EXTRA": "--rm --privileged",
"PRE_START": [],
"DEPEND": [],
"POST_START": [],
"CMD": "",
"ENVS": [
{
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "matrixadmin"
},
{
"PORT": "80"
},
{
"DOMAIN": "#ADMINDOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"LOCATION": "#SUBPATH"
},
{
"OPERATION": "CREATE"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/config/smarthost-domains",
"DEST": "/smarthost-domains",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
]
}
]
}

60
matrix/domain-matrix.json Normal file
View File

@@ -0,0 +1,60 @@
{
"main": {
"SERVICE_NAME": "matrix",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "safebox/domain-check",
"UPDATE": "true",
"MEMORY": "64M",
"NAME": "domain_checker",
"ROLES": "domain_checker",
"NETWORK": "host",
"SELECTOR": "",
"SCALE": "0",
"EXTRA": "--rm --privileged",
"PRE_START": [],
"DEPEND": [],
"POST_START": [],
"CMD": "",
"ENVS": [
{
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "matrixserver"
},
{
"PORT": "8008"
},
{
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"OPERATION": "CREATE"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/config/smarthost-domains",
"DEST": "/smarthost-domains",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
]
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "smarthostbackend"
},
{
"TARGET": "matrixadmin"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "80"
},
{
"COMMENT": "matrixadmin for proxy"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

View File

@@ -0,0 +1,76 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"UPDATE": "true",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "matrixserver"
},
{
"TARGET": "coredns"
},
{
"TYPE": "udp"
},
{
"TARGET_PORT": "53"
},
{
"COMMENT": "matrix nginx access for local dns"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "",
"PRE_START": [],
"POST_START": []
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "matrixserver"
},
{
"TARGET": "smtp"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "25"
},
{
"COMMENT": "matrix to smtp"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "smarthostbackend"
},
{
"TARGET": "matrixserver"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "8008"
},
{
"COMMENT": "matrix"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

29
matrix/matrix-secret.json Normal file
View File

@@ -0,0 +1,29 @@
{
"matrixpostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"matrixserver": {
"DB_TYPE": "psycopg2",
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_HOST": "matrixpostgres-db",
"DB_PORT": "5432",
"SYNAPSE_SERVER_NAME": "#DOMAIN",
"SYNAPSE_REPORT_STATS": "no",
"ADMIN_USERNAME": "#ADMIN_USERNAME",
"ADMIN_PASSWORD": "#ADMIN_PASSWORD",
"SYNAPSE_CONFIG_DIR": "/data",
"SYNAPSE_CONFIG_PATH": "/data/homeserver.yaml",
"SYNAPSE_DATA_DIR": "/data"
},
"matrixadmin": {
"REACT_APP_SERVER": "https://#DOMAIN",
"BASE_PATH": "#ADMINDOMAIN",
"ADMINDOMAIN": "#ADMINDOMAIN",
"SUBPATH": "#SUBPATH"
}
}

199
matrix/service-matrix.json Normal file
View File

@@ -0,0 +1,199 @@
{
"main": {
"SERVICE_NAME": "matrix",
"DOMAIN": "DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "matrix-init",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"SOURCE": "USER_DATA",
"DEST": "/etc/user/data",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/matrix/db && mkdir -p /etc/user/data/matrix/synapse",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "postgres:alpine",
"UPDATE": "true",
"NAME": "matrixpostgres-db",
"ROLES": "postgres-db",
"MEMORY": "256M",
"NETWORK": "matrix-net",
"SELECTOR": "matrixpostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/matrix/db",
"DEST": "/var/lib/postgresql/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"ENVS": [
{
"POSTGRES_INITDB_ARGS": "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
}
],
"EXTRA": "--restart unless-stopped",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [],
"POST_START": []
},
{
"IMAGE": "matrixdotorg/synapse",
"UPDATE": "true",
"NAME": "matrixserver-init",
"ROLES": "backend-www",
"MEMORY": "512M",
"NETWORK": "matrix-net",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/matrix/synapse",
"DEST": "/data",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "bash -c",
"CMD": "if [ ! -f /data/homeserver.yaml ]; then /start.py generate ; else exit 1; fi",
"PRE_START": [],
"POST_START": []
},
{
"IMAGE": "safebox/matrix-setup:latest",
"UPDATE": "true",
"NAME": "matrixserver-dbinit",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/matrix/synapse",
"DEST": "/data",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "matrixdotorg/synapse",
"UPDATE": "true",
"NAME": "matrixserver-app",
"ROLES": "backend-www",
"MEMORY": "512M",
"NETWORK": "matrix-net",
"SELECTOR": "matrixserver",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/matrix/synapse",
"DEST": "/data",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"EXTRA": "--restart unless-stopped",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [],
"POST_START": [
"firewall-matrix",
"domain-matrix"
]
},
{
"IMAGE": "safebox/matrix-setup:latest",
"UPDATE": "true",
"NAME": "matrixserver-finalize",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/matrix/synapse",
"DEST": "/data",
"TYPE": "rw"
},
{
"SOURCE": "SHARED",
"DEST": "/var/tmp/shared",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/matrix/matrix.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "awesometechnologies/synapse-admin",
"UPDATE": "true",
"NAME": "matrixadmin",
"ROLES": "backend-www",
"MEMORY": "128M",
"NETWORK": "matrix-net",
"SELECTOR": "matrixadmin",
"VOLUMES": [],
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"TYPE": "tcp"
}
],
"EXTRA": "--restart unless-stopped",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [],
"POST_START": [
"firewall-matrix-admin",
"domain-matrix-admin"
]
}
]
}

69
matrix/template.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,48 +1,60 @@
{
"main": {
"SERVICE_NAME": "nextcloud",
"DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS"
{
"main": {
"SERVICE_NAME": "nextcloud",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "safebox/domain-check",
"UPDATE": "true",
"MEMORY": "64M",
"NAME": "domain_checker",
"ROLES": "domain_checker",
"NETWORK": "host",
"SELECTOR": "",
"SCALE": "0",
"EXTRA": "--rm --privileged",
"PRE_START": [],
"DEPEND": [],
"POST_START": [],
"CMD": "",
"ENVS": [
{ "PROXY": "smarthostloadbalancer" },
{ "TARGET": "nextcloudnginx" },
{ "PORT": "80" },
{ "DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS" },
{ "SMARTHOST_PROXY_PATH": "/smarthost-domains" },
{ "OPERATION": "CREATE" }
],
"VOLUMES": [
{
"SOURCE": "/etc/user/config/smarthost-domains",
"DEST": "/smarthost-domains",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
]
}
]
}
{
"IMAGE": "safebox/domain-check",
"UPDATE": "true",
"MEMORY": "64M",
"NAME": "domain_checker",
"ROLES": "domain_checker",
"NETWORK": "host",
"SELECTOR": "",
"SCALE": "0",
"EXTRA": "--rm --privileged",
"PRE_START": [],
"DEPEND": [],
"POST_START": [],
"CMD": "",
"ENVS": [
{
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "nextcloudnginx"
},
{
"PORT": "80"
},
{
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"OPERATION": "CREATE"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/config/smarthost-domains",
"DEST": "/smarthost-domains",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
]
}
]
}

View File

@@ -8,8 +8,8 @@
"nextcloudphp": {
"NEXTCLOUD_ADMIN_USER": "#NEXTCLOUD_ADMIN_USER",
"NEXTCLOUD_ADMIN_PASSWORD": "#NEXTCLOUD_ADMIN_PASSWORD",
"NEXTCLOUD_TRUSTED_DOMAINS": "#NEXTCLOUD_TRUSTED_DOMAINS",
"OVERWRITEHOST": "#NEXTCLOUD_TRUSTED_DOMAINS",
"DOMAIN": "#DOMAIN",
"OVERWRITEHOST": "#DOMAIN",
"NEXTCLOUD_DATA_DIR": "/var/data",
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",

View File

@@ -10,7 +10,7 @@
"details": "",
"info": "Nextcloud domain info",
"description": "Domain",
"key": "NEXTCLOUD_TRUSTED_DOMAINS",
"key": "DOMAIN",
"value": "",
"required": "true"
},

View File

@@ -0,0 +1,60 @@
{
"main": {
"SERVICE_NAME": "pocketid",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "safebox/domain-check",
"UPDATE": "true",
"MEMORY": "64M",
"NAME": "domain_checker",
"ROLES": "domain_checker",
"NETWORK": "host",
"SELECTOR": "",
"SCALE": "0",
"EXTRA": "--rm --privileged",
"PRE_START": [],
"DEPEND": [],
"POST_START": [],
"CMD": "",
"ENVS": [
{
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "pocketid-app"
},
{
"PORT": "1411"
},
{
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"OPERATION": "CREATE"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/config/smarthost-domains",
"DEST": "/smarthost-domains",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
]
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "coredns"
},
{
"TARGET": "pocketid-app"
},
{
"TYPE": "udp"
},
{
"TARGET_PORT": "53"
},
{
"COMMENT": "dns for pocketid-app"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "pocketid-app"
},
{
"TARGET": "smtp"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "25"
},
{
"COMMENT": "smtp for pocketid-app"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

View File

@@ -0,0 +1,75 @@
{
"main": {
"SERVICE_NAME": "firewalls",
"DOMAIN": "null"
},
"containers": [
{
"IMAGE": "safebox/firewall",
"NAME": "firewall",
"MEMORY": "64M",
"NETWORK": "host",
"SCALE": "0",
"VOLUMES": [
{
"SOURCE": "/run/",
"DEST": "/run/",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/config/services",
"DEST": "/services",
"TYPE": "ro"
},
{
"SOURCE": "/etc/system/data/dns/hosts.local",
"DEST": "/etc/dns/hosts.local",
"TYPE": "ro"
},
{
"SOURCE": "/var/run/docker.sock",
"DEST": "/var/run/docker.sock",
"TYPE": "rw"
}
],
"PORTS": [],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "smarthostbackend"
},
{
"TARGET": "pocketid-app"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "1411"
},
{
"COMMENT": "proxy for pocketid-app"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

View File

@@ -0,0 +1,16 @@
{
"pocketidpostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"pocketidapp": {
"PUBLIC_APP_URL": "https://#DOMAIN",
"TRUST_PROXY": "true",
"PUID": "1000",
"PGID": "1000",
"DB_PROVIDER": "postgres",
"DB_CONNECTION_STRING": "postgresql://#POSTGRES_USER:#POSTGRES_PASSWORD@pocketidpostgres-db:5432/#POSTGRES_DB"
}
}

View File

@@ -0,0 +1,99 @@
{
"main": {
"SERVICE_NAME": "pocketid",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "pocketid-init",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"SOURCE": "USER_DATA",
"DEST": "/etc/user/data",
"TYPE": "rw"
}
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /mkdir -p /etc/user/data/pocketid/db",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "postgres:16-alpine",
"NAME": "pocketidpostgres-db",
"UPDATE": "true",
"ROLES": "postgres-db patroni",
"MEMORY": "256M",
"NETWORK": "pocketid-net",
"SELECTOR": "pocketidpostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/pocketid/db",
"DEST": "/var/lib/postgresql/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/pocketid/pocketid.json"
],
"ENVS": [
{
"POSTGRES_INITDB_ARGS": "--encoding=UTF8 --locale=C"
}
],
"EXTRA": "--label logging=promtail_user --label logging_jobname=containers --restart unless-stopped",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [],
"POST_START": []
},
{
"IMAGE": "11notes/pocket-id:1",
"UPDATE": "true",
"NAME": "pocketidapp",
"DNS": [
"coredns"
],
"MEMORY": "256M",
"SELECTOR": "pocketid-app",
"NETWORK": "pocketid-net",
"VOLUMES": [],
"PORTS": [
{
"SOURCE": "null",
"DEST": "1411",
"TYPE": "tcp"
}
],
"EXTRA": "--label logging=promtail_user --label logging_jobname=containers --restart unless-stopped",
"ENV_FILES": [
"/etc/user/secret/pocketid/pocketid.json"
],
"DEPEND": [],
"START_ON_BOOT": "true",
"CMD": "null",
"PRE_START": "null",
"POST_START": [
"firewall-pocketid",
"firewall-pocketid-dns",
"firewall-pocketid-smtp",
"domain-pocketid"
]
}
]
}

43
pocketid/template.json Normal file
View File

@@ -0,0 +1,43 @@
{
"name": "Pocketid",
"title": "pocketid",
"subtitle": "Identity management",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQzIDBIN0MzLjEzNDAxIDAgMCAzLjEzNDAxIDAgN1Y0M0MwIDQ2Ljg2NiAzLjEzNDAxIDUwIDcgNTBINDNDNDYuODY2IDUwIDUwIDQ2Ljg2NiA1MCA0M1Y3QzUwIDMuMTM0MDEgNDYuODY2IDAgNDMgMFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yNC40ODc4IDdDMzEuOTM4NCA3IDM4IDEzLjEzNjMgMzggMjAuNjc4N0MzOCAyMy42NDI2IDM3LjA3OSAyNi40NjMyIDM1LjMzNjIgMjguODM0MkMzMy42Mjc4IDMxLjE1OTUgMzEuMjkwMSAzMi44NDg2IDI4LjU3NTEgMzMuNzE5OEwyNy44MjQ3IDMzLjk2MUwyNi4wMzY0IDI1LjAzMTVMMjYuNTMxMSAyNC43ODkyQzI4LjE0NTkgMjMuOTk5IDI5LjE4OTYgMjIuMzE1NiAyOS4xODk2IDIwLjUwMTJDMjkuMTg5NiAxNy44NzY0IDI3LjA4MDUgMTUuNzQwOSAyNC40ODgxIDE1Ljc0MDlDMjEuODk1OCAxNS43NDA5IDE5Ljc4NiAxNy44NzY0IDE5Ljc4NiAyMC41MDEyQzE5Ljc4NiAyMi4zMTU2IDIwLjgzIDIzLjk5OSAyMi40NDQ4IDI0Ljc4OTJMMjIuOTMwMiAyNS4wMjcyTDIwLjA0OTUgNDNIMTJWN0gyNC40ODgxSDI0LjQ4NzhaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K",
"description": "PocketID is an open-source identity and access management solution that provides secure and efficient user authentication and authorization for web applications and services.",
"fields": [
{
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Postgres database name",
"key": "POSTGRES_DB",
"value": "",
"required": "true",
"generated": ""
},
{
"description": "Postgres username",
"key": "POSTGRES_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "Postgres root user password",
"key": "POSTGRES_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
}
]
}