Compare commits

..

170 Commits

Author SHA1 Message Date
82a2bab55e Merge pull request 'Increase MEMORY allocation to 768M in service-immich.json' (#62) from dev into main
Reviewed-on: #62
2025-09-07 20:58:50 +00:00
gyurix
a7d40ec41a Increase MEMORY allocation to 768M in service-immich.json 2025-09-07 22:58:14 +02:00
680f6d5822 Merge pull request 'Add POSTGRES_INITDB_ARGS to service-immich.json for data checksums' (#61) from dev into main
Reviewed-on: #61
2025-09-07 20:53:38 +00:00
gyurix
1af3c8ab1e Add POSTGRES_INITDB_ARGS to service-immich.json for data checksums 2025-09-07 22:52:26 +02:00
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
9827a6bd85 Merge pull request 'Update outline/domain-outline.json' (#21) from dev into main
Reviewed-on: #21
2025-08-14 16:24:02 +00:00
a49f5baa13 Update outline/domain-outline.json 2025-08-14 16:22:02 +00:00
9fe2be7b26 Merge pull request 'Update Leantime configuration to change port from 80 to 8080' (#20) from dev into main
Reviewed-on: #20
2025-08-14 15:51:43 +00:00
gyurix
2a6f54d65e Update Leantime configuration to change port from 80 to 8080 2025-08-14 17:50:40 +02:00
48a20f2681 Merge pull request 'dev' (#19) from dev into main
Reviewed-on: #19
2025-08-14 15:32:20 +00:00
gyurix
b8ac9eb0ef Update secret key generation method in template.json to use openssl|hex 2025-08-14 17:31:20 +02:00
gyurix
8e61ae53e3 Add firewall configuration files for Leantime services 2025-08-14 17:30:29 +02:00
gyurix
fbb8934b2d Update secret key generation method in template.json to use openssl|rand 2025-08-14 15:23:27 +02:00
db6a375c5e Merge pull request 'Increase memory allocation for immich services in service-immich.json' (#18) from dev into main
Reviewed-on: #18
2025-08-12 10:34:21 +00:00
gyurix
88ae6dd365 Increase memory allocation for immich services in service-immich.json 2025-08-12 12:33:47 +02:00
7eda10b29d Merge pull request 'Update outline/template.json' (#17) from dev into main
Reviewed-on: #17
2025-08-07 13:24:00 +00:00
cc76e60006 Update outline/template.json 2025-08-07 13:22:53 +00:00
5d1297571b test2 2025-08-06 14:27:57 +02:00
f2f97551d2 test 2025-08-06 14:17:00 +02:00
3f2960628c template update 2025-08-05 15:02:07 +02:00
gyurix
9bf8622848 Update CMD in service-filebrowser.json to improve initialization logic and correct database path 2025-08-04 18:16:43 +02:00
gyurix
92fbb27e80 Add required fields and validation info for filebrowser credentials 2025-08-04 15:39:14 +02:00
gyurix
ea7bec4dfc Refactor CMD in service-filebrowser.json to remove unnecessary directory change 2025-08-04 15:20:57 +02:00
gyurix
90e071dc3a Update CMD in service-filebrowser.json to set working directory and improve initialization logic 2025-08-04 15:16:29 +02:00
gyurix
0fd3ca5619 Update subtitle for Outline application in applications-tree.json 2025-08-04 14:38:58 +02:00
gyurix
62da50fde4 Merge branch 'dev' of https://git.format.hu/format/default-applications-tree into dev 2025-08-04 14:34:36 +02:00
db451f42bd application tree and template update 2025-08-04 14:30:33 +02:00
gyurix
f138652ea0 Fix CMD in service-filebrowser.json to use absolute path for filebrowser binary 2025-08-04 14:23:08 +02:00
gyurix
998be9eb47 Update CMD in service-filebrowser.json to use absolute path for filebrowser binary 2025-08-04 14:21:49 +02:00
064ad0286c templates and application tree update 2025-07-28 12:44:09 +02:00
2355be9a77 dev branch test 2025-07-28 08:11:36 +02:00
gyurix
fa477d5dd3 Refactor nextcloud/template.json to streamline configuration and improve clarity 2025-07-25 17:51:26 +02:00
gyurix
dde0657742 Refactor configuration files to improve structure and readability 2025-07-25 14:53:18 +02:00
gyurix
cc9ac4842d Update filebrowser/template.json to enhance configuration options 2025-07-25 14:48:27 +02:00
gyurix
f62c9164ca Merge branch 'main' of https://git.format.hu/format/default-applications-tree 2025-07-24 13:13:07 +02:00
gyurix
5bd17e388f Refactor nextcloud/template.json by removing unnecessary fields and adding version information 2025-07-24 13:13:05 +02:00
36d0cee2d6 Update applications-tree.json 2025-07-24 10:46:11 +00:00
gyurix
141fc5e27d Remove deprecated Leantime configuration files 2025-07-22 12:15:03 +02:00
gyurix
82ff8f5d09 Update nextcloud/template.json with new configurations 2025-07-21 17:06:56 +02:00
hael
42177acc46 Update nextcloud/template.json 2025-07-21 10:46:29 +00:00
hael
d645602e3e Update nextcloud/template.json 2025-07-21 10:45:16 +00:00
hael
267d4877eb Update applications-tree.json 2025-07-21 10:43:11 +00:00
hael
2ebfd5c271 Update applications-tree.json 2025-07-21 08:08:31 +00:00
d5dd3452ec filebrowser nextc outline vaultw logo update 2025-07-19 11:16:27 +02:00
d34446f4c3 vaultwarden logo and name update 2025-07-16 11:49:59 +02:00
7b8db6df36 homeassistant, immich, smtp, jellyfin logo update 2025-07-16 10:55:46 +02:00
gyurix
0be8505daa update Home Assistant and Guacamole icons for new branding 2025-07-09 14:21:08 +02:00
0d90f06924 homeassistant logo 2025-07-09 10:35:44 +02:00
ae307d0e69 homeassistant logo 2025-07-09 10:32:53 +02:00
gyurix
ae91eb2295 update logos for new branding in transmission template 2025-07-08 22:26:03 +02:00
gyurix
48756ecb6f update logos for new branding across multiple applications 2025-07-08 22:23:10 +02:00
8792847214 transmission template update logo 2025-07-08 21:08:27 +02:00
57ef0b4c31 transmission logo 2025-07-08 21:04:53 +02:00
13d2abb6ca fileb,nextc,immich,leant,smtp, jellyfin logo uptades 2025-07-08 20:52:50 +02:00
gyurix
d85ae5a86d update svg logos for new branding 2025-07-07 22:16:59 +02:00
2f06e68a49 application tree nextc, homea, guac logo update 2025-07-07 16:30:05 +02:00
8854fec3e1 ssmtp svg logo update 2025-07-07 16:15:27 +02:00
c43a84b5b3 vaultwarden svg logo update 2025-07-07 13:50:25 +02:00
0eb8444a56 filebrowser svg logo update 2025-07-07 13:45:24 +02:00
74f0c57dda immich svg logo update 2025-07-07 13:42:31 +02:00
6275cada60 leantime svg logo update 2025-07-07 13:38:22 +02:00
8b082fa0dc jellyfin svg logo update 2025-07-07 13:30:49 +02:00
cbfb59b600 guacamole svg icon update 2025-07-07 12:50:19 +02:00
b002355bc2 homeassistant logo update 2025-07-07 12:45:29 +02:00
19e4624fff nextcloud icon svg 2025-07-05 09:56:45 +02:00
gyurix
dcc5d6b969 update HomeAssistant icon to use SVG format for better scalability 2025-07-04 16:14:51 +02:00
gyurix
cf828687a2 add base64 encoded icon for HomeAssistant 2025-07-04 16:04:57 +02:00
gyurix
d6ffd65d40 update homeassistant icon to use base64 encoding 2025-07-04 16:02:16 +02:00
95547d3bea added homeassistant logo 2025-07-04 13:36:59 +02:00
a089017add leantime update 2025-07-04 13:28:20 +02:00
f9bee3dbc3 filebrowser update 2025-07-04 11:53:26 +02:00
ed4d0a4009 vaultwarden fix 2025-07-04 11:51:23 +02:00
7361704458 transmission fix 2025-07-04 11:50:17 +02:00
5995774c92 smtp fix 2025-07-04 11:49:24 +02:00
71899a308d nextcloud fix 2025-07-04 11:47:54 +02:00
62c620b3ee jellyfin fix 2025-07-04 11:46:49 +02:00
420489c7a0 immich fix 2025-07-04 11:46:07 +02:00
d94cf9db2c homeassistant fix 2025-07-04 11:45:07 +02:00
8d6b4ac21d guacamole update 2025-07-04 11:44:06 +02:00
ca6a87d10b smtp update 2025-07-04 11:41:21 +02:00
4cff7cc9ef vaultwarden update 2025-07-04 11:35:17 +02:00
292b43d721 transmission update 2025-07-04 11:30:23 +02:00
b0e315eb48 jellyfin update 2025-07-04 11:26:52 +02:00
d00a4c2cbf immich update 2025-07-04 11:24:46 +02:00
1b9a6c4f03 homeassistant update 2025-07-04 11:21:13 +02:00
36f2a5b592 rebased
Merge branch 'main' of https://git.format.hu/safebox/default-applications-tree
2025-07-04 11:16:21 +02:00
81d788dd6c nextcloud update 2025-07-04 11:11:44 +02:00
gyurix
9103bf7e95 Remove deprecated Leantime configuration files 2025-06-27 10:07:34 +02:00
54 changed files with 1987 additions and 803 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"
},
@@ -61,7 +61,7 @@
"DEPEND": [],
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh",
"CMD": "if [ ! -f /database.db ]; then /filebrowser config init && /filebrowser users add \"$FILEBROWSER_USER\" \"$FILEBROWSER_PASS\" --perm.admin && /filebrowser ; else /filebrowser ; fi",
"CMD": "if [ ! -f /database/filebrowser.db ]; then cd /database ; /bin/filebrowser config init && /bin/filebrowser users add \"$FILEBROWSER_USER\" \"$FILEBROWSER_PASS\" --perm.admin && /init.sh; else /init.sh ; fi",
"PRE_START": "null",
"POST_START": [
"firewall-filebrowser",

File diff suppressed because one or more lines are too long

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

@@ -49,7 +49,7 @@
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "leantime-app"
"SOURCE": "gitea-app"
},
{
"TARGET": "smtp"
@@ -61,7 +61,7 @@
"TARGET_PORT": "25"
},
{
"COMMENT": "leantime to smtp"
"COMMENT": "gitea to smtp"
}
],
"EXTRA": "--privileged --rm",

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

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,18 @@
{
"name": "homeassistant",
"description": "Home Assistant lets you automate, control, and monitor smart home devices securely from a single interface.",
"name": "Homeassistant",
"subtitle": "Smart Home",
"title": "Home Assistant",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwIDQ2Ljc5MTZDNTAgNDguNTU2MiA0OC41OTM3IDUwIDQ2Ljg3NSA1MEgzLjEyNUMxLjQwNjI1IDUwIDAgNDguNTU2MiAwIDQ2Ljc5MTZWMjcuNTQxM0MwIDI1Ljc3NjYgMC45OTM3NSAyMy4zMTI4IDIuMjEwNDIgMjIuMDYzN0wyMi43ODk2IDAuOTM1MjQ2QzI0LjAwNDIgLTAuMzExNzQ5IDI1Ljk5MzggLTAuMzExNzQ5IDI3LjIwODMgMC45MzUyNDZMNDcuNzg5NiAyMi4wNjU2QzQ5LjAwNDIgMjMuMzEyNiA1MCAyNS43Nzg4IDUwIDI3LjU0MzRWNDYuNzkzOFY0Ni43OTE2WiIgZmlsbD0iI0YyRjRGOSIvPgo8cGF0aCBkPSJNNDcuNzg5NiAyMi4wNjI3TDI3LjIxMDQgMC45MzUyMDZDMjUuOTk1OCAtMC4zMTE3MzUgMjQuMDA2MiAtMC4zMTE3MzUgMjIuNzkxNyAwLjkzNTIwNkwyLjIxMDQyIDIyLjA2MjdDMC45OTU4MzMgMjMuMzA5NyAwIDI1Ljc3NTUgMCAyNy41NDAxVjQ2Ljc4OTZDMCA0OC41NTQxIDEuNDA2MjUgNDkuOTk3OSAzLjEyNSA0OS45OTc5SDIyLjM0NzlMMTMuODgzMyA0MS4zMDc4QzEzLjQ0NzkgNDEuNDYxOCAxMi45ODMzIDQxLjU0OTUgMTIuNSA0MS41NDk1QzEwLjE0NTggNDEuNTQ5NSA4LjIyOTE3IDM5LjU4MTcgOC4yMjkxNyAzNy4xNjQ4QzguMjI5MTcgMzQuNzQ4IDEwLjE0NTggMzIuNzgwMiAxMi41IDMyLjc4MDJDMTQuODU0MiAzMi43ODAyIDE2Ljc3MDggMzQuNzQ4IDE2Ljc3MDggMzcuMTY0OEMxNi43NzA4IDM3LjY2MzIgMTYuNjg1NCAzOC4xNDAyIDE2LjUzNTQgMzguNTg3MkwyMy4xMjUgNDUuMzUyM1YyMC41Njc1QzIxLjcwODMgMTkuODUzMSAyMC43MjkyIDE4LjM2MDIgMjAuNzI5MiAxNi42MzQyQzIwLjcyOTIgMTQuMjE3MyAyMi42NDU4IDEyLjI0OTUgMjUgMTIuMjQ5NUMyNy4zNTQyIDEyLjI0OTUgMjkuMjcwOCAxNC4yMTczIDI5LjI3MDggMTYuNjM0MkMyOS4yNzA4IDE4LjM2MDIgMjguMjkxNyAxOS44NTMxIDI2Ljg3NSAyMC41Njc1VjM3Ljk0OThMMzMuNDI5MiAzMS4yMjFDMzMuMyAzMC44MDE4IDMzLjIyOTIgMzAuMzU2OSAzMy4yMjkyIDI5Ljg5NDlDMzMuMjI5MiAyNy40NzgxIDM1LjE0NTggMjUuNTEwMyAzNy41IDI1LjUxMDNDMzkuODU0MiAyNS41MTAzIDQxLjc3MDggMjcuNDc4MSA0MS43NzA4IDI5Ljg5NDlDNDEuNzcwOCAzMi4zMTE4IDM5Ljg1NDIgMzQuMjc5NiAzNy41IDM0LjI3OTZDMzYuOTc5MiAzNC4yNzk2IDM2LjQ4MzMgMzQuMTc5IDM2LjAyMjkgMzQuMDAzNkwyNi44NzUgNDMuMzk1M1Y1MEg0Ni44NzVDNDguNTkzNyA1MCA1MCA0OC41NTYzIDUwIDQ2Ljc5MTdWMjcuNTQyMkM1MCAyNS43Nzc3IDQ5LjAwNjMgMjMuMzEzNyA0Ny43ODk2IDIyLjA2NDdWMjIuMDYyN1oiIGZpbGw9IiMxOEJDRjIiLz4KPC9zdmc+Cg==",
"description": "Home Assistant is free and open-source home automation software that acts as a central hub for managing and controlling smart home devices. It allows users to connect, automate, and customize their smart home setup, offering local control and privacy features. ",
"fields": [
{
"description": "Your Home Assistant domain:",
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Home Assistant timezone:",
"description": "Timezone",
"key": "TZ",
"value": "Europe/Budapest",
"required": "true"

View File

@@ -29,7 +29,7 @@
"IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0",
"UPDATE": "true",
"NAME": "immichpostgres-db",
"MEMORY": "256M",
"MEMORY": "768M",
"NETWORK": "immich-net",
"SELECTOR": "immichpostgres",
"VOLUMES": [
@@ -49,6 +49,11 @@
"ENV_FILES": [
"/etc/user/secret/immich/immich.json"
],
"ENVS": [
{
"POSTGRES_INITDB_ARGS": "--data-checksums"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
@@ -81,7 +86,7 @@
"IMAGE": "ghcr.io/immich-app/immich-server:#IMMICH_VERSION",
"UPDATE": "true",
"NAME": "immichapp-app",
"MEMORY": "1024M",
"MEMORY": "1536M",
"NETWORK": "immich-net",
"SELECTOR": "immichapp",
"PORTS": [
@@ -136,7 +141,7 @@
"UPDATE": "true",
"NAME": "immichmachine-learning",
"ROLES": "backend-www",
"MEMORY": "1024M",
"MEMORY": "1536M",
"NETWORK": "immich-net",
"SELECTOR": "immichmachine-learning",
"ENVS": [

View File

@@ -1,24 +1,28 @@
{
"name": "immich",
"description":"Immich is a photo and video backup solution that helps you securely store and manage your media across devices.",
"name": "Immich",
"title": "Immich",
"subtitle": "Photos and Videos",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIHZpZXdCb3g9IjAgMCA5NiA5NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQ1LjMwNjkgMzIuNTE3N0M1MC41NDQ1IDM3LjE4IDU0Ljc2NTUgNDIuMTc2MyA1Ny40ODIgNDYuODg0OUM2Mi4xNDc2IDM4LjQ5NTIgNjUuMjY1MiAyOC41MjU4IDY1LjMwNDUgMjIuMTc2MkM2NS4zMDQ1IDIyLjEzMTMgNjUuMzA0NSAyMi4wOTAzIDY1LjMwNDUgMjIuMDUyMkM2NS4zMDQ1IDEyLjY1NjYgNTUuOTgyOCA5IDQ3Ljk1MjggOUMzOS45MjI5IDkgMzAuNjAxMSAxMi42NTY2IDMwLjYwMTEgMjIuMDUyMkMzMC42MDExIDIyLjE4MDMgMzAuNjAxMSAyMi4zNTIxIDMwLjYwMTEgMjIuNTU5MkMzNS4wNzcgMjQuNTU5OSA0MC4zODIzIDI4LjEzNDYgNDUuMzA2OSAzMi41MTc3WiIgZmlsbD0iI0ZBMjkyMSIvPgo8cGF0aCBkPSJNMTYuNzM0NSA1OC4xMzk2QzIwLjAwOCA1NC40Nzc1IDI1LjAzMDIgNTAuNTA4OCAzMC42OTc1IDQ3LjE1MzVDMzYuNzI2OCA0My41ODU1IDQyLjc1NzQgNDEuMDkyOCA0OC4wNTA1IDM5Ljk1MjFDNDEuNTU2NCAzMi44OTc5IDMzLjA5IDI2LjgzNTkgMjcuMDk0NiAyNC44MzY2QzI3LjA1MjYgMjQuODIzIDI3LjAxMzMgMjQuODEwNyAyNi45NzggMjQuNzk4NUMxOC4wOSAyMS44OTU2IDExLjc1MDMgMjkuNjc4OCA5LjI2OTgxIDM3LjM1NzJDNi43ODkzIDQ1LjAzNTYgNy4zNjY3MSA1NS4wNzk5IDE2LjI1NDcgNTcuOTgyOEMxNi4zNzUzIDU4LjAyMjMgMTYuNTM4IDU4LjA3NTUgMTYuNzM0NSA1OC4xMzk2WiIgZmlsbD0iI0VENzlCNSIvPgo8cGF0aCBkPSJNODYuNzMgMzcuMjI3M0M4NC4yNDk1IDI5LjU0ODkgNzcuOTA5OCAyMS43NjU3IDY5LjAyMTggMjQuNjY4NkM2OC44OTk4IDI0LjcwODEgNjguNzM3MiAyNC43NjEyIDY4LjU0MiAyNC44MjUzQzY4LjAzMzcgMjkuNzIyIDY2LjI5MTkgMzUuOTAxMyA2My42Njc1IDQxLjk2NDZDNjAuODc2NiA0OC40MTM3IDU3LjQ1NCA1My45OTQ3IDUzLjgzODkgNTguMDQ2NEM2My4yMTYyIDU5LjkxNjIgNzMuNjEwMiA1OS44MTU0IDc5LjYyODYgNTcuODkxQzc5LjY3MDYgNTcuODc3NSA3OS43MDk5IDU3Ljg2MzggNzkuNzQ1MSA1Ny44NTI5Qzg4LjYzMzEgNTQuOTQ4NiA4OS4yMTA2IDQ0LjkwNDQgODYuNzMgMzcuMjI3M1oiIGZpbGw9IiNGRkI0MDAiLz4KPHBhdGggZD0iTTQwLjAyODEgNjUuNjQ1N0MzOC41MTY3IDU4Ljc3ODIgMzguMDIxOSA1Mi4yNDA1IDM4LjU3NzcgNDYuODI3MUMyOS44OTg0IDUwLjg1NzIgMjEuNTQ4NiA1Ny4wOCAxNy44MDM0IDYyLjE5NDhDMTcuNzc3NSA2Mi4yMzAyIDE3Ljc1MzIgNjIuMjY0NCAxNy43MzE1IDYyLjI5NDNDMTIuMjM5IDY5Ljg5NjQgMTcuNjQyMSA3OC4zNjM5IDI0LjEzODkgODMuMTA4QzMwLjYzNDQgODcuODUzNCA0MC4zMTQxIDkwLjQwNDcgNDUuODA3OSA4Mi44MDI3QzQ1Ljg4MzggODIuNjk5MSA0NS45ODQxIDgyLjU2MDEgNDYuMTA0NyA4Mi4zOTI1QzQzLjY1MjYgNzguMTMwOCA0MS40NDg3IDcyLjEwMTUgNDAuMDI4MSA2NS42NDU3WiIgZmlsbD0iIzFFODNGNyIvPgo8cGF0aCBkPSJNNzguMTIyOSA2MS44MDQ5QzczLjMzMzkgNjIuODMyNSA2Ni45NTA4IDYzLjA3NjUgNjAuNDAzOCA2Mi40NEM1My40NDA2IDYxLjc2NDEgNDcuMTA1IDYwLjIxNTggNDIuMTU0OCA1OC4wMTA3QzQzLjI4MzkgNjcuNTU0OCA0Ni41OTEzIDc3LjQ2MjkgNTAuMjcxNSA4Mi42MjRDNTAuMjk3MiA4Mi42NTk1IDUwLjMyMTcgODIuNjkzNiA1MC4zNDM0IDgyLjcyMzVDNTUuODM1NyA5MC4zMjU2IDY1LjUxNTQgODcuNzc0MyA3Mi4wMTIyIDgzLjAyODhDNzguNTA3OSA3OC4yODM0IDgzLjkxMjIgNjkuODE1OSA3OC40MTk3IDYyLjIxNTJDNzguMzQzOCA2Mi4xMTE1IDc4LjI0MzUgNjEuOTcyNSA3OC4xMjI5IDYxLjgwNDlaIiBmaWxsPSIjMThDMjQ5Ii8+Cjwvc3ZnPgo=",
"description":"Immich is a free, open-source, self-hosted photo and video management platform designed as an alternative to Google Photos. It allows users to back up, organize, and manage their photos and videos on their own server, prioritizing privacy and control over their data.",
"fields": [
{
"description": "Your Immich domain:",
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Immich timezone:",
"description": "Timezone",
"key": "IMMICH_TZ",
"value": "Europe/Budapest",
"required": "true"
},
{
"description": "Immich version:",
"description": "Version",
"key": "IMMICH_VERSION",
"value": "release",
"required": "true"
"required": "true",
"advanced": "true"
},
{
"description": "POSTGRES database name",

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

@@ -1,11 +1,21 @@
{
"name": "jellyfin",
"description": "Jellyfin media server lets you stream and organize your movies, TV shows, music, and photos across all your devices.",
"name": "Jellyfin",
"title": "Jellyfin",
"subtitle": "Media System",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjYiIGhlaWdodD0iNjYiIHZpZXdCb3g9IjAgMCA2NiA2NiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMzIDI1LjI4NzZDMzAuMTAxNCAyNS4yODc2IDIwLjc3MTcgNDIuMjA0MiAyMi4xOTQgNDUuMDYwMkMyMy42MTY0IDQ3LjkxNjMgNDIuMzk5MiA0Ny44ODUxIDQzLjgwNTkgNDUuMDYwMkM0NS4yMTI3IDQyLjIzNTQgMzUuOTAyOCAyNS4yODkgMzMgMjUuMjg3NloiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yMl85OCkiLz4KPHBhdGggZD0iTTMzIDBDMjQuMjcwMSAwIC0zLjg0NTIzIDUwLjk3MSAwLjQ0MTcwNiA1OS41Nzg5QzQuNzI4NjQgNjguMTg2OCA2MS4zMjY2IDY4LjA4NzUgNjUuNTY2OCA1OS41Nzg5QzY5LjgwNjkgNTEuMDcwMiA0MS43MzgzIDAgMzMgMFpNNTQuMzQzOSA1Mi4xMDk3QzUxLjU2NTggNTcuNjg3MSAxNC40ODM4IDU3Ljc0OTUgMTEuNjc0NSA1Mi4xMDk3QzguODY1MjUgNDYuNDY5OSAyNy4yODY0IDEzLjA3MjEgMzMuMDA4NSAxMy4wNzIxQzM4LjczMDUgMTMuMDcyMSA1Ny4xMjIgNDYuNTMwOSA1NC4zNDM5IDUyLjEwOTdaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMjJfOTgpIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjJfOTgiIHgxPSIxMi4zMzExIiB5MT0iMjYuOTQzOSIgeDI9IjY3LjA1NDQiIHkyPSI1OC41Mzc5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNBQTVDQzMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDBBNERDIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8yMl85OCIgeDE9IjEyLjMzMTEiIHkxPSIyNi45NDQiIHgyPSI2Ny4wNTQ0IiB5Mj0iNTguNTM4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNBQTVDQzMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDBBNERDIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==",
"description": "Jellyfin is a free and open-source media server and suite of applications that allows users to manage, organize, and stream their personal media collections. It is built by volunteers and emphasizes user control, privacy, and a lack of tracking or hidden agendas.",
"fields": [
{
"description": "Your Jellyfin domain:",
"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

@@ -26,7 +26,7 @@
"TARGET": "leantime-app"
},
{
"PORT": "80"
"PORT": "8080"
},
{
"DOMAIN": "#DOMAIN"

View File

@@ -58,7 +58,7 @@
"TYPE": "tcp"
},
{
"TARGET_PORT": "80"
"TARGET_PORT": "8080"
},
{
"COMMENT": "leantime"

View File

@@ -115,7 +115,7 @@
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"DEST": "8080",
"TYPE": "tcp"
}
],

File diff suppressed because one or more lines are too long

View File

@@ -1,17 +0,0 @@
{
"leantimemysql": {
"MARIADB_DATABASE": "#DB_MYSQL",
"MARIADB_USER": "#DB_USER",
"MARIADB_PASSWORD": "#DB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#DB_ROOT_PASSWORD"
},
"leantimeapp": {
"LEAN_DB_USER": "#DB_USER",
"LEAN_DB_PASSWORD": "#DB_PASSWORD",
"LEAN_DB_HOST": "leantimemysql-db",
"LEAN_DB_DATABASE": "#DB_MYSQL",
"LEAN_OIDC_CLIENT_SECRET": "#OIDC_CLIENT_SECRET",
"LEAN_S3_SECRET": "#S3_SECRET",
"LEAN_SESSION_PASSWORD": "#SESSION_PASSWORD"
}
}

View File

@@ -1,302 +0,0 @@
{
"main": {
"SERVICE_NAME": "leantime",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "leantime",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"SOURCE": "USER_DATA",
"DEST": "/etc/user/data",
"TYPE": "rw"
},
{
"SOURCE": "SYSTEM_DATA",
"DEST": "/etc/system/data",
"TYPE": "rw"
},
{
"SOURCE": "SYSTEM_LOG",
"DEST": "/etc/system/log",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/leantime/leantime.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/leantime/db && mkdir -p /etc/system/log/leantime/db && mkdir -p /etc/user/data/leantime/data/plugins && mkdir -p /etc/user/data/leantime/data/public && mkdir -p /etc/user/data/leantime/data/user && chmod 770 -R /etc/user/data/leantime/data && chown -R 82:82 /etc/user/data/leantime/data",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "mariadb:latest",
"UPDATE": "true",
"NAME": "leantimemysql-db",
"MEMORY": "256M",
"NETWORK": "leantime-net",
"SELECTOR": "leantimemysql",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/leantime/db",
"DEST": "/var/lib/mysql",
"TYPE": "rw"
},
{
"SOURCE": "/etc/system/log/leantime/db",
"DEST": "/var/lib/mysql/mysql-bin",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "3306",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": "3306"
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENV_FILES": [
"/etc/user/secret/leantime/leantime.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "leantime/leantime:latest",
"UPDATE": "true",
"NAME": "leantimeapp",
"MEMORY": "1024M",
"NETWORK": "leantime-net",
"SELECTOR": "leantime-app",
"DNS": [
"coredns"
],
"VOLUMES": [
{
"SOURCE": "/etc/user/data/leantime/data/public",
"DEST": "/var/www/html/public/userfiles",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/leantime/data/user",
"DEST": "/var/www/html/userfiles",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/leantime/data/plugins",
"DEST": "/var/www/html/app/Plugins",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENVS": [
{
"LEAN_RATELIMIT_GENERAL": "1000"
},
{
"LEAN_RATELIMIT_API": "10"
},
{
"LEAN_RATELIMIT_AUTH": "20"
},
{
"LEAN_LDAP_USE_LDAP": "false"
},
{
"LEAN_USER_FILE_PATH": "userfiles/"
},
{
"LEAN_PORT": "80"
},
{
"LEAN_APP_URL": "https://#DOMAIN"
},
{
"LEAN_APP_DIR": "leantime/"
},
{
"LEAN_DEBUG": "DEBUG"
},
{
"LEAN_SITENAME": "#LEANTIME_SITENAME"
},
{
"LEAN_LANGUAGE": "#LEANTIME_LANG"
},
{
"LEAN_DEFAULT_TIMEZONE": "#LEANTIME_TZ"
},
{
"LEAN_LOG_PATH": "log/"
},
{
"LEAN_DISABLE_LOGIN_FORM": "false"
},
{
"LEAN_SESSION_EXPIRATION": "#SESSION_EXPIRATION"
},
{
"LEAN_SESSION_SECURE": "#SESSION_SECURITY"
},
{
"LEAN_EMAIL_RETURN": ""
},
{
"LEAN_EMAIL_USE_SMTP": "true"
},
{
"LEAN_EMAIL_SMTP_HOSTS": "#LEANTIME_SMTP"
},
{
"LEAN_EMAIL_SMTP_AUTH": "false"
},
{
"LEAN_EMAIL_SMTP_USERNAME": ""
},
{
"LEAN_EMAIL_SMTP_PASSWORD": ""
},
{
"LEAN_EMAIL_SMTP_AUTO_TLS": "false"
},
{
"LEAN_EMAIL_SMTP_SECURE": "false"
},
{
"LEAN_EMAIL_SMTP_SSLNOVERIFY": "false"
},
{
"LEAN_EMAIL_SMTP_PORT": "25"
},
{
"LEAN_LDAP_USE_LDAP": "false"
},
{
"LEAN_OIDC_ENABLE": "#OIDC_ENABLE"
},
{
"LEAN_OIDC_CLIENT_ID": "#OIDC_CLIENT_ID"
},
{
"LEAN_OIDC_CREATE_USER": "#OIDC_CREATE_USER"
},
{
"LEAN_OIDC_DEFAULT_ROLE": "20"
},
{
"LEAN_OIDC_PROVIDER_URL": "#OIDC_PROVIDER_URL"
},
{
"LEAN_OIDC_AUTH_URL_OVERRIDE": "#OIDC_AUTH_URL_OVERRIDE"
},
{
"LEAN_OIDC_TOKEN_URL_OVERRIDE": "#OIDC_TOKEN_URL_OVERRIDE"
},
{
"LEAN_OIDC_USERINFO_URL_OVERRIDE": "#OIDC_USERINFO_URL_OVERRIDE"
},
{
"LEAN_OIDC_SCOPES": "user:email,read:user"
},
{
"LEAN_OIDC_FIELD_EMAIL": "0.email"
},
{
"LEAN_OIDC_FIELD_FIRSTNAME": "name"
},
{
"LEAN_LOGO_PATH": "/dist/images/logo.svg"
},
{
"LEAN_PRINT_LOGO_URL": "/dist/images/logo.png"
},
{
"LEAN_DEFAULT_THEME": "default"
},
{
"LEAN_PRIMARY_COLOR": "#006d9f"
},
{
"LEAN_SECONDARY_COLOR": "#00a886"
},
{
"LEAN_USE_S3": "#LEANTIME_USE_S3"
},
{
"LEAN_S3_KEY": "#S3_KEY"
},
{
"LEAN_S3_BUCKET": "#S3_BUCKET"
},
{
"LEAN_S3_USE_PATH_STYLE_ENDPOINT": "#S3_USE_PATH_STYLE_ENDPOINT"
},
{
"LEAN_S3_REGION": "#S3_REGION"
},
{
"LEAN_S3_FOLDER_NAME": "#S3_FOLDER_NAME"
},
{
"LEAN_S3_END_POINT": "#S3_END_POINT"
}
],
"ENV_FILES": [
"/etc/user/secret/leantime/leantime.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [
"firewall-leantime-dns"
],
"POST_START": [
"firewall-leantime-smtp",
"firewall-leantime",
"domain-leantime"
]
}
]
}

View File

@@ -1,113 +0,0 @@
{
"name": "leantime",
"fields": [
{
"description": "Please add LeanTime domain:",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Please add your deploy name (default is LeanTime)",
"key": "LEANTIME_SITENAME",
"value": "LeanTime"
},
{
"description": "Please add your deploy default language (default is en-US)",
"key": "LEANTIME_LANG",
"value": "en-US"
},
{
"description": "Please add your deploy default timezone (default is Europe/Budapest)",
"key": "LEANTIME_TZ",
"value": "Europe/Budapest"
},
{
"description": "Do you want to disable login form for public?",
"key": "DISABLE_LOGIN",
"value": "true"
},
{
"description": "MYSQL database name",
"key": "DB_MYSQL",
"value": "",
"required": "true",
"generated": "time|md5|10"
},
{
"description": "MYSQL username",
"key": "DB_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "MYSQL password for user",
"key": "DB_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "MYSQL root user password",
"key": "DB_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
},
{
"description": "Do you want to set up OIDC provider? (default is false)",
"key": "OIDC_ENABLE",
"value": "false"
},
{
"description": "Please add OIDC user key:",
"key": "OIDC_CLIENT_KEY",
"value": ""
},
{
"description": "Please add OIDC client secret:",
"key": "OIDC_CLIENT_SECRET",
"value": ""
},
{
"description": "Do you want to set up S3 bucket server? (default is false)",
"key": "LEANTIME_USE_S3",
"value": "false"
},
{
"description": "Session password",
"key": "SESSION_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
},
{
"description": "Please add session expiration time in seconds (defaults is 28800)",
"key": "SESSION_EXPIRATION",
"value": "28800"
},
{
"description": "Please add a strong password for sessions",
"key": "SESSION_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
},
{
"description": "Please set LeanTime access mode (defaults is https)",
"key": "SESSION_SECURITY",
"value": "true"
},
{
"description": "Please set SMTP host for sending emails",
"key": "LEANTIME_SMTP",
"value": "smtp-mail"
},
{
"description": "Do you want to connect an S3 bucket provider?",
"key": "LEANTIME_USE_S3",
"value": "false"
}
]
}

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "leantime",
"DOMAIN": "#DOMAIN"
"SERVICE_NAME": "matrix",
"DOMAIN": "#ADMINDOMAIN"
},
"containers": [
{
@@ -23,20 +23,20 @@
"PROXY": "smarthostloadbalancer"
},
{
"TARGET": "leantime-app"
"TARGET": "matrixadmin"
},
{
"PORT": "80"
},
{
"LOCATION": "#LEANTIME_LOCATION_PATH"
},
{
"DOMAIN": "#DOMAIN"
"DOMAIN": "#ADMINDOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"LOCATION": "#SUBPATH"
},
{
"OPERATION": "CREATE"
}

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

@@ -52,7 +52,7 @@
"SOURCE": "smarthostbackend"
},
{
"TARGET": "leantime-app"
"TARGET": "matrixadmin"
},
{
"TYPE": "tcp"
@@ -61,7 +61,7 @@
"TARGET_PORT": "80"
},
{
"COMMENT": "leantime"
"COMMENT": "matrixadmin for proxy"
}
],
"EXTRA": "--privileged --rm",

View File

@@ -50,7 +50,7 @@
"CHAIN": "DOCKER-USER"
},
{
"SOURCE": "leantimeapp"
"SOURCE": "matrixserver"
},
{
"TARGET": "coredns"
@@ -62,7 +62,7 @@
"TARGET_PORT": "53"
},
{
"COMMENT": "leantime nginx access for local dns"
"COMMENT": "matrix nginx access for local dns"
}
],
"EXTRA": "--privileged --rm",

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",

File diff suppressed because one or more lines are too long

View File

@@ -29,7 +29,7 @@
"PORT": "3000"
},
{
"DOMAIN": "#OUTLINE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

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

@@ -1,5 +1,9 @@
{
"name": "outline",
"title": "Outline",
"subtitle": "Knowledge Base",
"description": "Outline is an open-source, self-hosted knowledge management and wiki application designed for teams to organize documentation, internal knowledge bases, onboarding guides, and notes.",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiByeD0iNyIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTMwLjMzMzMgNDIuMjUyNlY0My4zMDQ0QzMwLjMzMzMgNDQuNzkzMSAyOS4xMzk0IDQ2IDI3LjY2NjcgNDZDMjcuMjA4NyA0NiAyNi43NTg1IDQ1Ljg4MDggMjYuMzU5MyA0NS42NTM4TDEwLjM1OTMgMzYuNTU1OUM5LjUxOTY4IDM2LjA3ODQgOSAzNS4xODAzIDkgMzQuMjA2NFYxNS43OTRDOSAxNC44MjAyIDkuNTE5NjggMTMuOTIyIDEwLjM1OTMgMTMuNDQ0NkwyNi4zNTkzIDQuMzQ2NjdDMjcuNjQyOSAzLjYxNjc3IDI5LjI2ODggNC4wNzY5OSAyOS45OTA4IDUuMzc0NTdDMzAuMjE1NCA1Ljc3ODA2IDMwLjMzMzMgNi4yMzMyMSAzMC4zMzMzIDYuNjk2MTZWNy43NDc4OEwzMi4yMzM3IDcuMTcxNTZDMzMuNjQ0NCA2Ljc0Mzc2IDM1LjEzMSA3LjU1Mjk2IDM1LjU1NDIgOC45Nzg5NEMzNS42Mjg4IDkuMjMwMjkgMzUuNjY2NyA5LjQ5MTIzIDM1LjY2NjcgOS43NTM1N1YxMC44NDc5TDM4LjAwMjYgMTAuNTUyOEMzOS40NjQgMTAuMzY4MSA0MC43OTY3IDExLjQxNiA0MC45Nzk0IDEyLjg5MzJDNDAuOTkzMiAxMy4wMDQyIDQxIDEzLjExNTggNDEgMTMuMjI3NlYzNi43NzI4QzQxIDM4LjI2MTcgMzkuODA2MSAzOS40Njg2IDM4LjMzMzMgMzkuNDY4NkMzOC4yMjI3IDM5LjQ2ODYgMzguMTEyMyAzOS40NjE2IDM4LjAwMjYgMzkuNDQ3N0wzNS42NjY3IDM5LjE1MjZWNDAuMjQ3QzM1LjY2NjcgNDEuNzM1NyAzNC40NzI3IDQyLjk0MjYgMzMgNDIuOTQyNkMzMi43NDA1IDQyLjk0MjYgMzIuNDgyMyA0Mi45MDQzIDMyLjIzMzcgNDIuODI4OUwzMC4zMzMzIDQyLjI1MjZaTTMwLjMzMzMgMzkuNDM4MkwzMyA0MC4yNDdWMjUuMDAwM1Y5Ljc1MzU3TDMwLjMzMzMgMTAuNTYyMlYzOS40MzgyWk0zNS42NjY3IDEzLjU2NDZWMzYuNDM2TDM4LjMzMzMgMzYuNzcyOFYxMy4yMjc2TDM1LjY2NjcgMTMuNTY0NlpNMTEuNjY2NyAxNS43OTRWMzQuMjA2NEwyNy42NjY3IDQzLjMwNDRWNi42OTYxNkwxMS42NjY3IDE1Ljc5NFpNMTQuMzMzMyAxNy41ODcxTDE3IDE2LjIzOTJWMzMuNzYxMkwxNC4zMzMzIDMyLjQxMzNWMTcuNTg3MVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=",
"fields": [
{
"description": "Secret key",
@@ -44,10 +48,178 @@
"generated": "random|sha256|20"
},
{
"description": "Please add Outline domain:",
"description": "Domain:",
"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

File diff suppressed because one or more lines are too long

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"
}
],

File diff suppressed because one or more lines are too long

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"