Compare commits

..

83 Commits

Author SHA1 Message Date
37e7b83077 Merge pull request 'dev' (#60) from dev into main
Reviewed-on: #60
2025-09-06 15:05:25 +00:00
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
d723b4daf5 Merge pull request 'Update description in template.json to reflect new identity management features' (#59) from dev into main
Reviewed-on: #59
2025-09-06 14:28:58 +00:00
gyurix
56e6e4e789 Update description in template.json to reflect new identity management features 2025-09-06 16:27:40 +02:00
366fa1d6b8 Merge pull request 'Update volume destination paths in service-matrix.json and service-pocketid.json for PostgreSQL data' (#58) from dev into main
Reviewed-on: #58
2025-09-02 12:16:51 +00: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
082ae8fcf8 Merge pull request 'Update EXTRA configuration in service-matrix.json for container cleanup' (#57) from dev into main
Reviewed-on: #57
2025-09-02 09:50:06 +00:00
gyurix
1ef0fd1f5c Update EXTRA configuration in service-matrix.json for container cleanup 2025-09-02 11:31:52 +02:00
984a61d036 Merge pull request 'Remove unnecessary EXTRA configuration from service-matrix.json' (#56) from dev into main
Reviewed-on: #56
2025-09-02 09:17:42 +00:00
gyurix
ca41276ecf Remove unnecessary EXTRA configuration from service-matrix.json 2025-09-02 11:14:15 +02:00
08c4e49d82 Merge pull request 'Update volume mapping in service-matrix.json for improved clarity' (#55) from dev into main
Reviewed-on: #55
2025-09-02 09:09:09 +00:00
gyurix
7a2a4e90ed Update volume mapping in service-matrix.json for improved clarity 2025-09-02 11:08:41 +02:00
b232e22427 Merge pull request 'Remove unused PORTS configuration from service-matrix.json' (#54) from dev into main
Reviewed-on: #54
2025-09-02 08:56:46 +00:00
gyurix
4bb61da615 Remove unused PORTS configuration from service-matrix.json 2025-09-02 10:56:19 +02:00
2649856b30 Merge pull request 'Rename matrixserver-setup to matrixserver-dbinit and add new volume mapping for input data' (#53) from dev into main
Reviewed-on: #53
2025-09-02 08:35:00 +00: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
bf944dee1b Merge pull request 'Refactor configuration file structure for enhanced readability and organization' (#52) from dev into main
Reviewed-on: #52
2025-09-01 14:23:30 +00:00
gyurix
fc0197dcf1 Refactor configuration file structure for enhanced readability and organization 2025-09-01 16:22:29 +02:00
bc26466fab Merge pull request 'Update SUBPATH details in template.json for clearer usage instructions' (#51) from dev into main
Reviewed-on: #51
2025-09-01 08:18:31 +00:00
gyurix
c30a5ceadb Update SUBPATH details in template.json for clearer usage instructions 2025-09-01 10:17:54 +02:00
24b9f416b5 Merge pull request 'Rename LOCAL_PATH to LOCATION in domain-matrix-admin.json for clarity' (#50) from dev into main
Reviewed-on: #50
2025-09-01 08:10:32 +00:00
gyurix
fcc452af8a Rename LOCAL_PATH to LOCATION in domain-matrix-admin.json for clarity 2025-09-01 10:09:57 +02:00
5598cd2e4e Merge pull request 'Update domain keys in configuration files for consistency and clarity' (#49) from dev into main
Reviewed-on: #49
2025-09-01 08:06:01 +00:00
gyurix
daaa19d32a Update domain keys in configuration files for consistency and clarity 2025-09-01 10:05:22 +02:00
a860503297 Merge pull request 'Refactor matrix configuration structure for improved clarity and maintainability' (#48) from dev into main
Reviewed-on: #48
2025-08-31 17:58:06 +00:00
gyurix
2129a7e8f9 Refactor matrix configuration structure for improved clarity and maintainability 2025-08-31 19:57:40 +02:00
aecfab545d Merge pull request 'Update domain and path keys in configuration files for consistency' (#47) from dev into main
Reviewed-on: #47
2025-08-31 12:46:36 +00:00
gyurix
22e37d90af Update domain and path keys in configuration files for consistency 2025-08-31 14:46:04 +02:00
cf27b29d98 Merge pull request 'Add DOMAIN_ADMIN and SUB_PATH fields to configuration files' (#46) from dev into main
Reviewed-on: #46
2025-08-31 12:39:28 +00:00
gyurix
efd077e41a Add DOMAIN_ADMIN and SUB_PATH fields to configuration files 2025-08-31 14:38:12 +02:00
234f2b8379 Merge pull request 'Rename matrix server components and add finalize setup configuration' (#45) from dev into main
Reviewed-on: #45
2025-08-31 12:27:43 +00:00
gyurix
3fbdace533 Rename matrix server components and add finalize setup configuration 2025-08-31 14:27:09 +02:00
858ddb310a Merge pull request 'Add required fields and types to matrix template configuration' (#44) from dev into main
Reviewed-on: #44
2025-08-31 12:19:10 +00:00
gyurix
f065b4f6ce Add required fields and types to matrix template configuration 2025-08-31 14:18:20 +02:00
c48ee36943 Merge pull request 'Add matrix service configuration and update related settings' (#43) from dev into main
Reviewed-on: #43
2025-08-31 12:15:42 +00:00
gyurix
05f0a6d10f Add matrix service configuration and update related settings 2025-08-31 14:14:34 +02:00
b6bf808328 Merge pull request 'Refactor database connection string to enhance clarity and consistency' (#42) from dev into main
Reviewed-on: #42
2025-08-31 10:22:32 +00:00
gyurix
01ca5a196c Refactor database connection string to enhance clarity and consistency 2025-08-31 12:21:26 +02:00
73419aeff8 Merge pull request 'Add initial configuration files for matrix service and firewalls' (#41) from dev into main
Reviewed-on: #41
2025-08-31 10:18:09 +00:00
gyurix
b5c693bc8b Add initial configuration files for matrix service and firewalls 2025-08-31 12:15:16 +02:00
6bf99e7a1a Merge pull request 'Update port configuration from 3000 to 1411 in domain, firewall, and service JSON files' (#40) from dev into main
Reviewed-on: #40
2025-08-30 07:49:49 +00: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
d46cc3e801 Merge pull request 'Rename POSTGRES_CONNECTION_STRING to DB_CONNECTION_STRING in pocketid-secret.json' (#39) from dev into main
Reviewed-on: #39
2025-08-30 07:39:42 +00:00
gyurix
9c0932bdd4 Rename POSTGRES_CONNECTION_STRING to DB_CONNECTION_STRING in pocketid-secret.json 2025-08-30 09:38:35 +02:00
885d896777 Merge pull request 'Update PocketID image reference in service-pocketid.json to use versioned tag' (#38) from dev into main
Reviewed-on: #38
2025-08-30 07:36:45 +00:00
gyurix
a8f4533991 Update PocketID image reference in service-pocketid.json to use versioned tag 2025-08-30 09:36:14 +02:00
49491e3116 Merge pull request 'Update PostgreSQL volume paths in service-pocketid.json' (#37) from dev into main
Reviewed-on: #37
2025-08-30 07:28:35 +00:00
gyurix
feace468dc Update PostgreSQL volume paths in service-pocketid.json 2025-08-30 09:27:26 +02:00
00d3f23702 Merge pull request 'dev' (#36) from dev into main
Reviewed-on: #36
2025-08-30 07:23:03 +00: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
7019222a22 Merge pull request 'Refactor Vaultwarden configuration to replace MariaDB with PostgreSQL, update related keys and paths, and remove unnecessary log directory.' (#35) from dev into main
Reviewed-on: #35
2025-08-29 15:21:12 +00:00
gyurix
3f73d1e42d Refactor Vaultwarden configuration to replace MariaDB with PostgreSQL, update related keys and paths, and remove unnecessary log directory. 2025-08-29 17:20:14 +02:00
927d7e669e Merge pull request 'Update Gitea service configuration to change SERVICE_NAME and DOMAIN settings' (#34) from dev into main
Reviewed-on: #34
2025-08-29 13:39:36 +00:00
gyurix
6d65026806 Update Gitea service configuration to change SERVICE_NAME and DOMAIN settings 2025-08-29 15:38:32 +02:00
892e05fb60 Merge pull request 'Update Gitea secret configuration to change database host to 'giteapostgres-db'' (#33) from dev into main
Reviewed-on: #33
2025-08-29 12:48:52 +00:00
gyurix
5aca166c34 Update Gitea secret configuration to change database host to 'giteapostgres-db' 2025-08-29 14:48:12 +02:00
ea7ee3aec9 Merge pull request 'Update Gitea configuration to replace 'gitea' with 'gitea-app' in service and firewall settings' (#32) from dev into main
Reviewed-on: #32
2025-08-29 12:40:11 +00:00
gyurix
70e144b7f8 Update Gitea configuration to replace 'gitea' with 'gitea-app' in service and firewall settings 2025-08-29 14:39:46 +02:00
23501f7760 Merge pull request 'Update Gitea service configuration to use latest image tag for Gitea' (#31) from dev into main
Reviewed-on: #31
2025-08-29 12:31:30 +00:00
gyurix
fd179866b2 Update Gitea service configuration to use latest image tag for Gitea 2025-08-29 14:31:01 +02:00
ecc21d1639 Merge pull request 'dev' (#30) from dev into main
Reviewed-on: #30
2025-08-29 12:28:20 +00:00
gyurix
46ff9e08cc Fix typo in Gitea service configuration ENV_FILES path 2025-08-29 14:27:48 +02:00
gyurix
5de24e19fe Update Gitea service configuration to use absolute path for ENV_FILES 2025-08-29 14:27:29 +02:00
d64872f85e Merge pull request 'dev' (#29) from dev into main
Reviewed-on: #29
2025-08-29 12:25:21 +00:00
gyurix
d6fe96f2c7 Update Gitea service configuration to use 'gitea.json' for ENV_FILES and format DNS entries 2025-08-29 14:24:52 +02:00
gyurix
e62029bca4 Remove unnecessary option from MAIL_ENABLE in Gitea template configuration 2025-08-29 14:22:20 +02:00
e928cca06a Merge pull request 'Refactor service configurations to improve compatibility and streamline setup process' (#28) from dev into main
Reviewed-on: #28
2025-08-29 12:19:41 +00:00
gyurix
31c72181b4 Refactor service configurations to improve compatibility and streamline setup process 2025-08-29 14:19:09 +02:00
a0cced089b Merge pull request 'Update Nextcloud PostgreSQL image to version 15 and add Gitea configuration files for PostgreSQL and firewall services' (#27) from dev into main
Reviewed-on: #27
2025-08-29 12:17:32 +00:00
gyurix
459ca0e019 Update Nextcloud PostgreSQL image to version 15 and add Gitea configuration files for PostgreSQL and firewall services 2025-08-29 14:16:43 +02:00
e43b20a94c Merge pull request 'Update Nextcloud configuration to use PostgreSQL instead of MariaDB and adjust related settings' (#26) from dev into main
Reviewed-on: #26
2025-08-29 08:21:01 +00:00
gyurix
324ad45ef3 Update Nextcloud configuration to use PostgreSQL instead of MariaDB and adjust related settings 2025-08-29 10:19:39 +02:00
ac7c52def1 Merge pull request 'Add .gitignore, update Redis URL and domain placeholders, and expand outline secret configuration' (#25) from dev into main
Reviewed-on: #25
2025-08-29 06:15:38 +00:00
gyurix
4b91fa6f3f Add .gitignore, update Redis URL and domain placeholders, and expand outline secret configuration 2025-08-29 08:14:08 +02:00
f26a4d60d9 Merge pull request 'Update Jellyfin service configuration to use version placeholder and add version metadata to template' (#24) from dev into main
Reviewed-on: #24
2025-08-25 08:45:05 +00:00
gyurix
f4f66398de Update Jellyfin service configuration to use version placeholder and add version metadata to template 2025-08-25 10:44:18 +02:00
2f343b4b67 Merge pull request 'Add matrix server configuration and update filebrowser command to set ownership' (#23) from dev into main
Reviewed-on: #23
2025-08-24 06:51:34 +00:00
gyurix
b07b6c7800 Add matrix server configuration and update filebrowser command to set ownership 2025-08-23 14:29:12 +02:00
fe5b98391b Merge pull request 'leantime smtp transm vaultw template update' (#22) from dev into main
Reviewed-on: #22
2025-08-14 18:14:08 +00:00
d9c3d3f6c1 leantime smtp transm vaultw template update 2025-08-14 18:54:28 +02:00
42 changed files with 2031 additions and 197 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*tmp*

File diff suppressed because one or more lines are too long

View File

@@ -21,7 +21,7 @@
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/jellyfin/media && mkdir -p /etc/user/data/transmission/downloads/complete",
"CMD": "mkdir -p /etc/user/data/jellyfin/media && chown -R 1000:1000 /etc/user/data/jellyfin/media && mkdir -p /etc/user/data/transmission/downloads/complete",
"PRE_START": "null",
"POST_START": "null"
},

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

@@ -0,0 +1,60 @@
{
"main": {
"SERVICE_NAME": "gitea",
"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": "gitea-app"
},
{
"PORT": "3000"
},
{
"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,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": "gitea-app"
},
{
"TARGET": "coredns"
},
{
"TYPE": "udp"
},
{
"TARGET_PORT": "53"
},
{
"COMMENT": "gitea application 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": "gitea-app"
},
{
"TARGET": "smtp"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "25"
},
{
"COMMENT": "gitea to smtp"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

75
gitea/firewall-gitea.json Normal file
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": "gitea-app"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "3000"
},
{
"COMMENT": "gitea"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

22
gitea/gitea-secret.json Normal file
View File

@@ -0,0 +1,22 @@
{
"giteapostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"giteaapp": {
"GITEA__database__DB_TYPE": "postgres",
"GITEA__database__HOST": "giteapostgres-db",
"GITEA__database__NAME": "#POSTGRES_DB",
"GITEA__database__USER": "#POSTGRES_USER",
"GITEA__database__PASSWD": "#POSTGRES_PASSWORD",
"GITEA__mailer__ENABLED": "#MAIL_ENABLE",
"GITEA__mailer__FROM": "#MAIL_FROM",
"GITEA__mailer__PROTOCOL": "#MAIL_PROTOCOL",
"GITEA__mailer__SMTP_ADDR": "#MAIL_SMTP_ADDR",
"GITEA__mailer__SMTP_PORT": "#MAIL_SMTP_PORT",
"GITEA__mailer__USER": "#MAIL_USER",
"GITEA__mailer__PASSWD": "#MAIL_PASSWORD"
}
}

110
gitea/service-gitea.json Normal file
View File

@@ -0,0 +1,110 @@
{
"main": {
"SERVICE_NAME": "gitea",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "gitea-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 /etc/user/data/gitea/db && mkdir -p /etc/user/data/gitea/data && chown -R 1000:1000 /etc/user/data/gitea",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "postgres:15-alpine",
"NAME": "giteapostgres-db",
"UPDATE": "true",
"ROLES": "postgres-db",
"MEMORY": "256M",
"NETWORK": "gitea-net",
"SELECTOR": "giteapostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/gitea/db",
"DEST": "/var/lib/postgresql/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/gitea/gitea.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": "gitea/gitea:latest",
"UPDATE": "true",
"NAME": "giteaapp",
"DNS": [
"coredns"
],
"MEMORY": "512M",
"SELECTOR": "gitea-app",
"NETWORK": "gitea-net",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/gitea/data",
"DEST": "/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "3000",
"TYPE": "tcp"
},
{
"SOURCE": "null",
"DEST": "22",
"TYPE": "tcp"
}
],
"EXTRA": "null",
"ENV_FILES": [
"/etc/user/secret/gitea/gitea.json"
],
"DEPEND": [],
"START_ON_BOOT": "true",
"CMD": "null",
"PRE_START": "null",
"POST_START": [
"firewall-gitea-dns",
"firewall-gitea-smtp",
"firewall-gitea",
"domain-gitea"
]
}
]
}

87
gitea/template.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -29,7 +29,7 @@
"POST_START": "null"
},
{
"IMAGE": "jellyfin/jellyfin:latest",
"IMAGE": "jellyfin/jellyfin:#VERSION",
"UPDATE": "true",
"NAME": "jellyfin",
"NETWORK": "host",

View File

@@ -9,6 +9,13 @@
"description": "Domain",
"key": "DOMAIN",
"value": ""
},
{
"description": "Version",
"key": "VERSION",
"value": "2025081105",
"info": "Latest stable official version at the time of template creation.",
"advanced": "true"
}
]
}

View File

@@ -11,12 +11,6 @@
"value": "",
"required": "true"
},
{
"description": "Deploy name",
"key": "LEANTIME_SITENAME",
"value": "LeanTime",
"advanced": "true"
},
{
"description": "Language",
"key": "LEANTIME_LANG",
@@ -27,6 +21,12 @@
"key": "LEANTIME_TZ",
"value": "Europe/Budapest"
},
{
"description": "Deploy name",
"key": "LEANTIME_SITENAME",
"value": "Leantime",
"advanced": "true"
},
{
"description": "Public login",
"key": "DISABLE_LOGIN",

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,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "nextcloud",
"DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -19,12 +19,24 @@
"POST_START": [],
"CMD": "",
"ENVS": [
{ "PROXY": "smarthostloadbalancer" },
{ "TARGET": "nextcloudnginx" },
{ "PORT": "80" },
{ "DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS" },
{ "SMARTHOST_PROXY_PATH": "/smarthost-domains" },
{ "OPERATION": "CREATE" }
{
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "nextcloudnginx"
},
{
"PORT": "80"
},
{
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"OPERATION": "CREATE"
}
],
"VOLUMES": [
{

View File

@@ -1,20 +1,20 @@
{
"nextcloudmysql": {
"MARIADB_DATABASE": "#MARIADB_DATABASE",
"MARIADB_USER": "#MARIADB_USER",
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
"nextcloudpostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"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",
"MYSQL_DATABASE": "#MARIADB_DATABASE",
"MYSQL_USER": "#MARIADB_USER",
"MYSQL_PASSWORD": "#MARIADB_PASSWORD",
"MYSQL_HOST": "nextcloudmysql-db",
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_HOST": "nextcloudpostgres-db",
"REDIS_HOST": "nextcloud-redis"
}
}

View File

@@ -34,47 +34,31 @@
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/nextcloud/db && mkdir -p /etc/system/log/nextcloud/db && mkdir -p /etc/user/data/nextcloud/apps && mkdir -p /etc/user/data/nextcloud/config && mkdir -p /etc/user/data/nextcloud/data && chmod 777 -R /etc/user/data/nextcloud && chmod 0770 -R /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/apps && chown -R 82:82 /etc/user/data/nextcloud/config",
"CMD": "mkdir -p /etc/user/data/nextcloud/db && mkdir -p /etc/user/data/nextcloud/apps && mkdir -p /etc/user/data/nextcloud/config && mkdir -p /etc/user/data/nextcloud/data && chmod 777 -R /etc/user/data/nextcloud && chmod 0770 -R /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/apps && chown -R 82:82 /etc/user/data/nextcloud/config",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "mariadb:10.5",
"IMAGE": "postgres:15-alpine",
"UPDATE": "true",
"NAME": "nextcloudmysql-db",
"NAME": "nextcloudpostgres-db",
"MEMORY": "256M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudmysql",
"SELECTOR": "nextcloudpostgres",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/nextcloud/db",
"DEST": "/var/lib/mysql",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/log/nextcloud/db",
"DEST": "/var/lib/mysql/mysql-bin",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "3306",
"DEST": "5432",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": "3306"
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENV_FILES": [
"/etc/user/secret/nextcloud/nextcloud.json"
],
@@ -182,7 +166,7 @@
]
},
{
"IMAGE": "registry.format.hu/nextcloud-nginx:1.23.1",
"IMAGE": "safebox/nextcloud-nginx:latest",
"UPDATE": "true",
"NAME": "nextcloudnginx",
"ROLES": "backend-www",

View File

@@ -10,7 +10,7 @@
"details": "",
"info": "Nextcloud domain info",
"description": "Domain",
"key": "NEXTCLOUD_TRUSTED_DOMAINS",
"key": "DOMAIN",
"value": "",
"required": "true"
},
@@ -32,34 +32,34 @@
{
"description": "Version",
"key": "VERSION",
"value": "26.0.13-fpm-alpine",
"value": "31.0.8-fpm-alpine",
"info": "Please keep in mind you can't upgrade major version without skipping a version!",
"advanced": "true"
},
{
"description": "MYSQL database name",
"key": "MARIADB_DATABASE",
"description": "Postgres database name",
"key": "POSTGRES_DB",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "MYSQL username",
"key": "MARIADB_USER",
"description": "Postgres username",
"key": "POSTGRES_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "MYSQL password for user",
"key": "MARIADB_PASSWORD",
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "MYSQL root user password",
"key": "MARIADB_ROOT_PASSWORD",
"description": "Postgres root user password",
"key": "POSTGRES_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"

View File

@@ -7,6 +7,31 @@
"outlineapp": {
"SECRET_KEY": "#SECRET_KEY",
"UTILS_SECRET": "#UTILS_SECRET",
"DATABASE_URL": "postgres://#DB_USER:#DB_PASSWORD@outlinepostgres-db:5432/#DB_NAME"
"DATABASE_URL": "postgres://#DB_USER:#DB_PASSWORD@outlinepostgres-db:5432/#DB_NAME",
"SLACK_CLIENT_ID": "#SLACK_CLIENT_ID",
"SLACK_CLIENT_SECRET": "#SLACK_CLIENT_SECRET",
"GOOGLE_CLIENT_ID": "#GOOGLE_CLIENT_ID",
"GOOGLE_CLIENT_SECRET": "#GOOGLE_CLIENT_SECRET",
"AZURE_CLIENT_ID": "#AZURE_CLIENT_ID",
"AZURE_CLIENT_SECRET": "#AZURE_CLIENT_SECRET",
"AZURE_RESOURCE_APP_ID": "#AZURE_RESOURCE_APP_ID",
"DISCORD_CLIENT_ID": "#DISCORD_CLIENT_ID",
"DISCORD_CLIENT_SECRET": "#DISCORD_CLIENT_SECRET",
"DISCORD_SERVER_ID": "#DISCORD_SERVER_ID",
"OIDC_CLIENT_ID": "#OIDC_CLIENT_ID",
"OIDC_CLIENT_SECRET": "#OIDC_CLIENT_SECRET",
"OIDC_AUTH_URI": "#OIDC_AUTH_URI",
"OIDC_TOKEN_URI": "#OIDC_TOKEN_URI",
"OIDC_USERINFO_URI": "#OIDC_USERINFO_URI",
"OIDC_LOGOUT_URI": "#OIDC_LOGOUT_URI",
"OIDC_USERNAME_CLAIM": "#OIDC_USERNAME_CLAIM",
"OIDC_DISPLAY_NAME": "#OIDC_DISPLAY_NAME",
"OIDC_SCOPES": "#OIDC_SCOPES",
"SMTP_HOST": "#SMTP_HOST",
"SMTP_PORT": "#SMTP_PORT",
"SMTP_SERVICE": "#SMTP_SERVICE",
"SMTP_USERNAME": "#SMTP_USERNAME",
"SMTP_PASSWORD": "#SMTP_PASSWORD",
"SMTP_FROM_EMAIL": "#SMTP_FROM_EMAIL"
}
}

View File

@@ -108,10 +108,10 @@
"DATABASE_CONNECTION_POOL_MAX": ""
},
{
"REDIS_URL": "redis://outlineredis-app:6379"
"REDIS_URL": "redis://outlineredis-server:6379"
},
{
"URL": "https://#OUTLINE_DOMAIN"
"URL": "https://#DOMAIN"
},
{
"PORT": 3000

View File

@@ -52,6 +52,174 @@
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Slack client ID",
"key": "SLACK_CLIENT_ID",
"value": "",
"info": "Create a new app in your Slack workspace at https://api.slack.com/apps?new_app=1 and add 'Sign in with Slack' under 'Add features and functionality'. Set the Redirect URL to 'https://<your-domain>/auth/slack.callback'.",
"advanced": "true"
},
{
"description": "Slack client secret",
"key": "SLACK_CLIENT_SECRET",
"value": "",
"advanced": "true"
},
{
"description": "Google client ID",
"key": "GOOGLE_CLIENT_ID",
"value": "",
"info": "Create OAuth 2.0 credentials in Google Cloud Console at https://console.cloud.google.com/apis/credentials and set the Redirect URL to 'https://<your-domain>/auth/google.callback'.",
"advanced": "true"
},
{
"description": "Google client secret",
"key": "GOOGLE_CLIENT_SECRET",
"value": "",
"advanced": "true"
},
{
"description": "Azure client ID",
"key": "AZURE_CLIENT_ID",
"value": "",
"info": "Register an application in Azure AD at https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade and set the Redirect URL to 'https://<your-domain>/auth/azuread.callback'.",
"advanced": "true"
},
{
"description": "Azure client secret",
"key": "AZURE_CLIENT_SECRET",
"value": "",
"advanced": "true"
},
{
"description": "Azure resource app ID",
"key": "AZURE_RESOURCE_APP_ID",
"value": "",
"info": "This is usually the same as the client ID, but can vary based on your Azure AD setup.",
"advanced": "true"
},
{
"description": "Discord client ID",
"key": "DISCORD_CLIENT_ID",
"value": "",
"info": "Create an application in Discord Developer Portal at https://discord.com/developers/applications and set the Redirect URL to 'https://<your-domain>/auth/discord.callback'.",
"advanced": "true"
},
{
"description": "Discord client secret",
"key": "DISCORD_CLIENT_SECRET",
"value": "",
"advanced": "true"
},
{
"description": "Discord server ID (optional)",
"key": "DISCORD_SERVER_ID",
"value": "",
"info": "(Optional) If you want to restrict login to members of a specific Discord server, provide the server ID here.",
"advanced": "true"
},
{
"description": "OpenID Connect client ID",
"key": "OIDC_CLIENT_ID",
"value": "",
"info": "Set up an OpenID Connect application with your provider and set the Redirect URL to 'https://<your-domain>/auth/oidc.callback'.",
"advanced": "true"
},
{
"description": "OpenID Connect client secret",
"key": "OIDC_CLIENT_SECRET",
"value": "",
"advanced": "true"
},
{
"description": "OpenID Connect provider auth URI",
"key": "OIDC_AUTH_URI",
"value": "",
"info": "The authorization endpoint URL of your OpenID Connect provider.",
"advanced": "true"
},
{
"description": "OpenID Connect provider token URI",
"key": "OIDC_TOKEN_URI",
"value": "",
"info": "The token endpoint URL of your OpenID Connect provider.",
"advanced": "true"
},
{
"description": "OpenID Connect provider userinfo URI",
"key": "OIDC_USERINFO_URI",
"value": "",
"info": "The userinfo endpoint URL of your OpenID Connect provider.",
"advanced": "true"
},
{
"description": "OpenID Connect provider logout URI (optional)",
"key": "OIDC_LOGOUT_URI",
"value": "",
"info": "(Optional) The logout endpoint URL of your OpenID Connect provider, if supported.",
"advanced": "true"
},
{
"description": "OpenID Connect username claim",
"key": "OIDC_USERNAME_CLAIM",
"value": "preferred_username",
"info": "The claim in the ID token or userinfo response to use as the username. Defaults to 'preferred_username'.",
"advanced": "true"
},
{
"description": "OpenID Connect display name",
"key": "OIDC_DISPLAY_NAME",
"value": "OpenID Connect",
"info": "The display name for the OpenID Connect authentication option. Defaults to 'OpenID Connect'.",
"advanced": "true"
},
{
"description": "OpenID Connect scopes",
"key": "OIDC_SCOPES",
"value": "openid profile email",
"info": "Space-separated list of scopes to request during authentication. Defaults to 'openid profile email'.",
"advanced": "true"
},
{
"description": "SMTP host",
"key": "SMTP_HOST",
"value": "",
"info": "Used for sending invitation and password reset emails. Leave blank to disable email functionality.",
"advanced": "true"
},
{
"description": "SMTP port",
"key": "SMTP_PORT",
"value": "587",
"info": "(Optional) The port to connect to on the SMTP server. Defaults to 587.",
"advanced": "true"
},
{
"description": "SMTP service (e.g., gmail)",
"key": "SMTP_SERVICE",
"value": "",
"info": "Used for sending invitation and password reset emails. Leave blank to disable email functionality.",
"advanced": "true"
},
{
"description": "SMTP username (email address)",
"key": "SMTP_USERNAME",
"value": "",
"advanced": "true"
},
{
"description": "SMTP password",
"key": "SMTP_PASSWORD",
"value": "",
"advanced": "true"
},
{
"description": "From email address",
"key": "SMTP_FROM_EMAIL",
"value": "",
"info": "(Optional) The email address that emails will be sent from. Defaults to the SMTP username if not set.",
"advanced": "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"
}
]
}

View File

@@ -1,41 +0,0 @@
{
"name": "roundcube",
"fields": [
{
"description": "Please add IMAP HOST:",
"key": "ROUNDCUBE_IMAP_HOST",
"value": "",
"required": "true"
},
{
"description": "Please add IMAP PORT:",
"key": "ROUNDCUBE_IMAP_PORT",
"value": "143",
"required": "true"
},
{
"description": "Please add SMTP HOST:",
"key": "ROUNDCUBE_SMTP_HOST",
"value": "",
"required": "true"
},
{
"description": "Please add SMTP PORT (587, 465, 25, etc.):",
"key": "ROUNDCUBE_SMTP_PORT",
"value": "25",
"required": "true"
},
{
"description": "Please add UPLOAD_MAX_FILESIZE (default: 50M):",
"key": "ROUNDCUBE_UPLOAD",
"value": "50M",
"required": "true"
},
{
"description": "Please add Roundcube DOMAIN:",
"key": "ROUNDCUBE_DOMAIN",
"value": "",
"required": "true"
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -43,7 +43,7 @@
"description": "Host whitelist",
"key": "TRANSMISSION_HOST_WHITELIST",
"value": "",
"advance": "true"
"advanced": "true"
}
]
}

View File

@@ -15,44 +15,34 @@
"SOURCE": "USER_DATA",
"DEST": "/etc/user/data",
"TYPE": "rw"
},
{
"SOURCE": "SYSTEM_LOG",
"DEST": "/etc/system/log",
"TYPE": "rw"
}
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/vaultwarden/data && mkdir -p /etc/user/data/vaultwarden/db && mkdir -p /etc/system/log/vaultwarden/db",
"CMD": "mkdir -p /etc/user/data/vaultwarden/data && mkdir -p /etc/user/data/vaultwarden/db",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "mariadb:latest",
"IMAGE": "postgres:15-alpine",
"UPDATE": "true",
"NAME": "vaultwardenmysql-db",
"NAME": "vaultwardenpostgres-db",
"MEMORY": "256M",
"NETWORK": "vaultwarden-net",
"SELECTOR": "vaultwardenmysql-db",
"SELECTOR": "vaultwardenpostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/vaultwarden/db",
"DEST": "/var/lib/mysql",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/log/vaultwarden/db",
"DEST": "/var/lib/mysql/mysql-bin",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "3306",
"DEST": "5432",
"TYPE": "tcp"
}
],

View File

@@ -12,29 +12,29 @@
"required": "true"
},
{
"description": "MYSQL database name",
"key": "MARIADB_DATABASE",
"description": "Postgres database name",
"key": "POSTGRES_DB",
"value": "",
"required": "true",
"generated": ""
},
{
"description": "MYSQL username",
"key": "MARIADB_USER",
"description": "Postgres username",
"key": "POSTGRES_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "MYSQL password for user",
"key": "MARIADB_PASSWORD",
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "MYSQL root user password",
"key": "MARIADB_ROOT_PASSWORD",
"description": "Postgres root user password",
"key": "POSTGRES_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
@@ -77,7 +77,6 @@
"description": "SMTP from Mail Adress",
"key": "VAULTWARDEN_SMTP_FROM",
"value": "",
"required": "true",
"advanced": "true"
},
{
@@ -96,7 +95,6 @@
"description": "Domains whitelist",
"key": "SIGNUPS_DOMAINS_WHITELIST",
"value": "",
"required": "true",
"advanced": "true"
}
]

View File

@@ -1,12 +1,12 @@
{
"vaultwardenmysql": {
"MARIADB_DATABASE": "#MARIADB_DATABASE",
"MARIADB_USER": "#MARIADB_USER",
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
"vaultwardenpostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"vaultwardenapp": {
"DATABASE_URL": "'mysql://#MARIADB_USER:#MARIADB_PASSWORD@vaultwardenmysql-db:3306/#MARIADB_DATABASE'",
"DATABASE_URL": "'postgresql://#POSTGRES_USER:#POSTGRES_PASSWORD@vaultwardenpostgres-db:5432/#POSTGRES_DB'",
"ADMIN_TOKEN": "#ADMIN_TOKEN",
"VAULTWARDEN_DOMAIN": "#VAULTWARDEN_DOMAIN",
"VAULTWARDEN_SMTP_PASSWORD": "#VAULTWARDEN_SMTP_PASSWORD"