44 Commits

Author SHA1 Message Date
37e7b83077 Merge pull request 'dev' (#60) from dev into main
Reviewed-on: #60
2025-09-06 15:05:25 +00:00
d723b4daf5 Merge pull request 'Update description in template.json to reflect new identity management features' (#59) from dev into main
Reviewed-on: #59
2025-09-06 14:28:58 +00:00
366fa1d6b8 Merge pull request 'Update volume destination paths in service-matrix.json and service-pocketid.json for PostgreSQL data' (#58) from dev into main
Reviewed-on: #58
2025-09-02 12:16:51 +00:00
082ae8fcf8 Merge pull request 'Update EXTRA configuration in service-matrix.json for container cleanup' (#57) from dev into main
Reviewed-on: #57
2025-09-02 09:50:06 +00:00
984a61d036 Merge pull request 'Remove unnecessary EXTRA configuration from service-matrix.json' (#56) from dev into main
Reviewed-on: #56
2025-09-02 09:17:42 +00:00
08c4e49d82 Merge pull request 'Update volume mapping in service-matrix.json for improved clarity' (#55) from dev into main
Reviewed-on: #55
2025-09-02 09:09:09 +00:00
b232e22427 Merge pull request 'Remove unused PORTS configuration from service-matrix.json' (#54) from dev into main
Reviewed-on: #54
2025-09-02 08:56:46 +00:00
2649856b30 Merge pull request 'Rename matrixserver-setup to matrixserver-dbinit and add new volume mapping for input data' (#53) from dev into main
Reviewed-on: #53
2025-09-02 08:35:00 +00:00
bf944dee1b Merge pull request 'Refactor configuration file structure for enhanced readability and organization' (#52) from dev into main
Reviewed-on: #52
2025-09-01 14:23:30 +00:00
bc26466fab Merge pull request 'Update SUBPATH details in template.json for clearer usage instructions' (#51) from dev into main
Reviewed-on: #51
2025-09-01 08:18:31 +00:00
24b9f416b5 Merge pull request 'Rename LOCAL_PATH to LOCATION in domain-matrix-admin.json for clarity' (#50) from dev into main
Reviewed-on: #50
2025-09-01 08:10:32 +00:00
5598cd2e4e Merge pull request 'Update domain keys in configuration files for consistency and clarity' (#49) from dev into main
Reviewed-on: #49
2025-09-01 08:06:01 +00:00
a860503297 Merge pull request 'Refactor matrix configuration structure for improved clarity and maintainability' (#48) from dev into main
Reviewed-on: #48
2025-08-31 17:58:06 +00:00
aecfab545d Merge pull request 'Update domain and path keys in configuration files for consistency' (#47) from dev into main
Reviewed-on: #47
2025-08-31 12:46:36 +00:00
cf27b29d98 Merge pull request 'Add DOMAIN_ADMIN and SUB_PATH fields to configuration files' (#46) from dev into main
Reviewed-on: #46
2025-08-31 12:39:28 +00:00
234f2b8379 Merge pull request 'Rename matrix server components and add finalize setup configuration' (#45) from dev into main
Reviewed-on: #45
2025-08-31 12:27:43 +00:00
858ddb310a Merge pull request 'Add required fields and types to matrix template configuration' (#44) from dev into main
Reviewed-on: #44
2025-08-31 12:19:10 +00:00
c48ee36943 Merge pull request 'Add matrix service configuration and update related settings' (#43) from dev into main
Reviewed-on: #43
2025-08-31 12:15:42 +00:00
b6bf808328 Merge pull request 'Refactor database connection string to enhance clarity and consistency' (#42) from dev into main
Reviewed-on: #42
2025-08-31 10:22:32 +00:00
73419aeff8 Merge pull request 'Add initial configuration files for matrix service and firewalls' (#41) from dev into main
Reviewed-on: #41
2025-08-31 10:18:09 +00:00
6bf99e7a1a Merge pull request 'Update port configuration from 3000 to 1411 in domain, firewall, and service JSON files' (#40) from dev into main
Reviewed-on: #40
2025-08-30 07:49:49 +00:00
d46cc3e801 Merge pull request 'Rename POSTGRES_CONNECTION_STRING to DB_CONNECTION_STRING in pocketid-secret.json' (#39) from dev into main
Reviewed-on: #39
2025-08-30 07:39:42 +00:00
885d896777 Merge pull request 'Update PocketID image reference in service-pocketid.json to use versioned tag' (#38) from dev into main
Reviewed-on: #38
2025-08-30 07:36:45 +00:00
49491e3116 Merge pull request 'Update PostgreSQL volume paths in service-pocketid.json' (#37) from dev into main
Reviewed-on: #37
2025-08-30 07:28:35 +00:00
00d3f23702 Merge pull request 'dev' (#36) from dev into main
Reviewed-on: #36
2025-08-30 07:23:03 +00:00
7019222a22 Merge pull request 'Refactor Vaultwarden configuration to replace MariaDB with PostgreSQL, update related keys and paths, and remove unnecessary log directory.' (#35) from dev into main
Reviewed-on: #35
2025-08-29 15:21:12 +00:00
927d7e669e Merge pull request 'Update Gitea service configuration to change SERVICE_NAME and DOMAIN settings' (#34) from dev into main
Reviewed-on: #34
2025-08-29 13:39:36 +00:00
892e05fb60 Merge pull request 'Update Gitea secret configuration to change database host to 'giteapostgres-db'' (#33) from dev into main
Reviewed-on: #33
2025-08-29 12:48:52 +00:00
ea7ee3aec9 Merge pull request 'Update Gitea configuration to replace 'gitea' with 'gitea-app' in service and firewall settings' (#32) from dev into main
Reviewed-on: #32
2025-08-29 12:40:11 +00:00
23501f7760 Merge pull request 'Update Gitea service configuration to use latest image tag for Gitea' (#31) from dev into main
Reviewed-on: #31
2025-08-29 12:31:30 +00:00
ecc21d1639 Merge pull request 'dev' (#30) from dev into main
Reviewed-on: #30
2025-08-29 12:28:20 +00:00
d64872f85e Merge pull request 'dev' (#29) from dev into main
Reviewed-on: #29
2025-08-29 12:25:21 +00:00
e928cca06a Merge pull request 'Refactor service configurations to improve compatibility and streamline setup process' (#28) from dev into main
Reviewed-on: #28
2025-08-29 12:19:41 +00:00
a0cced089b Merge pull request 'Update Nextcloud PostgreSQL image to version 15 and add Gitea configuration files for PostgreSQL and firewall services' (#27) from dev into main
Reviewed-on: #27
2025-08-29 12:17:32 +00:00
e43b20a94c Merge pull request 'Update Nextcloud configuration to use PostgreSQL instead of MariaDB and adjust related settings' (#26) from dev into main
Reviewed-on: #26
2025-08-29 08:21:01 +00:00
ac7c52def1 Merge pull request 'Add .gitignore, update Redis URL and domain placeholders, and expand outline secret configuration' (#25) from dev into main
Reviewed-on: #25
2025-08-29 06:15:38 +00:00
f26a4d60d9 Merge pull request 'Update Jellyfin service configuration to use version placeholder and add version metadata to template' (#24) from dev into main
Reviewed-on: #24
2025-08-25 08:45:05 +00:00
2f343b4b67 Merge pull request 'Add matrix server configuration and update filebrowser command to set ownership' (#23) from dev into main
Reviewed-on: #23
2025-08-24 06:51:34 +00:00
fe5b98391b Merge pull request 'leantime smtp transm vaultw template update' (#22) from dev into main
Reviewed-on: #22
2025-08-14 18:14:08 +00:00
9827a6bd85 Merge pull request 'Update outline/domain-outline.json' (#21) from dev into main
Reviewed-on: #21
2025-08-14 16:24:02 +00:00
9fe2be7b26 Merge pull request 'Update Leantime configuration to change port from 80 to 8080' (#20) from dev into main
Reviewed-on: #20
2025-08-14 15:51:43 +00:00
48a20f2681 Merge pull request 'dev' (#19) from dev into main
Reviewed-on: #19
2025-08-14 15:32:20 +00:00
db6a375c5e Merge pull request 'Increase memory allocation for immich services in service-immich.json' (#18) from dev into main
Reviewed-on: #18
2025-08-12 10:34:21 +00:00
7eda10b29d Merge pull request 'Update outline/template.json' (#17) from dev into main
Reviewed-on: #17
2025-08-07 13:24:00 +00:00
27 changed files with 75 additions and 1527 deletions
+35 -185
View File
@@ -1,201 +1,51 @@
# default-applications-tree
This repository defines the available applications and their configuration templates. Each application lives in its own subdirectory and is registered in `applications-tree.json`.
You can add more application sections into applications-tree.json.
You have to specify the application name and version. For example:
---
## applications-tree.json
The root `applications-tree.json` file lists all available applications. Each entry in the `apps` array registers one application:
```json
{
"apps": [
{
"name": "Nextcloud",
"subtitle": "File Synchronization",
"version": "31.0.8-fpm-alpine",
"icon": "data:image/svg+xml;base64,..."
"name": "nextcloud",
"version": "latest"
}
]
}
```
### App entry fields
The name must be the same as the directory name of the application.
| Field | Required | Description |
|------------|----------|-------------|
| `name` | yes | Display name of the application. Must match the directory name (case-insensitive). |
| `version` | yes | Default version tag used when deploying. Use `"latest"` for the most recent image. |
| `subtitle` | no | Short tagline shown in the app listing UI. |
| `icon` | no | Base64-encoded SVG or PNG image used as the app icon in the UI (`data:image/svg+xml;base64,...` or `data:image/png;base64,...`). |
The directory of an application have to contain a template.json file and can contain more json files (service, domain, secret, etc. files).
---
The mandatory template.json file's structure is the following.
- "name" - the name of the application, must be the same as the directory name
- "fields" - array of used variables by service
## Application directory structure
{
"name": "vaultwarden",
"fields": [
...
]
}
Each application has its own directory (e.g. `nextcloud/`). The directory name must match the `name` in `applications-tree.json`. It must contain a `template.json` file and can contain additional JSON files for services, domains, secrets, firewall rules, etc.
An element of fields can contain the following keys.
- description - label of the field, this text will appear before element
- key - name of variable
- value - default value of variable in the form
- required - if set "true" then fill in of the field is required in the form
- type - if not set then default is text, available field types: text, password, textarea, select
- if type is "select" then options are separated by ",". Option's value and text is separated by ":", but text is not mandatory. For example:
```
nextcloud/
template.json ← mandatory configuration template
service-nextcloud.json ← service definition
domain-nextcloud.json ← domain/ingress configuration
nextcloud-secret.json ← secrets / environment variables
firewall-nextcloud.json ← firewall rules
...
```
"value": "yes,no"
"value": "1:gmail,2:microsoft outlook/hotmail,3:other",
---
- generated - the value of the variable is auto generated, so the field will not appear in the form. Generated examples:
## template.json
"time|md5|8" - generated from time, encoded by md5 and character length is 8
"random|md5|20" - random generated number, encoded by sha256, length is 20
The `template.json` file defines the application's metadata and the list of configuration fields that are presented in the deployment form.
Field element example:
### Top-level structure
{
"description": "Please add Nextcloud password:",
"key": "NEXTCLOUD_PASSWORD",
"value": "",
"required": "true",
"type": "password"
},
```json
{
"name": "Nextcloud",
"title": "Nextcloud",
"subtitle": "File Synchronization",
"description": "Nextcloud is a suite of client-server software...",
"icon": "data:image/svg+xml;base64,...",
"fields": [ ... ]
}
```
### Top-level fields
| Field | Required | Description |
|---------------|----------|-------------|
| `name` | yes | Must match the directory name. Used as the application identifier. |
| `title` | no | Human-readable display title shown in the form header (falls back to `name` if omitted). |
| `subtitle` | no | Short tagline displayed below the title. |
| `description` | no | Longer description of the application shown in the form or app listing. |
| `icon` | no | Base64-encoded SVG or PNG icon (`data:image/svg+xml;base64,...`). |
| `fields` | yes | Array of configuration field definitions (see below). |
---
## Field definitions
Each element of the `fields` array defines one configuration variable. Fields are rendered as form inputs during deployment. Fields with `generated` set are auto-populated and not shown in the form.
### Field properties
| Property | Required | Description |
|---------------|----------|-------------|
| `description` | yes | Label text displayed before the input. |
| `key` | yes | The environment variable name that will hold the value. |
| `value` | no | Default value pre-filled in the form. For `select` fields this defines the available options (see below). |
| `required` | no | Set to `"true"` to make the field mandatory. The form will not submit until it is filled. |
| `type` | no | Input type. Defaults to `"text"`. See [Field types](#field-types). |
| `info` | no | Additional hint or explanatory text shown alongside or below the field. |
| `generated` | no | Auto-generation pattern. When set the field is not shown in the form; its value is generated automatically. See [Generated values](#generated-values). |
| `advanced` | no | Set to `"true"` to hide the field from the UI by default. It can be revealed by pressing the `>` button. |
### Field types
The `type` property controls how the field is rendered:
| Type | Description |
|-------------|-------------|
| `text` | *(default)* Single-line plain text input. |
| `password` | The value is hidden from human-readable display wherever it is shown in the UI. |
| `textarea` | Multi-line text input. |
| `select` | Dropdown. Options are defined in `value` as a comma-separated list. Each option can be `optionValue` or `displayText:optionValue`. |
#### Select field examples
Simple yes/no toggle:
```json
{
"description": "Enable feature",
"key": "FEATURE_ENABLED",
"value": "false,true",
"type": "select"
}
```
Options with display labels:
```json
{
"description": "Email provider",
"key": "MAIL_PROVIDER",
"value": "1:Gmail,2:Microsoft Outlook/Hotmail,3:Other",
"type": "select"
}
```
TOTP authentication toggle (advanced):
```json
{
"description": "TOTP authentication (true/false)",
"key": "GUACAMOLE_TOTP",
"value": "false,true",
"required": "true",
"type": "select",
"advanced": "true"
}
```
### Generated values
When `generated` is set the field value is computed automatically. The format is:
```
"<source>|<encoding>|<length>"
```
| Part | Options | Description |
|------------|------------------|-------------|
| `source` | `time`, `random` | `time` seeds the hash from the current timestamp; `random` uses a random number. |
| `encoding` | `md5`, `sha256` | Hash algorithm applied to the source value. |
| `length` | integer | Number of characters to take from the hash output. |
#### Examples
| Pattern | Result |
|---------------------|--------|
| `"time\|md5\|8"` | 8-character MD5 hash seeded from the current time. |
| `"random\|md5\|12"` | 12-character MD5 hash seeded from a random number. |
| `"random\|sha256\|20"` | 20-character SHA-256 hash seeded from a random number. |
| `""` | Auto-generated with default settings (pattern not specified). |
---
## Complete field example
```json
{
"description": "Nextcloud admin password",
"key": "NEXTCLOUD_ADMIN_PASSWORD",
"value": "",
"required": "true",
"type": "password",
"info": "Must be at least 8 characters long."
}
```
Auto-generated database password (not shown in the form):
```json
{
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
}
```
Advanced optional SMTP field:
```json
{
"description": "Email sending protocol",
"key": "MAIL_PROTOCOL",
"value": "",
"info": "Options are: empty (for no encryption), ssl, tls",
"advanced": "true"
}
```
+2 -16
View File
File diff suppressed because one or more lines are too long
+2 -7
View File
@@ -29,13 +29,13 @@
"IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0",
"UPDATE": "true",
"NAME": "immichpostgres-db",
"MEMORY": "768M",
"MEMORY": "512M",
"NETWORK": "immich-net",
"SELECTOR": "immichpostgres",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/immich/db",
"DEST": "/var/lib/postgresql/data",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
@@ -49,11 +49,6 @@
"ENV_FILES": [
"/etc/user/secret/immich/immich.json"
],
"ENVS": [
{
"POSTGRES_INITDB_ARGS": "--data-checksums"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"jellyfin": {
"USER": "#USER",
"PASS": "#PASS"
"USER": "#JELLYFIN_USER",
"PASS": "#JELLYFIN_PASS"
}
}
+7 -7
View File
@@ -1,15 +1,15 @@
{
"leantimemysql": {
"MARIADB_DATABASE": "#MARIADB_DATABASE",
"MARIADB_USER": "#MARIADB_USER",
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
"MARIADB_DATABASE": "#DB_MYSQL",
"MARIADB_USER": "#DB_USER",
"MARIADB_PASSWORD": "#DB_PASSWORD",
"MARIADB_ROOT_PASSWORD": "#DB_ROOT_PASSWORD"
},
"leantimeapp": {
"LEAN_DB_USER": "#MARIADB_USER",
"LEAN_DB_PASSWORD": "#MARIADB_PASSWORD",
"LEAN_DB_USER": "#DB_USER",
"LEAN_DB_PASSWORD": "#DB_PASSWORD",
"LEAN_DB_HOST": "leantimemysql-db",
"LEAN_DB_DATABASE": "#MARIADB_DATABASE",
"LEAN_DB_DATABASE": "#DB_MYSQL",
"LEAN_OIDC_CLIENT_SECRET": "#OIDC_CLIENT_SECRET",
"LEAN_S3_SECRET": "#S3_SECRET",
"LEAN_SESSION_PASSWORD": "#SESSION_PASSWORD"
+4 -4
View File
@@ -35,28 +35,28 @@
},
{
"description": "MYSQL database name",
"key": "MARIADB_DATABASE",
"key": "DB_MYSQL",
"value": "",
"required": "true",
"generated": "time|md5|10"
},
{
"description": "MYSQL username",
"key": "MARIADB_USER",
"key": "DB_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "MYSQL password for user",
"key": "MARIADB_PASSWORD",
"key": "DB_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "MYSQL root user password",
"key": "MARIADB_ROOT_PASSWORD",
"key": "DB_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
+8 -8
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -48,7 +48,7 @@
"VOLUMES": [
{
"SOURCE": "/etc/user/data/nextcloud/db",
"DEST": "/var/lib/postgresql/data",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],
+2
View File
@@ -8,6 +8,7 @@
{
"title": "",
"details": "",
"info": "Nextcloud domain info",
"description": "Domain",
"key": "DOMAIN",
"value": "",
@@ -15,6 +16,7 @@
},
{
"details": "",
"info": "Nextcloud user name info",
"description": "Username",
"key": "NEXTCLOUD_ADMIN_USER",
"value": "",
-60
View File
@@ -1,60 +0,0 @@
{
"main": {
"SERVICE_NAME": "openwebui",
"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": "openwebui-app"
},
{
"PORT": "8080"
},
{
"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
View File
@@ -1,75 +0,0 @@
{
"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": "openwebui-app"
},
{
"TYPE": "udp"
},
{
"TARGET_PORT": "53"
},
{
"COMMENT": "dns for openwebui"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}
-75
View File
@@ -1,75 +0,0 @@
{
"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": "openwebui-app"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "8080"
},
{
"COMMENT": "proxy for openwebui"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}
-16
View File
@@ -1,16 +0,0 @@
{
"openwebuipostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"openwebuiapp": {
"WEBUI_ADMIN_NAME": "#WEBUI_ADMIN_NAME",
"WEBUI_ADMIN_EMAIL": "#WEBUI_ADMIN_EMAIL",
"WEBUI_ADMIN_PASSWORD": "#WEBUI_ADMIN_PASSWORD",
"WEBUI_SECRET_KEY": "#WEBUI_SECRET_KEY",
"OPENAI_API_KEY": "#OPENAI_API_KEY",
"DATABASE_URL": "postgres://#POSTGRES_USER:#POSTGRES_PASSWORD@openwebuipostgres-db:5432/#POSTGRES_DB"
}
}
-196
View File
@@ -1,196 +0,0 @@
{
"main": {
"SERVICE_NAME": "openwebui",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "openwebui-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/openwebui/data && mkdir -p /etc/user/data/openwebui/db && mkdir -p /etc/user/data/openwebui/pipelines && mkdir -p /etc/user/data/openwebui/qdrant",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "postgres:16-alpine",
"UPDATE": "true",
"NAME": "openwebuipostgres-db",
"MEMORY": "256M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebuipostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/db",
"DEST": "/var/lib/postgresql/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/openwebui/openwebui.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "qdrant/qdrant:latest",
"UPDATE": "true",
"NAME": "openwebui-qdrant",
"MEMORY": "1024M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebui-qdrant",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/qdrant",
"DEST": "/qdrant/storage",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "6333",
"TYPE": "tcp"
},
{
"SOURCE": "null",
"DEST": "6334",
"TYPE": "tcp"
}
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "ghcr.io/open-webui/pipelines:main",
"UPDATE": "true",
"NAME": "openwebui-pipelines",
"MEMORY": "1024M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebui-pipelines",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/pipelines",
"DEST": "/app/pipelines",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "9099",
"TYPE": "tcp"
}
],
"ENVS": [
{
"OPENAI_API_BASE_URL": "#OPENAI_API_BASE_URL"
},
{
"VECTOR_DB": "qdrant"
},
{
"QDRANT_HOST": "openwebui-qdrant"
},
{
"QDRANT_PORT": "6333"
},
{
"QDRANT_URI": "http://openwebui-qdrant:6333"
}
],
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "ghcr.io/open-webui/open-webui:main",
"UPDATE": "true",
"NAME": "openwebuiapp",
"MEMORY": "4096M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebui-app",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/data",
"DEST": "/app/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "8080",
"TYPE": "tcp"
}
],
"ENVS": [
{
"OPENAI_API_BASE_URL": "#OPENAI_API_BASE_URL"
},
{
"VECTOR_DB": "qdrant"
},
{
"QDRANT_HOST": "openwebui-qdrant"
},
{
"QDRANT_PORT": "6333"
},
{
"QDRANT_URI": "http://openwebui-qdrant:6333"
},
{
"ENABLE_RAG_PIPELINE": "True"
},
{
"RAG_PIPELINE_URL": "http://openwebui-pipelines:9099/v1"
}
],
"ENV_FILES": [
"/etc/user/secret/openwebui/openwebui.json"
],
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": [
"firewall-openwebui",
"domain-openwebui",
"firewall-openwebui-dns"
]
}
]
}
-87
View File
@@ -1,87 +0,0 @@
{
"name": "OpenWebUI",
"title": "Open WebUI",
"subtitle": "AI Chat Interface",
"description": "Open WebUI is a user-friendly WebUI for LLMs (formerly Ollama WebUI). It supports various LLM runners including OpenAI compatible APIs, with features like RAG, multi-modal support, and a powerful pipeline system.",
"icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiByeD0iNyIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTE1IDI1QzE1IDE3LjI2OCAyMS4yNjggMTEgMjkgMTFDMzYuNzMyIDExIDQzIDE3LjI2OCA0MyAyNUM0MyAzMi43MzIgMzYuNzMyIDM5IDI5IDM5QzI3LjQ3IDM5IDI2IDM4LjczIDI0LjYwMyAzOC4yMjhMMTkgNDJMMjAuMTE3IDM1LjkzMkMxNy4wMyAzMy45MTUgMTUgMjkuNzYzIDE1IDI1WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIzIDI1QzIzIDIzLjYyIDI0LjEyIDIyLjUgMjUuNSAyMi41QzI2Ljg4IDIyLjUgMjggMjMuNjIgMjggMjVDMjggMjYuMzggMjYuODggMjcuNSAyNS41IDI3LjVDMjQuMTIgMjcuNSAyMyAyNi4zOCAyMyAyNVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yOSAyNUMzMCAyMy42MiAzMS4xMiAyMi41IDMyLjUgMjIuNUMzMy44OCAyMi41IDM1IDIzLjYyIDM1IDI1QzM1IDI2LjM4IDMzLjg4IDI3LjUgMzIuNSAyNy41QzMxLjEyIDI3LjUgMzAgMjYuMzggMjkgMjVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjAuODMyIDMxLjc2OEMyMi40NTMgMzQuMDI0IDI1LjUyNyAzNS41IDI5IDM1LjVDMzQuMjkzIDM1LjUgMzguNzA0IDMyLjY0IDQwLjU1IDI4LjVDNDEuNjE2IDI2LjI0IDQyIDI0Ljk1MyA0MiAyNUM0MiAxNy4yNjggMzYuNzMyIDExIDI5IDExQzIxLjI2OCAxMSAxNSAxNy4yNjggMTUgMjVDMTUgMjUuODI3IDE1LjA4IDI2LjYxNyAxNS4yMzMgMjcuMzY3TDIwLjgzMiAzMS43NjhaIiBmaWxsPSIjMjlBMEYxIi8+Cjwvc3ZnPg==",
"fields": [
{
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"description": "Admin email address",
"key": "WEBUI_ADMIN_EMAIL",
"value": "",
"info": "The initial admin email address for Open WebUI.",
"required": "true"
},
{
"description": "Displayed username",
"key": "WEBUI_ADMIN_NAME",
"value": "",
"info": "The initial displayed username for Open WebUI.",
"required": "true"
},
{
"description": "Admin password",
"key": "WEBUI_ADMIN_PASSWORD",
"value": "",
"info": "The initial admin password for Open WebUI.",
"required": "true",
"type": "password"
},
{
"description": "OpenAI compatible API endpoint",
"key": "OPENAI_API_BASE_URL",
"value": "",
"info": "Optional API url for OpenAI compatible API endpoint.",
"advanced": "true"
},
{
"description": "WebUI secret key",
"key": "WEBUI_SECRET_KEY",
"value": "",
"required": "true",
"generated": "openssl|hex|32"
},
{
"description": "OpenAI API key",
"key": "OPENAI_API_KEY",
"value": "",
"info": "Optional API key for OpenAI compatible API endpoint.",
"advanced": "true",
"type": "password"
},
{
"description": "Postgres database name",
"key": "POSTGRES_DB",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"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"
}
]
}
+4 -5
View File
@@ -1,14 +1,13 @@
{
"outlinepostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
"POSTGRES_DB": "#DB_NAME",
"POSTGRES_USER": "#DB_USER",
"POSTGRES_PASSWORD": "#DB_PASSWORD"
},
"outlineapp": {
"SECRET_KEY": "#SECRET_KEY",
"UTILS_SECRET": "#UTILS_SECRET",
"DATABASE_URL": "postgres://#POSTGRES_USER:#POSTGRES_PASSWORD@outlinepostgres-db:5432/#POSTGRES_DB",
"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",
+4 -4
View File
@@ -21,28 +21,28 @@
},
{
"description": "Postgres database name",
"key": "POSTGRES_DB",
"key": "DB_NAME",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "Postgres username",
"key": "POSTGRES_USER",
"key": "DB_USER",
"value": "",
"required": "true",
"generated": "time|md5|8"
},
{
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"key": "DB_PASSWORD",
"value": "",
"required": "true",
"generated": "random|md5|12"
},
{
"description": "Postgres root user password",
"key": "POSTGRES_ROOT_PASSWORD",
"key": "DB_ROOT_PASSWORD",
"value": "",
"required": "true",
"generated": "random|sha256|20"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "Pocketid",
"title": "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.",
-60
View File
@@ -1,60 +0,0 @@
{
"main": {
"SERVICE_NAME": "quackback",
"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": "quackback-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"
}
]
}
]
}
-75
View File
@@ -1,75 +0,0 @@
{
"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": "quackback-app"
},
{
"TYPE": "udp"
},
{
"TARGET_PORT": "53"
},
{
"COMMENT": "dns for quackback"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}
-75
View File
@@ -1,75 +0,0 @@
{
"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": "quackback-app"
},
{
"TARGET": "smtp"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "25"
},
{
"COMMENT": "smtp for openproject"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}
-75
View File
@@ -1,75 +0,0 @@
{
"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": "quackback-app"
},
{
"TYPE": "tcp"
},
{
"TARGET_PORT": "3000"
},
{
"COMMENT": "proxy for quackback"
}
],
"EXTRA": "--privileged --rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
}
]
}
-25
View File
@@ -1,25 +0,0 @@
{
"quackbackpostgres": {
"POSTGRES_DB": "#POSTGRES_DB",
"POSTGRES_USER": "#POSTGRES_USER",
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"quackbackminio": {
"MINIO_ROOT_USER": "#MINIO_ROOT_USER",
"MINIO_ROOT_PASSWORD": "#MINIO_ROOT_PASSWORD"
},
"quackbackapp": {
"SECRET_KEY": "#SECRET_KEY",
"UTILS_SECRET": "#UTILS_SECRET",
"DATABASE_URL": "postgres://#POSTGRES_USER:#POSTGRES_PASSWORD@quackbackpostgres-db:5432/#POSTGRES_DB",
"SLACK_CLIENT_ID": "#SLACK_CLIENT_ID",
"SLACK_CLIENT_SECRET": "#SLACK_CLIENT_SECRET",
"GOOGLE_CLIENT_ID": "#GOOGLE_CLIENT_ID",
"GOOGLE_CLIENT_SECRET": "#GOOGLE_CLIENT_SECRET",
"GITHUB_CLIENT_ID": "#GITHUB_CLIENT_ID",
"GITHUB_CLIENT_SECRET": "#GITHUB_CLIENT_SECRET",
"EMAIL_SMTP_USER": "#SMTP_USERNAME",
"EMAIL_SMTP_PASS": "#SMTP_PASSWORD"
}
}
-205
View File
@@ -1,205 +0,0 @@
{
"main": {
"SERVICE_NAME": "quackback",
"DOMAIN": "#DOMAIN"
},
"containers": [
{
"IMAGE": "alpine:latest",
"UPDATE": "true",
"NAME": "quackback-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/quackback/data && mkdir -p /etc/user/data/quackback/db && mkdir -p /etc/user/data/quackback/minio && mkdir -p /etc/user/data/quackback/dragonfly",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "safebox/postgres-quackback:18",
"UPDATE": "true",
"NAME": "quackbackpostgres-db",
"MEMORY": "256M",
"NETWORK": "quackback-net",
"SELECTOR": "quackbackpostgres-db",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/quackback/db",
"DEST": "/var/lib/postgresql",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "5432",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/quackback/quackback.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "postgres -c shared_preload_libraries=pg_cron -c cron.database_name=quackback -c max_connections=200",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "minio/minio:latest",
"UPDATE": "true",
"NAME": "quackbackminio-app",
"MEMORY": "2048M",
"NETWORK": "quackback-net",
"SELECTOR": "quackbackminio-app",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/quackback/minio",
"DEST": "/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "9000",
"TYPE": "tcp"
},
{
"SOURCE": "null",
"DEST": "9001",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/quackback/quackback.json"
],
"EXTRA": "--restart always",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "server /data --console-address \":9001\"",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "docker.dragonflydb.io/dragonflydb/dragonfly:v1.27.1",
"UPDATE": "true",
"NAME": "quackbackredis-server",
"MEMORY": "4096M",
"NETWORK": "quackback-net",
"SELECTOR": "quackbackredis",
"PORTS": [
{
"SOURCE": "null",
"DEST": "6379",
"TYPE": "tcp"
}
],
"VOLUMES": [
{
"SOURCE": "/etc/user/data/quackback/dragonfly",
"DEST": "/data",
"TYPE": "rw"
}
],
"EXTRA": "--restart always --ulimit memlock=-1:-1",
"DEPEND": "null",
"START_ON_BOOT": "false",
"CMD": "dragonfly --cluster_mode=emulated --lock_on_hashtags",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "minio/mc:latest",
"UPDATE": "true",
"NAME": "quackbackminio-init",
"NETWORK": "quackback-net",
"MEMORY": "256M",
"ENV_FILES": [
"/etc/user/secret/quackback/quackback.json"
],
"EXTRA": "--rm",
"DEPEND": "null",
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mc alias set local http://quackbackminio-app:9000 \"$MINIO_ROOT_USER\" \"$MINIO_ROOT_PASSWORD\"; mc mb local/quackback --ignore-existing; mc anonymous set download local/quackback; exit 0;",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "safebox/quackback:#VERSION",
"UPDATE": "true",
"MEMORY": "4096M",
"NAME": "quackbackapp",
"NETWORK": "quackback-net",
"SELECTOR": "quackback-app",
"PORTS": [
{
"SOURCE": "null",
"DEST": "3000",
"TYPE": "tcp"
}
],
"ENVS": [
{
"REDIS_URL": "redis://quackbackredis-server:6379"
},
{
"BASE_URL": "https://#DOMAIN"
},
{
"DISABLE_TELEMETRY": "true"
},
{
"EMAIL_SMTP_HOST": "#SMTP_HOST"
},
{
"EMAIL_SMTP_PORT": "#SMTP_PORT"
},
{
"EMAIL_FROM": "#SMTP_FROM_EMAIL"
},
{
"OPENAI_OPENAI_BASE_URL": "#OPENAI_BASE_URL"
},
{
"S3_ENDPOINT": "http://quackbackminio-app:9000"
},
{
"S3_BUCKET": "#S3_BUCKET"
},
{
"S3_REGION": "#S3_REGION"
},
{
"S3_FORCE_PATH_STYLE": "true"
}
],
"ENV_FILES": [
"/etc/user/secret/quackback/quackback.json"
],
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "true",
"CMD": "null",
"PRE_START": "null",
"POST_START": [
"firewall-quackback",
"domain-quackback",
"firewall-quackback-dns",
"firewall-quackback-smtp"
]
}
]
}
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,7 +1,7 @@
{
"transmission": {
"TRANSMISSION_USER": "#TRANSMISSION_USER",
"TRANSMISSION_PASS": "#TRANSMISSION_PASS",
"USER": "#TRANSMISSION_USER",
"PASS": "#TRANSMISSION_PASS",
"WHITELIST": "#TRANSMISSION_WHITELIST",
"PEERPORT": "#TRANSMISSION_PEERPORT",
"HOST_WHITELIST": "#TRANSMISSION_HOST_WHITELIST"
+1 -1
View File
@@ -35,7 +35,7 @@
"VOLUMES": [
{
"SOURCE": "/etc/user/data/vaultwarden/db",
"DEST": "/var/lib/postgresql/data",
"DEST": "/var/lib/postgres",
"TYPE": "rw"
}
],