Compare commits
179 Commits
be97aaa272
...
dev
Author | SHA1 | Date | |
---|---|---|---|
|
a7d40ec41a | ||
|
1af3c8ab1e | ||
|
becd96416a | ||
|
09371f8b4b | ||
|
56e6e4e789 | ||
|
f5130b0c57 | ||
|
1ef0fd1f5c | ||
|
ca41276ecf | ||
|
7a2a4e90ed | ||
|
4bb61da615 | ||
|
e3862bbeb7 | ||
|
fc0197dcf1 | ||
|
c30a5ceadb | ||
|
fcc452af8a | ||
|
daaa19d32a | ||
|
2129a7e8f9 | ||
|
22e37d90af | ||
|
efd077e41a | ||
|
3fbdace533 | ||
|
f065b4f6ce | ||
|
05f0a6d10f | ||
|
01ca5a196c | ||
|
b5c693bc8b | ||
|
37e93e661d | ||
|
9c0932bdd4 | ||
|
a8f4533991 | ||
|
feace468dc | ||
|
4e19534cae | ||
|
5fd409e79c | ||
|
0e487b02c5 | ||
|
3f73d1e42d | ||
|
6d65026806 | ||
|
5aca166c34 | ||
|
70e144b7f8 | ||
|
fd179866b2 | ||
|
46ff9e08cc | ||
|
5de24e19fe | ||
|
d6fe96f2c7 | ||
|
e62029bca4 | ||
|
31c72181b4 | ||
|
459ca0e019 | ||
|
324ad45ef3 | ||
|
4b91fa6f3f | ||
|
f4f66398de | ||
|
b07b6c7800 | ||
d9c3d3f6c1 | |||
a49f5baa13 | |||
|
2a6f54d65e | ||
|
b8ac9eb0ef | ||
|
8e61ae53e3 | ||
|
fbb8934b2d | ||
|
88ae6dd365 | ||
cc76e60006 | |||
5d1297571b | |||
f2f97551d2 | |||
3f2960628c | |||
|
9bf8622848 | ||
|
92fbb27e80 | ||
|
ea7bec4dfc | ||
|
90e071dc3a | ||
|
0fd3ca5619 | ||
|
62da50fde4 | ||
db451f42bd | |||
|
f138652ea0 | ||
|
998be9eb47 | ||
064ad0286c | |||
2355be9a77 | |||
|
fa477d5dd3 | ||
|
dde0657742 | ||
|
cc9ac4842d | ||
|
f62c9164ca | ||
|
5bd17e388f | ||
36d0cee2d6 | |||
|
141fc5e27d | ||
|
82ff8f5d09 | ||
|
42177acc46 | ||
|
d645602e3e | ||
|
267d4877eb | ||
|
2ebfd5c271 | ||
d5dd3452ec | |||
d34446f4c3 | |||
7b8db6df36 | |||
|
0be8505daa | ||
0d90f06924 | |||
ae307d0e69 | |||
|
ae91eb2295 | ||
|
48756ecb6f | ||
8792847214 | |||
57ef0b4c31 | |||
13d2abb6ca | |||
|
d85ae5a86d | ||
2f06e68a49 | |||
8854fec3e1 | |||
c43a84b5b3 | |||
0eb8444a56 | |||
74f0c57dda | |||
6275cada60 | |||
8b082fa0dc | |||
cbfb59b600 | |||
b002355bc2 | |||
19e4624fff | |||
|
dcc5d6b969 | ||
|
cf828687a2 | ||
|
d6ffd65d40 | ||
95547d3bea | |||
a089017add | |||
f9bee3dbc3 | |||
ed4d0a4009 | |||
7361704458 | |||
5995774c92 | |||
71899a308d | |||
62c620b3ee | |||
420489c7a0 | |||
d94cf9db2c | |||
8d6b4ac21d | |||
ca6a87d10b | |||
4cff7cc9ef | |||
292b43d721 | |||
b0e315eb48 | |||
d00a4c2cbf | |||
1b9a6c4f03 | |||
36f2a5b592 | |||
81d788dd6c | |||
|
9103bf7e95 | ||
|
757e69f292 | ||
|
c435ff3920 | ||
d242495c5b | |||
adee5641c8 | |||
221cbe38c8 | |||
feb5fcc501 | |||
ad4ea88315 | |||
|
011ebc61f9 | ||
|
7d659b13ef | ||
280e2c70a8 | |||
2a2f42cd8d | |||
711150d71d | |||
ff5b7cb0b2 | |||
c2a06edec0 | |||
bbbe19d738 | |||
c5fea172f8 | |||
cf70bf0f8d | |||
e5bd35fe95 | |||
36bf216e73 | |||
709b07cfc3 | |||
12c818c73d | |||
fb0846a26d | |||
262f06ae39 | |||
3a8c79d875 | |||
|
d1a70918d6 | ||
|
e0a0727934 | ||
|
658d6b08dd | ||
|
bac395cdce | ||
|
721997c5cd | ||
|
8743bf0f79 | ||
|
bff7f9d8ae | ||
|
90b4056201 | ||
|
71c800db43 | ||
b9770f4ec9 | |||
04650b0133 | |||
|
01a8c050f8 | ||
|
f15276452b | ||
|
8799566c98 | ||
|
447b3c7ba2 | ||
6863ee42d8 | |||
a524c0e65c | |||
|
48cbbd824e | ||
|
05f3633dd7 | ||
|
7705cb90f5 | ||
|
48aacadbc7 | ||
|
dc810dd79e | ||
|
86fcc17a23 | ||
|
64d4bd1dd7 | ||
|
9cf7e715cc | ||
|
64aa618977 | ||
|
b182606574 | ||
|
88ae840128 | ||
|
25e37aed69 | ||
|
45d8005272 | ||
|
6ca198fb2b |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*tmp*
|
@@ -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"
|
||||
}
|
||||
}
|
@@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -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
@@ -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"
|
||||
|
@@ -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
60
gitea/domain-gitea.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
76
gitea/firewall-gitea-dns.json
Normal file
76
gitea/firewall-gitea-dns.json
Normal 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": []
|
||||
}
|
||||
]
|
||||
}
|
@@ -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
75
gitea/firewall-gitea.json
Normal 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
22
gitea/gitea-secret.json
Normal 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
110
gitea/service-gitea.json
Normal 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
87
gitea/template.json
Normal file
File diff suppressed because one or more lines are too long
@@ -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"
|
||||
}
|
||||
|
@@ -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
@@ -61,7 +61,7 @@
|
||||
"TZ": "#TZ"
|
||||
}
|
||||
],
|
||||
"EXTRA": "--restart unless-stopped",
|
||||
"EXTRA": "--restart always",
|
||||
"DEPEND": [],
|
||||
"START_ON_BOOT": "false",
|
||||
"CMD": "null",
|
||||
|
@@ -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
60
immich/domain-immich.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
75
immich/firewall-immich.json
Normal file
75
immich/firewall-immich.json
Normal 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
12
immich/immich-secret.json
Normal 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
166
immich/service-immich.json
Normal 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
56
immich/template.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
@@ -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"
|
||||
|
@@ -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",
|
||||
|
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@@ -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"
|
||||
|
@@ -58,7 +58,7 @@
|
||||
"TYPE": "tcp"
|
||||
},
|
||||
{
|
||||
"TARGET_PORT": "80"
|
||||
"TARGET_PORT": "8080"
|
||||
},
|
||||
{
|
||||
"COMMENT": "leantime"
|
||||
|
@@ -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
@@ -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
60
matrix/domain-matrix.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -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",
|
@@ -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",
|
75
matrix/firewall-matrix-smtp.json
Normal file
75
matrix/firewall-matrix-smtp.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
75
matrix/firewall-matrix.json
Normal file
75
matrix/firewall-matrix.json
Normal 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
29
matrix/matrix-secret.json
Normal 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
199
matrix/service-matrix.json
Normal 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
69
matrix/template.json
Normal file
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"main": {
|
||||
"SERVICE_NAME": "nextcloud",
|
||||
"DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS"
|
||||
"DOMAIN": "#DOMAIN"
|
||||
},
|
||||
"containers": [
|
||||
{
|
||||
@@ -19,13 +19,24 @@
|
||||
"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" }
|
||||
{
|
||||
"PROXY": "smarthostloadbalancer"
|
||||
},
|
||||
{
|
||||
"TARGET": "nextcloudnginx"
|
||||
},
|
||||
{
|
||||
"PORT": "80"
|
||||
},
|
||||
{
|
||||
"DOMAIN": "#DOMAIN"
|
||||
},
|
||||
{
|
||||
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
|
||||
},
|
||||
{
|
||||
"OPERATION": "CREATE"
|
||||
}
|
||||
],
|
||||
"VOLUMES": [
|
||||
{
|
||||
|
@@ -1,21 +1,20 @@
|
||||
{
|
||||
"nextcloudmysql": {
|
||||
"MARIADB_DATABASE": "#MARIADB_DATABASE",
|
||||
"MARIADB_USER": "#MARIADB_USER",
|
||||
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
|
||||
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
|
||||
"nextcloudpostgres": {
|
||||
"POSTGRES_DB": "#POSTGRES_DB",
|
||||
"POSTGRES_USER": "#POSTGRES_USER",
|
||||
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
|
||||
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
|
||||
},
|
||||
"nextcloudphp": {
|
||||
"NEXTCLOUD_ADMIN_USER": "#NEXTCLOUD_ADMIN_USER",
|
||||
"NEXTCLOUD_ADMIN_PASSWORD": "#NEXTCLOUD_ADMIN_PASSWORD",
|
||||
"NEXTCLOUD_TRUSTED_DOMAINS": "#NEXTCLOUD_TRUSTED_DOMAINS",
|
||||
"NEXTCLOUD_LOCATION_PATH": "#NEXTCLOUD_LOCATION_PATH",
|
||||
"OVERWRITEHOST": "#NEXTCLOUD_TRUSTED_DOMAINS#NEXTCLOUD_LOCATION_PATH",
|
||||
"DOMAIN": "#DOMAIN",
|
||||
"OVERWRITEHOST": "#DOMAIN",
|
||||
"NEXTCLOUD_DATA_DIR": "/var/data",
|
||||
"MYSQL_DATABASE": "#MARIADB_DATABASE",
|
||||
"MYSQL_USER": "#MARIADB_USER",
|
||||
"MYSQL_PASSWORD": "#MARIADB_PASSWORD",
|
||||
"MYSQL_HOST": "nextcloudmysql-db",
|
||||
"POSTGRES_DB": "#POSTGRES_DB",
|
||||
"POSTGRES_USER": "#POSTGRES_USER",
|
||||
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
|
||||
"POSTGRES_HOST": "nextcloudpostgres-db",
|
||||
"REDIS_HOST": "nextcloud-redis"
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"main": {
|
||||
"SERVICE_NAME": "nextcloud",
|
||||
"DOMAIN": "DOMAIN"
|
||||
"DOMAIN": "#DOMAIN"
|
||||
},
|
||||
"containers": [
|
||||
{
|
||||
@@ -27,47 +27,41 @@
|
||||
"TYPE": "rw"
|
||||
}
|
||||
],
|
||||
"ENV_FILES": [ "/etc/user/secret/nextcloud/nextcloud.json" ],
|
||||
"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",
|
||||
"CMD": "mkdir -p /etc/user/data/nextcloud/db && mkdir -p /etc/user/data/nextcloud/apps && mkdir -p /etc/user/data/nextcloud/config && mkdir -p /etc/user/data/nextcloud/data && chmod 777 -R /etc/user/data/nextcloud && chmod 0770 -R /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/apps && chown -R 82:82 /etc/user/data/nextcloud/config",
|
||||
"PRE_START": "null",
|
||||
"POST_START": "null"
|
||||
},
|
||||
{
|
||||
"IMAGE": "mariadb:latest",
|
||||
"IMAGE": "postgres:15-alpine",
|
||||
"UPDATE": "true",
|
||||
"NAME": "nextcloudmysql-db",
|
||||
"NAME": "nextcloudpostgres-db",
|
||||
"MEMORY": "256M",
|
||||
"NETWORK": "nextcloud-net",
|
||||
"SELECTOR": "nextcloudmysql",
|
||||
"SELECTOR": "nextcloudpostgres",
|
||||
"VOLUMES": [
|
||||
{
|
||||
"SOURCE": "/etc/user/data/nextcloud/db",
|
||||
"DEST": "/var/lib/mysql",
|
||||
"TYPE": "rw"
|
||||
},
|
||||
{
|
||||
"SOURCE": "/etc/system/log/nextcloud/db",
|
||||
"DEST": "/var/lib/mysql/mysql-bin",
|
||||
"DEST": "/var/lib/postgres",
|
||||
"TYPE": "rw"
|
||||
}
|
||||
],
|
||||
"PORTS": [
|
||||
{
|
||||
"SOURCE": "null",
|
||||
"DEST": "3306",
|
||||
"DEST": "5432",
|
||||
"TYPE": "tcp"
|
||||
}
|
||||
],
|
||||
"READYNESS": [
|
||||
{"tcp": "3306"},
|
||||
{"HTTP": ""},
|
||||
{"EXEC": "/ready.sh"}
|
||||
"ENV_FILES": [
|
||||
"/etc/user/secret/nextcloud/nextcloud.json"
|
||||
],
|
||||
"ENV_FILES": [ "/etc/user/secret/nextcloud/nextcloud.json" ],
|
||||
"EXTRA": "--restart always",
|
||||
"DEPEND": "null",
|
||||
"START_ON_BOOT": "false",
|
||||
@@ -90,9 +84,15 @@
|
||||
}
|
||||
],
|
||||
"READYNESS": [
|
||||
{"tcp": ""},
|
||||
{"HTTP": ""},
|
||||
{"EXEC": "/ready.sh"}
|
||||
{
|
||||
"tcp": ""
|
||||
},
|
||||
{
|
||||
"HTTP": ""
|
||||
},
|
||||
{
|
||||
"EXEC": "/ready.sh"
|
||||
}
|
||||
],
|
||||
"EXTRA": "--restart always",
|
||||
"DEPEND": "null",
|
||||
@@ -102,13 +102,15 @@
|
||||
"POST_START": "null"
|
||||
},
|
||||
{
|
||||
"IMAGE": "registry.format.hu/nextcloud-php-fpm:26",
|
||||
"IMAGE": "nextcloud:#VERSION",
|
||||
"UPDATE": "true",
|
||||
"NAME": "nextcloudphp-fpm",
|
||||
"MEMORY": "1024M",
|
||||
"NETWORK": "nextcloud-net",
|
||||
"SELECTOR": "nextcloudphp-fpm",
|
||||
"DNS": [ "coredns" ],
|
||||
"DNS": [
|
||||
"coredns"
|
||||
],
|
||||
"VOLUMES": [
|
||||
{
|
||||
"SOURCE": "nextcloud",
|
||||
@@ -139,27 +141,41 @@
|
||||
}
|
||||
],
|
||||
"READYNESS": [
|
||||
{"tcp": ""},
|
||||
{"HTTP": ""},
|
||||
{"EXEC": "/ready.sh"}
|
||||
{
|
||||
"tcp": ""
|
||||
},
|
||||
{
|
||||
"HTTP": ""
|
||||
},
|
||||
{
|
||||
"EXEC": "/ready.sh"
|
||||
}
|
||||
],
|
||||
"ENV_FILES": [
|
||||
"/etc/user/secret/nextcloud/nextcloud.json"
|
||||
],
|
||||
"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"]
|
||||
"PRE_START": [
|
||||
"firewall-nextcloud-server-dns"
|
||||
],
|
||||
"POST_START": [
|
||||
"firewall-nextcloud-server-smtp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"IMAGE": "registry.format.hu/nextcloud-nginx:1.23.1",
|
||||
"IMAGE": "safebox/nextcloud-nginx:latest",
|
||||
"UPDATE": "true",
|
||||
"NAME": "nextcloudnginx",
|
||||
"ROLES": "backend-www",
|
||||
"MEMORY": "128M",
|
||||
"NETWORK": "nextcloud-net",
|
||||
"SELECTOR": "nextcloudnginx",
|
||||
"DNS": [ "coredns" ],
|
||||
"DNS": [
|
||||
"coredns"
|
||||
],
|
||||
"VOLUMES": [
|
||||
{
|
||||
"SOURCE": "nextcloud",
|
||||
@@ -185,15 +201,23 @@
|
||||
}
|
||||
],
|
||||
"READYNESS": [
|
||||
{"tcp": ""},
|
||||
{"HTTP": ""},
|
||||
{"EXEC": "/ready.sh"}
|
||||
{
|
||||
"tcp": ""
|
||||
},
|
||||
{
|
||||
"HTTP": ""
|
||||
},
|
||||
{
|
||||
"EXEC": "/ready.sh"
|
||||
}
|
||||
],
|
||||
"EXTRA": "--restart always",
|
||||
"DEPEND": "null",
|
||||
"START_ON_BOOT": "false",
|
||||
"CMD": "null",
|
||||
"PRE_START": [ "firewall-nextcloud-dns" ],
|
||||
"PRE_START": [
|
||||
"firewall-nextcloud-dns"
|
||||
],
|
||||
"POST_START": [
|
||||
"firewall-nextcloud",
|
||||
"domain-nextcloud"
|
||||
|
File diff suppressed because one or more lines are too long
@@ -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"
|
||||
|
170
outline/env
170
outline/env
@@ -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": ""}
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
@@ -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",
|
||||
|
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
60
pocketid/domain-pocketid.json
Normal file
60
pocketid/domain-pocketid.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
75
pocketid/firewall-pocketid-dns.json
Normal file
75
pocketid/firewall-pocketid-dns.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
75
pocketid/firewall-pocketid-smtp.json
Normal file
75
pocketid/firewall-pocketid-smtp.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
75
pocketid/firewall-pocketid.json
Normal file
75
pocketid/firewall-pocketid.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
16
pocketid/pocketid-secret.json
Normal file
16
pocketid/pocketid-secret.json
Normal 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"
|
||||
}
|
||||
}
|
99
pocketid/service-pocketid.json
Normal file
99
pocketid/service-pocketid.json
Normal 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
43
pocketid/template.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@@ -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
@@ -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"
|
||||
|
@@ -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
@@ -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"
|
||||
|
@@ -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
@@ -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"
|
||||
|
Reference in New Issue
Block a user