Compare commits

..

179 Commits

Author SHA1 Message Date
gyurix
a7d40ec41a Increase MEMORY allocation to 768M in service-immich.json 2025-09-07 22:58:14 +02:00
gyurix
1af3c8ab1e Add POSTGRES_INITDB_ARGS to service-immich.json for data checksums 2025-09-07 22:52:26 +02: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
gyurix
56e6e4e789 Update description in template.json to reflect new identity management features 2025-09-06 16:27:40 +02:00
gyurix
f5130b0c57 Update volume destination paths in service-matrix.json and service-pocketid.json for PostgreSQL data 2025-09-02 14:16:22 +02:00
gyurix
1ef0fd1f5c Update EXTRA configuration in service-matrix.json for container cleanup 2025-09-02 11:31:52 +02:00
gyurix
ca41276ecf Remove unnecessary EXTRA configuration from service-matrix.json 2025-09-02 11:14:15 +02:00
gyurix
7a2a4e90ed Update volume mapping in service-matrix.json for improved clarity 2025-09-02 11:08:41 +02:00
gyurix
4bb61da615 Remove unused PORTS configuration from service-matrix.json 2025-09-02 10:56:19 +02:00
gyurix
e3862bbeb7 Rename matrixserver-setup to matrixserver-dbinit and add new volume mapping for input data 2025-09-02 10:33:26 +02:00
gyurix
fc0197dcf1 Refactor configuration file structure for enhanced readability and organization 2025-09-01 16:22:29 +02:00
gyurix
c30a5ceadb Update SUBPATH details in template.json for clearer usage instructions 2025-09-01 10:17:54 +02:00
gyurix
fcc452af8a Rename LOCAL_PATH to LOCATION in domain-matrix-admin.json for clarity 2025-09-01 10:09:57 +02:00
gyurix
daaa19d32a Update domain keys in configuration files for consistency and clarity 2025-09-01 10:05:22 +02:00
gyurix
2129a7e8f9 Refactor matrix configuration structure for improved clarity and maintainability 2025-08-31 19:57:40 +02:00
gyurix
22e37d90af Update domain and path keys in configuration files for consistency 2025-08-31 14:46:04 +02:00
gyurix
efd077e41a Add DOMAIN_ADMIN and SUB_PATH fields to configuration files 2025-08-31 14:38:12 +02:00
gyurix
3fbdace533 Rename matrix server components and add finalize setup configuration 2025-08-31 14:27:09 +02:00
gyurix
f065b4f6ce Add required fields and types to matrix template configuration 2025-08-31 14:18:20 +02:00
gyurix
05f0a6d10f Add matrix service configuration and update related settings 2025-08-31 14:14:34 +02:00
gyurix
01ca5a196c Refactor database connection string to enhance clarity and consistency 2025-08-31 12:21:26 +02:00
gyurix
b5c693bc8b Add initial configuration files for matrix service and firewalls 2025-08-31 12:15:16 +02:00
gyurix
37e93e661d Update port configuration from 3000 to 1411 in domain, firewall, and service JSON files 2025-08-30 09:48:49 +02:00
gyurix
9c0932bdd4 Rename POSTGRES_CONNECTION_STRING to DB_CONNECTION_STRING in pocketid-secret.json 2025-08-30 09:38:35 +02:00
gyurix
a8f4533991 Update PocketID image reference in service-pocketid.json to use versioned tag 2025-08-30 09:36:14 +02:00
gyurix
feace468dc Update PostgreSQL volume paths in service-pocketid.json 2025-08-30 09:27:26 +02:00
gyurix
4e19534cae Update SERVICE_NAME in domain-pocketid.json from 'vaultwarden' to 'pocketid' 2025-08-30 09:22:15 +02:00
gyurix
5fd409e79c Update Pocketid icon in applications-tree.json to a new SVG representation 2025-08-30 09:21:01 +02:00
gyurix
0e487b02c5 Add PocketID configuration files for PostgreSQL integration and firewall settings 2025-08-30 08:56:08 +02:00
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
gyurix
6d65026806 Update Gitea service configuration to change SERVICE_NAME and DOMAIN settings 2025-08-29 15:38:32 +02:00
gyurix
5aca166c34 Update Gitea secret configuration to change database host to 'giteapostgres-db' 2025-08-29 14:48:12 +02: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
gyurix
fd179866b2 Update Gitea service configuration to use latest image tag for Gitea 2025-08-29 14:31:01 +02: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
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
gyurix
31c72181b4 Refactor service configurations to improve compatibility and streamline setup process 2025-08-29 14:19:09 +02: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
gyurix
324ad45ef3 Update Nextcloud configuration to use PostgreSQL instead of MariaDB and adjust related settings 2025-08-29 10:19:39 +02:00
gyurix
4b91fa6f3f Add .gitignore, update Redis URL and domain placeholders, and expand outline secret configuration 2025-08-29 08:14:08 +02: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
gyurix
b07b6c7800 Add matrix server configuration and update filebrowser command to set ownership 2025-08-23 14:29:12 +02:00
d9c3d3f6c1 leantime smtp transm vaultw template update 2025-08-14 18:54:28 +02:00
a49f5baa13 Update outline/domain-outline.json 2025-08-14 16:22:02 +00:00
gyurix
2a6f54d65e Update Leantime configuration to change port from 80 to 8080 2025-08-14 17:50:40 +02: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
gyurix
88ae6dd365 Increase memory allocation for immich services in service-immich.json 2025-08-12 12:33:47 +02: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
gyurix
757e69f292 Merge branch 'main' of https://git.format.hu/format/default-applications-tree 2025-06-27 10:07:24 +02:00
gyurix
c435ff3920 Simplify Nextcloud template field descriptions 2025-06-27 10:07:22 +02:00
d242495c5b vaultwarden update 2025-06-12 11:15:00 +02:00
adee5641c8 leantime update 2025-06-12 11:07:58 +02:00
221cbe38c8 leantimedelete commit test 2025-05-30 12:47:41 +02:00
feb5fcc501 leantime rename 2025-05-30 12:43:54 +02:00
ad4ea88315 leantime location path delete and template update 2025-05-30 12:24:25 +02:00
gyurix
011ebc61f9 Remove outdated environment configuration file 2025-05-29 09:21:14 +02:00
hael
7d659b13ef Update applications-tree.json 2025-05-27 12:23:46 +00:00
280e2c70a8 immich template update 2025-05-26 20:27:27 +02:00
2a2f42cd8d jellyfin template update 2025-05-26 20:23:27 +02:00
711150d71d filebrowser template fix 2025-05-26 20:17:36 +02:00
ff5b7cb0b2 filebrowser template update 2025-05-26 20:15:37 +02:00
c2a06edec0 transmission template fix 2025-05-26 20:08:28 +02:00
bbbe19d738 transmission template update 2025-05-26 20:05:55 +02:00
c5fea172f8 guacamole template fix 2025-05-26 19:56:29 +02:00
cf70bf0f8d guacamole template update 2025-05-26 19:54:51 +02:00
e5bd35fe95 homeassistant template fix 2025-05-26 19:31:19 +02:00
36bf216e73 homeassistant template update 2025-05-26 19:29:13 +02:00
709b07cfc3 nextcloud template 2025-05-26 13:56:25 +02:00
12c818c73d deleted title 2025-05-26 13:09:38 +02:00
fb0846a26d advanced netxloud template 2025-05-26 13:05:04 +02:00
262f06ae39 deleted test 2025-05-26 13:00:02 +02:00
3a8c79d875 teszt 2025-05-26 12:58:37 +02:00
gyurix
d1a70918d6 Fix overwrite host configuration in nextcloud secret file 2025-05-25 23:30:08 +02:00
gyurix
e0a0727934 Fix typo in nextcloud secret configuration for MARIADB_USER key 2025-05-25 23:23:14 +02:00
gyurix
658d6b08dd Update MariaDB image version in nextcloud service configuration 2025-05-25 22:18:30 +02:00
gyurix
bac395cdce Update nextcloud service configuration to run as www-data user 2025-05-25 22:09:18 +02:00
gyurix
721997c5cd Remove user specification from nextcloud service configuration 2025-05-25 12:21:38 +02:00
gyurix
8743bf0f79 Update nextcloud service configuration to set ownership for apps and config directories 2025-05-25 12:12:04 +02:00
gyurix
bff7f9d8ae Update nextcloud secret configuration and service image version for consistency 2025-05-25 11:49:03 +02:00
gyurix
90b4056201 Update nextcloud configuration files for consistency and clarity 2025-05-25 11:31:57 +02:00
gyurix
71c800db43 Refactor nextcloud/template.json for improved structure 2025-05-25 11:20:49 +02:00
b9770f4ec9 test deleted 2025-05-22 12:35:01 +02:00
04650b0133 elso teszt 2025-05-22 12:24:25 +02:00
hael
01a8c050f8 Update nextcloud/template.json 2025-05-21 07:46:58 +00:00
hael
f15276452b Update nextcloud/template.json 2025-05-20 06:58:15 +00:00
hael
8799566c98 Update nextcloud/template.json 2025-05-20 06:56:56 +00:00
gyurix
447b3c7ba2 Remove redundant password prompts for Immich Redis and Postgres in template.json 2025-05-20 08:53:00 +02:00
6863ee42d8 Update nextcloud/domain-nextcloud.json 2025-05-15 11:44:00 +00:00
a524c0e65c Update nextcloud/template.json 2025-05-13 13:16:49 +00:00
gyurix
48cbbd824e Update MariaDB image version to 11.4 in service-guacamole.json 2025-05-05 16:18:44 +02:00
gyurix
05f3633dd7 Standardize DOMAIN key across service and template JSON files 2025-05-05 11:37:47 +02:00
gyurix
7705cb90f5 Update EXTRA field to use '--restart always' for multiple service configurations 2025-05-03 14:48:33 +02:00
gyurix
48aacadbc7 Add restart policy to EXTRA field in service-immich.json 2025-05-03 13:35:04 +02:00
gyurix
dc810dd79e Rename TARGET from 'immich' to 'immichapp' in domain-immich.json and firewall-immich.json 2025-05-03 13:33:35 +02:00
gyurix
86fcc17a23 Add environment configuration to service-immich.json 2025-05-03 13:25:35 +02:00
gyurix
64d4bd1dd7 Fix CMD command in service-immich.json to ensure upload directory is created 2025-05-03 13:21:18 +02:00
gyurix
9cf7e715cc Update service-immich.json to use ghcr.io for image references 2025-05-03 13:18:38 +02:00
gyurix
64aa618977 Update template.json to change IMMICH_VERSION value from 'version' to 'release' 2025-05-03 13:15:31 +02:00
gyurix
b182606574 Add Immich application to applications tree 2025-05-03 13:11:37 +02:00
gyurix
88ae840128 Add initial configuration files for Immich service and firewall 2025-05-03 13:04:06 +02:00
gyurix
25e37aed69 Update domain-guacamole.json to modify PORT value and remove LOCATION entry 2025-05-01 23:49:35 +02:00
gyurix
45d8005272 Update domain-guacamole.json to remove trailing slash from LOCATION 2025-05-01 23:34:27 +02:00
gyurix
6ca198fb2b Update domain-guacamole.json to rename PROXY_PATH to LOCATION 2025-05-01 23:34:25 +02:00
67 changed files with 2650 additions and 1231 deletions

1
.gitignore vendored Normal file
View File

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

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": "#LEANTIME_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://#LEANTIME_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": "",
"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,118 +0,0 @@
{
"name": "leantime",
"fields": [
{
"description": "Please add LeanTime domain:",
"key": "LEANTIME_DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Do you use any additional location path? (optional)\n(do not miss '/' character!)",
"key": "LEANTIME_LOCATION_PATH",
"value": ""
},
{
"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"
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "filebrowser",
"DOMAIN": "#FILEBROWSER_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"PORT": "80"
},
{
"DOMAIN": "#FILEBROWSER_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "filebrowser",
"DOMAIN": "#FILEBROWSER_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -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"
},
@@ -57,11 +57,11 @@
"ENV_FILES": [
"/etc/user/secret/filebrowser/filebrowser.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"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

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "guacamole",
"DOMAIN": "#GUACAMOLE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -26,17 +26,14 @@
"TARGET": "guacamoletomcat"
},
{
"PORT": "8080"
"PORT": "8080/guacamole/"
},
{
"DOMAIN": "#GUACAMOLE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
},
{
"PROXY_PATH": "/guacamole/"
},
{
"OPERATION": "CREATE"
}

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "guacamole",
"DOMAIN": "#GUACAMOLE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -39,7 +39,7 @@
"POST_START": "null"
},
{
"IMAGE": "mariadb:latest",
"IMAGE": "mariadb:11.4",
"UPDATE": "true",
"NAME": "guacamolemysql-db",
"MEMORY": "256M",
@@ -110,7 +110,7 @@
"EXEC": "/ready.sh"
}
],
"EXTRA": "",
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "true",
"CMD": "null",
@@ -143,7 +143,7 @@
"EXEC": "/ready.sh"
}
],
"EXTRA": "null",
"EXTRA": "--restart always",
"ENV_FILES": [
"/etc/user/secret/guacamole/guacamole.json"
],

File diff suppressed because one or more lines are too long

View File

@@ -61,7 +61,7 @@
"TZ": "#TZ"
}
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",

View File

@@ -1,14 +1,18 @@
{
"name": "homeassistant",
"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": "Please add your homeassistant domain: (required)",
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Please add your homeassistant timezone: (required)",
"description": "Timezone",
"key": "TZ",
"value": "Europe/Budapest",
"required": "true"

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

@@ -0,0 +1,60 @@
{
"main": {
"SERVICE_NAME": "immich",
"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": "immichapp"
},
{
"PORT": "2283"
},
{
"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": "immichapp"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "2283"
},
{
"COMMENT": "proxy for immich"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}

12
immich/immich-secret.json Normal file
View File

@@ -0,0 +1,12 @@
{
"immichpostgres": {
"POSTGRES_DB": "#POSTGRES_DATABASE_NAME",
"POSTGRES_USER": "#POSTGRES_USERNAME",
"POSTGRES_PASSWORD": "#POSTGRESDB_PASSWORD"
},
"immichapp": {
"DB_DATABASE_NAME": "#POSTGRES_DATABASE_NAME",
"DB_USERNAME": "#POSTGRES_USERNAME",
"DB_PASSWORD": "#POSTGRESDB_PASSWORD"
}
}

166
immich/service-immich.json Normal file
View File

@@ -0,0 +1,166 @@
{
"main": {
"SERVICE_NAME": "immich",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "immich-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/immich/db && mkdir -p /etc/user/data/immich/upload",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0",
"UPDATE": "true",
"NAME": "immichpostgres-db",
"MEMORY": "768M",
"NETWORK": "immich-net",
"SELECTOR": "immichpostgres",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/immich/db",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/immich/immich.json"
],
"ENVS": [
{
"POSTGRES_INITDB_ARGS": "--data-checksums"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "valkey/valkey:8-bookworm",
"UPDATE": "true",
"NAME": "immichredis-app",
"MEMORY": "256M",
"NETWORK": "immich-net",
"SELECTOR": "immichredis",
"PORTS": [
{
"SOURCE": "null",
"DEST": "6379",
"TYPE": "tcp"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "ghcr.io/immich-app/immich-server:#IMMICH_VERSION",
"UPDATE": "true",
"NAME": "immichapp-app",
"MEMORY": "1536M",
"NETWORK": "immich-net",
"SELECTOR": "immichapp",
"PORTS": [
{
"SOURCE": "null",
"DEST": "2283",
"TYPE": "tcp"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/data/immich/upload",
"DEST": "/usr/src/app/upload",
"TYPE": "rw"
}
],
"ENVS": [
{
"DB_HOSTNAME": "immichpostgres-db"
},
{
"REDIS_HOSTNAME": "immichredis-app"
},
{
"UPLOAD_LOCATION": "/etc/user/data/immich/uploads"
},
{
"IMMICH_MACHINE_LEARNING_URL": "immichmachine-learning"
},
{
"TZ": "#IMMICH_TZ"
},
{
"IMMICH_VERSION": "#IMMICH_VERSION"
}
],
"ENV_FILES": [
"/etc/user/secret/immich/immich.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "true",
"CMD": "null",
"PRE_START": "null",
"POST_START": [
"firewall-immich",
"domain-immich"
]
},
{
"IMAGE": "ghcr.io/immich-app/immich-machine-learning:#IMMICH_VERSION",
"UPDATE": "true",
"NAME": "immichmachine-learning",
"ROLES": "backend-www",
"MEMORY": "1536M",
"NETWORK": "immich-net",
"SELECTOR": "immichmachine-learning",
"ENVS": [
{
"REDIS_HOSTNAME": "immichredis-app"
},
{
"TZ": "#IMMICH_TZ"
},
{
"IMMICH_VERSION": "#IMMICH_VERSION"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "true",
"CMD": "null",
"PRE_START": "null",
"POST_START": []
}
]
}

56
immich/template.json Normal file
View File

@@ -0,0 +1,56 @@
{
"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": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Timezone",
"key": "IMMICH_TZ",
"value": "Europe/Budapest",
"required": "true"
},
{
"description": "Version",
"key": "IMMICH_VERSION",
"value": "release",
"required": "true",
"advanced": "true"
},
{
"description": "POSTGRES database name",
"key": "POSTGRES_DATABASE_NAME",
"value": "",
"required": "true",
"generated": "random|md5|8"
},
{
"description": "POSTGRES username",
"key": "POSTGRES_USERNAME",
"value": "",
"required": "true",
"generated": "random|md5|8"
},
{
"description": "POSTGRES password for user",
"key": "POSTGRESDB_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "POSTGRES root user password",
"key": "POSTGRESDB_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
}
]
}

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "jellyfin",
"DOMAIN": "#JELLYFIN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"PORT": "8096"
},
{
"DOMAIN": "#JELLYFIN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "jellyfin",
"DOMAIN": "#JELLYFIN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"POST_START": "null"
},
{
"IMAGE": "jellyfin/jellyfin:latest",
"IMAGE": "jellyfin/jellyfin:#VERSION",
"UPDATE": "true",
"NAME": "jellyfin",
"NETWORK": "host",
@@ -62,7 +62,7 @@
"TYPE": "tcp"
}
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"PRE_START": "null",

View File

@@ -1,10 +1,21 @@
{
"name": "jellyfin",
"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": "Please add your Jellyfin domain:",
"key": "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

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "leantime",
"DOMAIN": "#LEANTIME_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -26,13 +26,10 @@
"TARGET": "leantime-app"
},
{
"PORT": "80"
"PORT": "8080"
},
{
"LOCATION": "#LEANTIME_LOCATION_PATH"
},
{
"DOMAIN": "#LEANTIME_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

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

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "leantime",
"DOMAIN": "#LEANTIME_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -115,7 +115,7 @@
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"DEST": "8080",
"TYPE": "tcp"
}
],
@@ -150,7 +150,7 @@
"LEAN_PORT": "80"
},
{
"LEAN_APP_URL": "https://#LEANTIME_DOMAIN"
"LEAN_APP_URL": "https://#DOMAIN"
},
{
"LEAN_APP_DIR": "leantime/"
@@ -285,7 +285,7 @@
"ENV_FILES": [
"/etc/user/secret/leantime/leantime.json"
],
"EXTRA": "",
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",

File diff suppressed because one or more lines are too long

View File

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

View File

@@ -1,21 +1,20 @@
{
"nextcloudmysql": {
"MARIADB_DATABASE": "#MARIADB_DATABASE",
"MARIADB_USER": "#MARIADB_USER",
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
},
"nextcloudphp": {
"NEXTCLOUD_ADMIN_USER": "#NEXTCLOUD_ADMIN_USER",
"NEXTCLOUD_ADMIN_PASSWORD": "#NEXTCLOUD_ADMIN_PASSWORD",
"NEXTCLOUD_TRUSTED_DOMAINS": "#NEXTCLOUD_TRUSTED_DOMAINS",
"NEXTCLOUD_LOCATION_PATH": "#NEXTCLOUD_LOCATION_PATH",
"OVERWRITEHOST": "#NEXTCLOUD_TRUSTED_DOMAINS#NEXTCLOUD_LOCATION_PATH",
"NEXTCLOUD_DATA_DIR": "/var/data",
"MYSQL_DATABASE": "#MARIADB_DATABASE",
"MYSQL_USER": "#MARIADB_USER",
"MYSQL_PASSWORD": "#MARIADB_PASSWORD",
"MYSQL_HOST": "nextcloudmysql-db",
"REDIS_HOST": "nextcloud-redis"
}
"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",
"DOMAIN": "#DOMAIN",
"OVERWRITEHOST": "#DOMAIN",
"NEXTCLOUD_DATA_DIR": "/var/data",
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_HOST": "nextcloudpostgres-db",
"REDIS_HOST": "nextcloud-redis"
}
}

View File

@@ -1,203 +1,227 @@
{
"main": {
"SERVICE_NAME": "nextcloud",
"DOMAIN": "DOMAIN"
},
"containers": [
"main": {
"SERVICE_NAME": "nextcloud",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "nextcloud",
"NETWORK": "host",
"MEMORY": "64M",
"VOLUMES": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "nextcloud",
"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/nextcloud/nextcloud.json" ],
"EXTRA": "--rm",
"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",
"PRE_START": "null",
"POST_START": "null"
"SOURCE": "USER_DATA",
"DEST": "/etc/user/data",
"TYPE": "rw"
},
{
"IMAGE": "mariadb:latest",
"UPDATE": "true",
"NAME": "nextcloudmysql-db",
"MEMORY": "256M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudmysql",
"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",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "3306",
"TYPE": "tcp"
}
],
"READYNESS": [
{"tcp": "3306"},
{"HTTP": ""},
{"EXEC": "/ready.sh"}
],
"ENV_FILES": [ "/etc/user/secret/nextcloud/nextcloud.json" ],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
{
"SOURCE": "SYSTEM_DATA",
"DEST": "/etc/system/data",
"TYPE": "rw"
},
{
"IMAGE": "redis:latest",
"UPDATE": "true",
"NAME": "nextcloud-redis",
"MEMORY": "128M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudredis",
"PORTS": [
{
"SOURCE": "null",
"DEST": "6379",
"TYPE": "tcp"
}
],
"READYNESS": [
{"tcp": ""},
{"HTTP": ""},
{"EXEC": "/ready.sh"}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
{
"SOURCE": "SYSTEM_LOG",
"DEST": "/etc/system/log",
"TYPE": "rw"
}
],
"ENV_FILES": [
"/etc/user/secret/nextcloud/nextcloud.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"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": "postgres:15-alpine",
"UPDATE": "true",
"NAME": "nextcloudpostgres-db",
"MEMORY": "256M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudpostgres",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/nextcloud/db",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/nextcloud/nextcloud.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "redis:latest",
"UPDATE": "true",
"NAME": "nextcloud-redis",
"MEMORY": "128M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudredis",
"PORTS": [
{
"SOURCE": "null",
"DEST": "6379",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": ""
},
{
"IMAGE": "registry.format.hu/nextcloud-php-fpm:26",
"UPDATE": "true",
"NAME": "nextcloudphp-fpm",
"MEMORY": "1024M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudphp-fpm",
"DNS": [ "coredns" ],
"VOLUMES": [
{
"SOURCE": "nextcloud",
"DEST": "/var/www/html",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/config",
"DEST": "/var/www/html/config",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/apps",
"DEST": "/var/www/html/custom_apps",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/data",
"DEST": "/var/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "9000",
"TYPE": "tcp"
}
],
"READYNESS": [
{"tcp": ""},
{"HTTP": ""},
{"EXEC": "/ready.sh"}
],
"ENV_FILES": [ "/etc/user/secret/nextcloud/nextcloud.json" ],
"EXTRA": "--user www-data --restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [ "firewall-nextcloud-server-dns" ],
"POST_START": ["firewall-nextcloud-server-smtp"]
{
"HTTP": ""
},
{
"IMAGE": "registry.format.hu/nextcloud-nginx:1.23.1",
"UPDATE": "true",
"NAME": "nextcloudnginx",
"ROLES": "backend-www",
"MEMORY": "128M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudnginx",
"DNS": [ "coredns" ],
"VOLUMES": [
{
"SOURCE": "nextcloud",
"DEST": "/var/www/html",
"TYPE": "ro"
},
{
"SOURCE": "/etc/user/data/nextcloud/config",
"DEST": "/var/www/html/config",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/apps",
"DEST": "/var/www/html/custom_apps",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"TYPE": "tcp"
}
],
"READYNESS": [
{"tcp": ""},
{"HTTP": ""},
{"EXEC": "/ready.sh"}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [ "firewall-nextcloud-dns" ],
"POST_START": [
"firewall-nextcloud",
"domain-nextcloud"
]
}
]
{
"EXEC": "/ready.sh"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "nextcloud:#VERSION",
"UPDATE": "true",
"NAME": "nextcloudphp-fpm",
"MEMORY": "1024M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudphp-fpm",
"DNS": [
"coredns"
],
"VOLUMES": [
{
"SOURCE": "nextcloud",
"DEST": "/var/www/html",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/config",
"DEST": "/var/www/html/config",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/apps",
"DEST": "/var/www/html/custom_apps",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/data",
"DEST": "/var/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "9000",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"ENV_FILES": [
"/etc/user/secret/nextcloud/nextcloud.json"
],
"EXTRA": "--user www-data --restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [
"firewall-nextcloud-server-dns"
],
"POST_START": [
"firewall-nextcloud-server-smtp"
]
},
{
"IMAGE": "safebox/nextcloud-nginx:latest",
"UPDATE": "true",
"NAME": "nextcloudnginx",
"ROLES": "backend-www",
"MEMORY": "128M",
"NETWORK": "nextcloud-net",
"SELECTOR": "nextcloudnginx",
"DNS": [
"coredns"
],
"VOLUMES": [
{
"SOURCE": "nextcloud",
"DEST": "/var/www/html",
"TYPE": "ro"
},
{
"SOURCE": "/etc/user/data/nextcloud/config",
"DEST": "/var/www/html/config",
"TYPE": "rw"
},
{
"SOURCE": "/etc/user/data/nextcloud/apps",
"DEST": "/var/www/html/custom_apps",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "80",
"TYPE": "tcp"
}
],
"READYNESS": [
{
"tcp": ""
},
{
"HTTP": ""
},
{
"EXEC": "/ready.sh"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": [
"firewall-nextcloud-dns"
],
"POST_START": [
"firewall-nextcloud",
"domain-nextcloud"
]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "outline",
"DOMAIN": "#OUTLINE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"PORT": "3000"
},
{
"DOMAIN": "#OUTLINE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

@@ -1,170 +0,0 @@
NODE_ENV=production
# Generate a hex-encoded 32-byte random key. You should use `openssl rand -hex 32`
# in your terminal to generate a random value.
SECRET_KEY=generate_a_new_key
# Generate a unique random key. The format is not important but you could still use
# `openssl rand -hex 32` in your terminal to produce this.
UTILS_SECRET=generate_a_new_key
# For production point these at your databases, in development the default
# should work out of the box.
DATABASE_URL=postgres://user:pass@localhost:5432/outline
DATABASE_CONNECTION_POOL_MIN=
DATABASE_CONNECTION_POOL_MAX=
# Uncomment this to disable SSL for connecting to Postgres
# PGSSLMODE=disable
# For redis you can either specify an ioredis compatible url like this
REDIS_URL=redis://localhost:6379
# or alternatively, if you would like to provide additional connection options,
# use a base64 encoded JSON connection option object. Refer to the ioredis documentation
# for a list of available options.
# Example: Use Redis Sentinel for high availability
# {"sentinels":[{"host":"sentinel-0","port":26379},{"host":"sentinel-1","port":26379}],"name":"mymaster"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJzZW50aW5lbC0wIiwicG9ydCI6MjYzNzl9LHsiaG9zdCI6InNlbnRpbmVsLTEiLCJwb3J0IjoyNjM3OX1dLCJuYW1lIjoibXltYXN0ZXIifQ==
# URL should point to the fully qualified, publicly accessible URL. If using a
# proxy the port in URL and PORT may be different.
URL=
PORT=3000
# See [documentation](docs/SERVICES.md) on running a separate collaboration
# server, for normal operation this does not need to be set.
COLLABORATION_URL=
# Specify what storage system to use. Possible value is one of "s3" or "local".
# For "local", the avatar images and document attachments will be saved on local disk.
FILE_STORAGE=local
# If "local" is configured for FILE_STORAGE above, then this sets the parent directory under
# which all attachments/images go. Make sure that the process has permissions to create
# this path and also to write files to it.
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
# Maximum allowed size for the uploaded attachment.
FILE_STORAGE_UPLOAD_MAX_SIZE=262144000
# Override the maximum size of document imports, generally this should be lower
# than the document attachment maximum size.
FILE_STORAGE_IMPORT_MAX_SIZE=
# Override the maximum size of workspace imports, these can be especially large
# and the files are temporary being automatically deleted after a period of time.
FILE_STORAGE_WORKSPACE_IMPORT_MAX_SIZE=
# To support uploading of images for avatars and document attachments in a distributed
# architecture an s3-compatible storage can be configured if FILE_STORAGE=s3 above.
AWS_ACCESS_KEY_ID=get_a_key_from_aws
AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key
AWS_REGION=xx-xxxx-x
AWS_S3_ACCELERATE_URL=
AWS_S3_UPLOAD_BUCKET_URL=http://s3:4569
AWS_S3_UPLOAD_BUCKET_NAME=bucket_name_here
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_ACL=private
# AUTHENTICATION
# Third party signin credentials, at least ONE OF EITHER Google, Slack,
# or Microsoft is required for a working installation or you'll have no sign-in
# options.
# To configure Slack auth, you'll need to create an Application at
# => https://api.slack.com/apps
#
# When configuring the Client ID, add a redirect URL under "OAuth & Permissions":
# https://<URL>/auth/slack.callback
SLACK_CLIENT_ID=get_a_key_from_slack
SLACK_CLIENT_SECRET=get_the_secret_of_above_key
# To configure Google auth, you'll need to create an OAuth Client ID at
# => https://console.cloud.google.com/apis/credentials
#
# When configuring the Client ID, add an Authorized redirect URI:
# https://<URL>/auth/google.callback
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# To configure Microsoft/Azure auth, you'll need to create an OAuth Client. See
# the guide for details on setting up your Azure App:
# => https://wiki.generaloutline.com/share/dfa77e56-d4d2-4b51-8ff8-84ea6608faa4
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_RESOURCE_APP_ID=
# To configure generic OIDC auth, you'll need some kind of identity provider.
# See documentation for whichever IdP you use to acquire the following info:
# Redirect URI is https://<URL>/auth/oidc.callback
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_AUTH_URI=
OIDC_TOKEN_URI=
OIDC_USERINFO_URI=
OIDC_LOGOUT_URI=
# Specify which claims to derive user information from
# Supports any valid JSON path with the JWT payload
OIDC_USERNAME_CLAIM=preferred_username
# Display name for OIDC authentication
OIDC_DISPLAY_NAME=OpenID Connect
# Space separated auth scopes.
OIDC_SCOPES=openid profile email
# To configure the GitHub integration, you'll need to create a GitHub App at
# => https://github.com/settings/apps
#
# When configuring the Client ID, add a redirect URL under "Permissions & events":
# https://<URL>/api/github.callback
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_APP_NAME=
GITHUB_APP_ID=
GITHUB_APP_PRIVATE_KEY=
# To configure Discord auth, you'll need to create a Discord Application at
# => https://discord.com/developers/applications/
#
# When configuring the Client ID, add a redirect URL under "OAuth2":
# https://<URL>/auth/discord.callback
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
{"SECRET_KEY": "generate_a_new_key"},
{"UTILS_SECRET": "generate_a_new_key"},
{"DATABASE_URL": "postgres://user:pass@localhost:5432/outline"},
{"AWS_ACCESS_KEY_ID": "get_a_key_from_aws"},
{"AWS_SECRET_ACCESS_KEY": "get_the_secret_of_above_key"},
{"AWS_REGION": "xx-xxxx-x"},
{"AWS_S3_ACCELERATE_URL": ""},
{"AWS_S3_UPLOAD_BUCKET_URL": "http://s3:4569"},
{"AWS_S3_UPLOAD_BUCKET_NAME": "bucket_name_here"},
{"AWS_S3_FORCE_PATH_STYLE": true},
{"AWS_S3_ACL": "private"},
{"SLACK_CLIENT_ID": "get_a_key_from_slack"},
{"SLACK_CLIENT_SECRET": "get_the_secret_of_above_key"},
{"GOOGLE_CLIENT_ID": ""},
{"GOOGLE_CLIENT_SECRET": ""},
{"AZURE_CLIENT_ID": ""},
{"AZURE_CLIENT_SECRET": ""},
{"AZURE_RESOURCE_APP_ID": ""},
{"OIDC_CLIENT_ID": ""},
{"OIDC_CLIENT_SECRET": ""},
{"OIDC_AUTH_URI": ""},
{"OIDC_TOKEN_URI": ""},
{"OIDC_USERINFO_URI": ""},
{"OIDC_LOGOUT_URI": ""},
{"OIDC_USERNAME_CLAIM": "preferred_username"},
{"OIDC_DISPLAY_NAME": "OpenID Connect"},
{"OIDC_SCOPES": "openid profile email"},
{"GITHUB_CLIENT_ID": ""},
{"GITHUB_CLIENT_SECRET": ""},
{"GITHUB_APP_NAME": ""},
{"GITHUB_APP_ID": ""},
{"GITHUB_APP_PRIVATE_KEY": ""},
{"DISCORD_CLIENT_ID": ""},
{"DISCORD_CLIENT_SECRET": ""}

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

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "outline",
"DOMAIN": "#OUTLINE_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -49,7 +49,7 @@
"ENV_FILES": [
"/etc/user/secret/outline/outline.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
@@ -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
@@ -141,7 +141,7 @@
"ENV_FILES": [
"/etc/user/secret/outline/outline.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",

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

View File

@@ -61,7 +61,7 @@
"ENV_FILES": [
"/etc/user/secret/smtp/smtp.json"
],
"EXTRA": "null",
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "true",
"CMD": "null",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "transmission",
"DOMAIN": "#TRANSMISSION_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"PORT": "9091"
},
{
"DOMAIN": "#TRANSMISSION_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "transmission",
"DOMAIN": "#TRANSMISSION_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -78,7 +78,7 @@
"ENV_FILES": [
"/etc/user/secret/transmission/transmission.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "vaultwarden",
"DOMAIN": "#VAULTWARDEN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -29,7 +29,7 @@
"PORT": "80"
},
{
"DOMAIN": "#VAULTWARDEN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
{
"SMARTHOST_PROXY_PATH": "/smarthost-domains"

View File

@@ -1,7 +1,7 @@
{
"main": {
"SERVICE_NAME": "vaultwarden",
"DOMAIN": "#VAULTWARDEN_DOMAIN"
"DOMAIN": "#DOMAIN"
},
"containers": [
{
@@ -15,51 +15,41 @@
"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"
}
],
"ENV_FILES": [
"/etc/user/secret/vaultwarden/vaultwarden.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
@@ -124,7 +114,7 @@
"ENV_FILES": [
"/etc/user/secret/vaultwarden/vaultwarden.json"
],
"EXTRA": "--restart unless-stopped",
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",

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"