Compare commits
5 Commits
dev
..
9827a6bd85
| Author | SHA1 | Date | |
|---|---|---|---|
| 9827a6bd85 | |||
| 9fe2be7b26 | |||
| 48a20f2681 | |||
| db6a375c5e | |||
| 7eda10b29d |
Vendored
-1
@@ -1 +0,0 @@
|
|||||||
*tmp*
|
|
||||||
@@ -1,201 +1,51 @@
|
|||||||
# default-applications-tree
|
# 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",
|
||||||
{
|
"version": "latest"
|
||||||
"name": "Nextcloud",
|
|
||||||
"subtitle": "File Synchronization",
|
|
||||||
"version": "31.0.8-fpm-alpine",
|
|
||||||
"icon": "data:image/svg+xml;base64,..."
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
The name must be the same as the directory name of the application.
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "vaultwarden",
|
||||||
|
"fields": [
|
||||||
|
...
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
|
||||||
|
|
||||||
### App entry fields
|
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:
|
||||||
|
|
||||||
| Field | Required | Description |
|
"value": "yes,no"
|
||||||
|------------|----------|-------------|
|
"value": "1:gmail,2:microsoft outlook/hotmail,3:other",
|
||||||
| `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,...`). |
|
|
||||||
|
|
||||||
---
|
- generated - the value of the variable is auto generated, so the field will not appear in the form. Generated examples:
|
||||||
|
|
||||||
## Application directory structure
|
"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
|
||||||
|
|
||||||
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.
|
Field element 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
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## template.json
|
|
||||||
|
|
||||||
The `template.json` file defines the application's metadata and the list of configuration fields that are presented in the deployment form.
|
|
||||||
|
|
||||||
### Top-level structure
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
{
|
||||||
"name": "Nextcloud",
|
"description": "Please add Nextcloud password:",
|
||||||
"title": "Nextcloud",
|
"key": "NEXTCLOUD_PASSWORD",
|
||||||
"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": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"type": "password",
|
"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"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -21,7 +21,7 @@
|
|||||||
"DEPEND": "null",
|
"DEPEND": "null",
|
||||||
"START_ON_BOOT": "false",
|
"START_ON_BOOT": "false",
|
||||||
"ENTRYPOINT": "sh -c",
|
"ENTRYPOINT": "sh -c",
|
||||||
"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",
|
"CMD": "mkdir -p /etc/user/data/jellyfin/media && mkdir -p /etc/user/data/transmission/downloads/complete",
|
||||||
"PRE_START": "null",
|
"PRE_START": "null",
|
||||||
"POST_START": "null"
|
"POST_START": "null"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
"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": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "gitea-app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET": "smtp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TYPE": "tcp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET_PORT": "25"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"COMMENT": "gitea to smtp"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"EXTRA": "--privileged --rm",
|
|
||||||
"DEPEND": "null",
|
|
||||||
"START_ON_BOOT": "false",
|
|
||||||
"CMD": "null",
|
|
||||||
"PRE_START": "null",
|
|
||||||
"POST_START": "null"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -29,13 +29,13 @@
|
|||||||
"IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0",
|
"IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0",
|
||||||
"UPDATE": "true",
|
"UPDATE": "true",
|
||||||
"NAME": "immichpostgres-db",
|
"NAME": "immichpostgres-db",
|
||||||
"MEMORY": "768M",
|
"MEMORY": "512M",
|
||||||
"NETWORK": "immich-net",
|
"NETWORK": "immich-net",
|
||||||
"SELECTOR": "immichpostgres",
|
"SELECTOR": "immichpostgres",
|
||||||
"VOLUMES": [
|
"VOLUMES": [
|
||||||
{
|
{
|
||||||
"SOURCE": "/etc/user/data/immich/db",
|
"SOURCE": "/etc/user/data/immich/db",
|
||||||
"DEST": "/var/lib/postgresql/data",
|
"DEST": "/var/lib/postgres",
|
||||||
"TYPE": "rw"
|
"TYPE": "rw"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -49,11 +49,6 @@
|
|||||||
"ENV_FILES": [
|
"ENV_FILES": [
|
||||||
"/etc/user/secret/immich/immich.json"
|
"/etc/user/secret/immich/immich.json"
|
||||||
],
|
],
|
||||||
"ENVS": [
|
|
||||||
{
|
|
||||||
"POSTGRES_INITDB_ARGS": "--data-checksums"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"EXTRA": "--restart always",
|
"EXTRA": "--restart always",
|
||||||
"DEPEND": "null",
|
"DEPEND": "null",
|
||||||
"START_ON_BOOT": "false",
|
"START_ON_BOOT": "false",
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
"POST_START": "null"
|
"POST_START": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"IMAGE": "jellyfin/jellyfin:#VERSION",
|
"IMAGE": "jellyfin/jellyfin:latest",
|
||||||
"UPDATE": "true",
|
"UPDATE": "true",
|
||||||
"NAME": "jellyfin",
|
"NAME": "jellyfin",
|
||||||
"NETWORK": "host",
|
"NETWORK": "host",
|
||||||
|
|||||||
@@ -9,13 +9,6 @@
|
|||||||
"description": "Domain",
|
"description": "Domain",
|
||||||
"key": "DOMAIN",
|
"key": "DOMAIN",
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Version",
|
|
||||||
"key": "VERSION",
|
|
||||||
"value": "2025081105",
|
|
||||||
"info": "Latest stable official version at the time of template creation.",
|
|
||||||
"advanced": "true"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,12 @@
|
|||||||
"value": "",
|
"value": "",
|
||||||
"required": "true"
|
"required": "true"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "Deploy name",
|
||||||
|
"key": "LEANTIME_SITENAME",
|
||||||
|
"value": "LeanTime",
|
||||||
|
"advanced": "true"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "Language",
|
"description": "Language",
|
||||||
"key": "LEANTIME_LANG",
|
"key": "LEANTIME_LANG",
|
||||||
@@ -21,12 +27,6 @@
|
|||||||
"key": "LEANTIME_TZ",
|
"key": "LEANTIME_TZ",
|
||||||
"value": "Europe/Budapest"
|
"value": "Europe/Budapest"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"description": "Deploy name",
|
|
||||||
"key": "LEANTIME_SITENAME",
|
|
||||||
"value": "Leantime",
|
|
||||||
"advanced": "true"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"description": "Public login",
|
"description": "Public login",
|
||||||
"key": "DISABLE_LOGIN",
|
"key": "DISABLE_LOGIN",
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
"main": {
|
|
||||||
"SERVICE_NAME": "matrix",
|
|
||||||
"DOMAIN": "#ADMINDOMAIN"
|
|
||||||
},
|
|
||||||
"containers": [
|
|
||||||
{
|
|
||||||
"IMAGE": "safebox/domain-check",
|
|
||||||
"UPDATE": "true",
|
|
||||||
"MEMORY": "64M",
|
|
||||||
"NAME": "domain_checker",
|
|
||||||
"ROLES": "domain_checker",
|
|
||||||
"NETWORK": "host",
|
|
||||||
"SELECTOR": "",
|
|
||||||
"SCALE": "0",
|
|
||||||
"EXTRA": "--rm --privileged",
|
|
||||||
"PRE_START": [],
|
|
||||||
"DEPEND": [],
|
|
||||||
"POST_START": [],
|
|
||||||
"CMD": "",
|
|
||||||
"ENVS": [
|
|
||||||
{
|
|
||||||
"PROXY": "smarthostloadbalancer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET": "matrixadmin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PORT": "80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DOMAIN": "#ADMINDOMAIN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"LOCATION": "#SUBPATH"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"OPERATION": "CREATE"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"VOLUMES": [
|
|
||||||
{
|
|
||||||
"SOURCE": "/etc/user/config/smarthost-domains",
|
|
||||||
"DEST": "/smarthost-domains",
|
|
||||||
"TYPE": "rw"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "/etc/system/data/dns/hosts.local",
|
|
||||||
"DEST": "/etc/dns/hosts.local",
|
|
||||||
"TYPE": "ro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "/var/run/docker.sock",
|
|
||||||
"DEST": "/var/run/docker.sock",
|
|
||||||
"TYPE": "rw"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "matrixadmin"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TYPE": "tcp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET_PORT": "80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"COMMENT": "matrixadmin for proxy"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"EXTRA": "--privileged --rm",
|
|
||||||
"DEPEND": "null",
|
|
||||||
"START_ON_BOOT": "false",
|
|
||||||
"CMD": "null",
|
|
||||||
"PRE_START": "null",
|
|
||||||
"POST_START": "null"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
"main": {
|
|
||||||
"SERVICE_NAME": "firewalls",
|
|
||||||
"DOMAIN": "null"
|
|
||||||
},
|
|
||||||
"containers": [
|
|
||||||
{
|
|
||||||
"IMAGE": "safebox/firewall",
|
|
||||||
"UPDATE": "true",
|
|
||||||
"NAME": "firewall",
|
|
||||||
"MEMORY": "64M",
|
|
||||||
"NETWORK": "host",
|
|
||||||
"SCALE": "0",
|
|
||||||
"VOLUMES": [
|
|
||||||
{
|
|
||||||
"SOURCE": "/run/",
|
|
||||||
"DEST": "/run/",
|
|
||||||
"TYPE": "rw"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "/etc/user/config/services",
|
|
||||||
"DEST": "/services",
|
|
||||||
"TYPE": "ro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "/etc/system/data/dns/hosts.local",
|
|
||||||
"DEST": "/etc/dns/hosts.local",
|
|
||||||
"TYPE": "ro"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "/var/run/docker.sock",
|
|
||||||
"DEST": "/var/run/docker.sock",
|
|
||||||
"TYPE": "rw"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"PORTS": [],
|
|
||||||
"READYNESS": [
|
|
||||||
{
|
|
||||||
"tcp": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"HTTP": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"EXEC": "/ready.sh"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ENVS": [
|
|
||||||
{
|
|
||||||
"CHAIN": "DOCKER-USER"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SOURCE": "matrixserver"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET": "coredns"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TYPE": "udp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"TARGET_PORT": "53"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"COMMENT": "matrix nginx access for local dns"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"EXTRA": "--privileged --rm",
|
|
||||||
"DEPEND": "null",
|
|
||||||
"START_ON_BOOT": "false",
|
|
||||||
"CMD": "",
|
|
||||||
"PRE_START": [],
|
|
||||||
"POST_START": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,199 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"main": {
|
"main": {
|
||||||
"SERVICE_NAME": "nextcloud",
|
"SERVICE_NAME": "nextcloud",
|
||||||
"DOMAIN": "#DOMAIN"
|
"DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS"
|
||||||
},
|
},
|
||||||
"containers": [
|
"containers": [
|
||||||
{
|
{
|
||||||
@@ -19,24 +19,12 @@
|
|||||||
"POST_START": [],
|
"POST_START": [],
|
||||||
"CMD": "",
|
"CMD": "",
|
||||||
"ENVS": [
|
"ENVS": [
|
||||||
{
|
{ "PROXY": "smarthostloadbalancer" },
|
||||||
"PROXY": "smarthostloadbalancer"
|
{ "TARGET": "nextcloudnginx" },
|
||||||
},
|
{ "PORT": "80" },
|
||||||
{
|
{ "DOMAIN": "#NEXTCLOUD_TRUSTED_DOMAINS" },
|
||||||
"TARGET": "nextcloudnginx"
|
{ "SMARTHOST_PROXY_PATH": "/smarthost-domains" },
|
||||||
},
|
{ "OPERATION": "CREATE" }
|
||||||
{
|
|
||||||
"PORT": "80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DOMAIN": "#DOMAIN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"SMARTHOST_PROXY_PATH": "/smarthost-domains"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"OPERATION": "CREATE"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"VOLUMES": [
|
"VOLUMES": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"nextcloudpostgres": {
|
"nextcloudmysql": {
|
||||||
"POSTGRES_DB": "#POSTGRES_DB",
|
"MARIADB_DATABASE": "#MARIADB_DATABASE",
|
||||||
"POSTGRES_USER": "#POSTGRES_USER",
|
"MARIADB_USER": "#MARIADB_USER",
|
||||||
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
|
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
|
||||||
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
|
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
|
||||||
},
|
},
|
||||||
"nextcloudphp": {
|
"nextcloudphp": {
|
||||||
"NEXTCLOUD_ADMIN_USER": "#NEXTCLOUD_ADMIN_USER",
|
"NEXTCLOUD_ADMIN_USER": "#NEXTCLOUD_ADMIN_USER",
|
||||||
"NEXTCLOUD_ADMIN_PASSWORD": "#NEXTCLOUD_ADMIN_PASSWORD",
|
"NEXTCLOUD_ADMIN_PASSWORD": "#NEXTCLOUD_ADMIN_PASSWORD",
|
||||||
"DOMAIN": "#DOMAIN",
|
"NEXTCLOUD_TRUSTED_DOMAINS": "#NEXTCLOUD_TRUSTED_DOMAINS",
|
||||||
"OVERWRITEHOST": "#DOMAIN",
|
"OVERWRITEHOST": "#NEXTCLOUD_TRUSTED_DOMAINS",
|
||||||
"NEXTCLOUD_DATA_DIR": "/var/data",
|
"NEXTCLOUD_DATA_DIR": "/var/data",
|
||||||
"POSTGRES_DB": "#POSTGRES_DB",
|
"MYSQL_DATABASE": "#MARIADB_DATABASE",
|
||||||
"POSTGRES_USER": "#POSTGRES_USER",
|
"MYSQL_USER": "#MARIADB_USER",
|
||||||
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
|
"MYSQL_PASSWORD": "#MARIADB_PASSWORD",
|
||||||
"POSTGRES_HOST": "nextcloudpostgres-db",
|
"MYSQL_HOST": "nextcloudmysql-db",
|
||||||
"REDIS_HOST": "nextcloud-redis"
|
"REDIS_HOST": "nextcloud-redis"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,31 +34,47 @@
|
|||||||
"DEPEND": "null",
|
"DEPEND": "null",
|
||||||
"START_ON_BOOT": "false",
|
"START_ON_BOOT": "false",
|
||||||
"ENTRYPOINT": "sh -c",
|
"ENTRYPOINT": "sh -c",
|
||||||
"CMD": "mkdir -p /etc/user/data/nextcloud/db && mkdir -p /etc/user/data/nextcloud/apps && mkdir -p /etc/user/data/nextcloud/config && mkdir -p /etc/user/data/nextcloud/data && chmod 777 -R /etc/user/data/nextcloud && chmod 0770 -R /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/apps && chown -R 82:82 /etc/user/data/nextcloud/config",
|
"CMD": "mkdir -p /etc/user/data/nextcloud/db && mkdir -p /etc/system/log/nextcloud/db && mkdir -p /etc/user/data/nextcloud/apps && mkdir -p /etc/user/data/nextcloud/config && mkdir -p /etc/user/data/nextcloud/data && chmod 777 -R /etc/user/data/nextcloud && chmod 0770 -R /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/data && chown -R 82:82 /etc/user/data/nextcloud/apps && chown -R 82:82 /etc/user/data/nextcloud/config",
|
||||||
"PRE_START": "null",
|
"PRE_START": "null",
|
||||||
"POST_START": "null"
|
"POST_START": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"IMAGE": "postgres:15-alpine",
|
"IMAGE": "mariadb:10.5",
|
||||||
"UPDATE": "true",
|
"UPDATE": "true",
|
||||||
"NAME": "nextcloudpostgres-db",
|
"NAME": "nextcloudmysql-db",
|
||||||
"MEMORY": "256M",
|
"MEMORY": "256M",
|
||||||
"NETWORK": "nextcloud-net",
|
"NETWORK": "nextcloud-net",
|
||||||
"SELECTOR": "nextcloudpostgres",
|
"SELECTOR": "nextcloudmysql",
|
||||||
"VOLUMES": [
|
"VOLUMES": [
|
||||||
{
|
{
|
||||||
"SOURCE": "/etc/user/data/nextcloud/db",
|
"SOURCE": "/etc/user/data/nextcloud/db",
|
||||||
"DEST": "/var/lib/postgresql/data",
|
"DEST": "/var/lib/mysql",
|
||||||
|
"TYPE": "rw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SOURCE": "/etc/system/log/nextcloud/db",
|
||||||
|
"DEST": "/var/lib/mysql/mysql-bin",
|
||||||
"TYPE": "rw"
|
"TYPE": "rw"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"PORTS": [
|
"PORTS": [
|
||||||
{
|
{
|
||||||
"SOURCE": "null",
|
"SOURCE": "null",
|
||||||
"DEST": "5432",
|
"DEST": "3306",
|
||||||
"TYPE": "tcp"
|
"TYPE": "tcp"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"READYNESS": [
|
||||||
|
{
|
||||||
|
"tcp": "3306"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HTTP": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"EXEC": "/ready.sh"
|
||||||
|
}
|
||||||
|
],
|
||||||
"ENV_FILES": [
|
"ENV_FILES": [
|
||||||
"/etc/user/secret/nextcloud/nextcloud.json"
|
"/etc/user/secret/nextcloud/nextcloud.json"
|
||||||
],
|
],
|
||||||
@@ -166,7 +182,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"IMAGE": "safebox/nextcloud-nginx:latest",
|
"IMAGE": "registry.format.hu/nextcloud-nginx:1.23.1",
|
||||||
"UPDATE": "true",
|
"UPDATE": "true",
|
||||||
"NAME": "nextcloudnginx",
|
"NAME": "nextcloudnginx",
|
||||||
"ROLES": "backend-www",
|
"ROLES": "backend-www",
|
||||||
|
|||||||
+12
-10
@@ -8,13 +8,15 @@
|
|||||||
{
|
{
|
||||||
"title": "",
|
"title": "",
|
||||||
"details": "",
|
"details": "",
|
||||||
|
"info": "Nextcloud domain info",
|
||||||
"description": "Domain",
|
"description": "Domain",
|
||||||
"key": "DOMAIN",
|
"key": "NEXTCLOUD_TRUSTED_DOMAINS",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true"
|
"required": "true"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"details": "",
|
"details": "",
|
||||||
|
"info": "Nextcloud user name info",
|
||||||
"description": "Username",
|
"description": "Username",
|
||||||
"key": "NEXTCLOUD_ADMIN_USER",
|
"key": "NEXTCLOUD_ADMIN_USER",
|
||||||
"value": "",
|
"value": "",
|
||||||
@@ -30,34 +32,34 @@
|
|||||||
{
|
{
|
||||||
"description": "Version",
|
"description": "Version",
|
||||||
"key": "VERSION",
|
"key": "VERSION",
|
||||||
"value": "31.0.8-fpm-alpine",
|
"value": "26.0.13-fpm-alpine",
|
||||||
"info": "Please keep in mind you can't upgrade major version without skipping a version!",
|
"info": "Please keep in mind you can't upgrade major version without skipping a version!",
|
||||||
"advanced": "true"
|
"advanced": "true"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres database name",
|
"description": "MYSQL database name",
|
||||||
"key": "POSTGRES_DB",
|
"key": "MARIADB_DATABASE",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "time|md5|8"
|
"generated": "time|md5|8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres username",
|
"description": "MYSQL username",
|
||||||
"key": "POSTGRES_USER",
|
"key": "MARIADB_USER",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "time|md5|8"
|
"generated": "time|md5|8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres password for user",
|
"description": "MYSQL password for user",
|
||||||
"key": "POSTGRES_PASSWORD",
|
"key": "MARIADB_PASSWORD",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "random|md5|12"
|
"generated": "random|md5|12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres root user password",
|
"description": "MYSQL root user password",
|
||||||
"key": "POSTGRES_ROOT_PASSWORD",
|
"key": "MARIADB_ROOT_PASSWORD",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "random|sha256|20"
|
"generated": "random|sha256|20"
|
||||||
|
|||||||
@@ -7,31 +7,6 @@
|
|||||||
"outlineapp": {
|
"outlineapp": {
|
||||||
"SECRET_KEY": "#SECRET_KEY",
|
"SECRET_KEY": "#SECRET_KEY",
|
||||||
"UTILS_SECRET": "#UTILS_SECRET",
|
"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"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,10 +108,10 @@
|
|||||||
"DATABASE_CONNECTION_POOL_MAX": ""
|
"DATABASE_CONNECTION_POOL_MAX": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"REDIS_URL": "redis://outlineredis-server:6379"
|
"REDIS_URL": "redis://outlineredis-app:6379"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"URL": "https://#DOMAIN"
|
"URL": "https://#OUTLINE_DOMAIN"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"PORT": 3000
|
"PORT": 3000
|
||||||
|
|||||||
@@ -52,174 +52,6 @@
|
|||||||
"key": "DOMAIN",
|
"key": "DOMAIN",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true"
|
"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"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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": "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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
"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,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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"quackbackpostgres": {
|
|
||||||
"POSTGRES_DB": "#DB_NAME",
|
|
||||||
"POSTGRES_USER": "#DB_USER",
|
|
||||||
"POSTGRES_PASSWORD": "#DB_PASSWORD",
|
|
||||||
"POSTGRES_ROOT_PASSWORD": "#DB_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://#DB_USER:#DB_PASSWORD@quackbackpostgres-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",
|
|
||||||
"GITHUB_CLIENT_ID": "#GITHUB_CLIENT_ID",
|
|
||||||
"GITHUB_CLIENT_SECRET": "#GITHUB_CLIENT_SECRET",
|
|
||||||
"EMAIL_SMTP_USER": "#SMTP_USERNAME",
|
|
||||||
"EMAIL_SMTP_PASS": "#SMTP_PASSWORD"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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:latest",
|
|
||||||
"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": "quackback"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"S3_REGION": "europe-east-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"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
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+22
-25
File diff suppressed because one or more lines are too long
@@ -43,7 +43,7 @@
|
|||||||
"description": "Host whitelist",
|
"description": "Host whitelist",
|
||||||
"key": "TRANSMISSION_HOST_WHITELIST",
|
"key": "TRANSMISSION_HOST_WHITELIST",
|
||||||
"value": "",
|
"value": "",
|
||||||
"advanced": "true"
|
"advance": "true"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"transmission": {
|
"transmission": {
|
||||||
"TRANSMISSION_USER": "#TRANSMISSION_USER",
|
"USER": "#TRANSMISSION_USER",
|
||||||
"TRANSMISSION_PASS": "#TRANSMISSION_PASS",
|
"PASS": "#TRANSMISSION_PASS",
|
||||||
"WHITELIST": "#TRANSMISSION_WHITELIST",
|
"WHITELIST": "#TRANSMISSION_WHITELIST",
|
||||||
"PEERPORT": "#TRANSMISSION_PEERPORT",
|
"PEERPORT": "#TRANSMISSION_PEERPORT",
|
||||||
"HOST_WHITELIST": "#TRANSMISSION_HOST_WHITELIST"
|
"HOST_WHITELIST": "#TRANSMISSION_HOST_WHITELIST"
|
||||||
|
|||||||
@@ -15,34 +15,44 @@
|
|||||||
"SOURCE": "USER_DATA",
|
"SOURCE": "USER_DATA",
|
||||||
"DEST": "/etc/user/data",
|
"DEST": "/etc/user/data",
|
||||||
"TYPE": "rw"
|
"TYPE": "rw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SOURCE": "SYSTEM_LOG",
|
||||||
|
"DEST": "/etc/system/log",
|
||||||
|
"TYPE": "rw"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"EXTRA": "--rm",
|
"EXTRA": "--rm",
|
||||||
"DEPEND": "null",
|
"DEPEND": "null",
|
||||||
"START_ON_BOOT": "false",
|
"START_ON_BOOT": "false",
|
||||||
"ENTRYPOINT": "sh -c",
|
"ENTRYPOINT": "sh -c",
|
||||||
"CMD": "mkdir -p /etc/user/data/vaultwarden/data && mkdir -p /etc/user/data/vaultwarden/db",
|
"CMD": "mkdir -p /etc/user/data/vaultwarden/data && mkdir -p /etc/user/data/vaultwarden/db && mkdir -p /etc/system/log/vaultwarden/db",
|
||||||
"PRE_START": "null",
|
"PRE_START": "null",
|
||||||
"POST_START": "null"
|
"POST_START": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"IMAGE": "postgres:15-alpine",
|
"IMAGE": "mariadb:latest",
|
||||||
"UPDATE": "true",
|
"UPDATE": "true",
|
||||||
"NAME": "vaultwardenpostgres-db",
|
"NAME": "vaultwardenmysql-db",
|
||||||
"MEMORY": "256M",
|
"MEMORY": "256M",
|
||||||
"NETWORK": "vaultwarden-net",
|
"NETWORK": "vaultwarden-net",
|
||||||
"SELECTOR": "vaultwardenpostgres-db",
|
"SELECTOR": "vaultwardenmysql-db",
|
||||||
"VOLUMES": [
|
"VOLUMES": [
|
||||||
{
|
{
|
||||||
"SOURCE": "/etc/user/data/vaultwarden/db",
|
"SOURCE": "/etc/user/data/vaultwarden/db",
|
||||||
"DEST": "/var/lib/postgresql/data",
|
"DEST": "/var/lib/mysql",
|
||||||
|
"TYPE": "rw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SOURCE": "/etc/system/log/vaultwarden/db",
|
||||||
|
"DEST": "/var/lib/mysql/mysql-bin",
|
||||||
"TYPE": "rw"
|
"TYPE": "rw"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"PORTS": [
|
"PORTS": [
|
||||||
{
|
{
|
||||||
"SOURCE": "null",
|
"SOURCE": "null",
|
||||||
"DEST": "5432",
|
"DEST": "3306",
|
||||||
"TYPE": "tcp"
|
"TYPE": "tcp"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -12,29 +12,29 @@
|
|||||||
"required": "true"
|
"required": "true"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres database name",
|
"description": "MYSQL database name",
|
||||||
"key": "POSTGRES_DB",
|
"key": "MARIADB_DATABASE",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": ""
|
"generated": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres username",
|
"description": "MYSQL username",
|
||||||
"key": "POSTGRES_USER",
|
"key": "MARIADB_USER",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "time|md5|8"
|
"generated": "time|md5|8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres password for user",
|
"description": "MYSQL password for user",
|
||||||
"key": "POSTGRES_PASSWORD",
|
"key": "MARIADB_PASSWORD",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "random|md5|12"
|
"generated": "random|md5|12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Postgres root user password",
|
"description": "MYSQL root user password",
|
||||||
"key": "POSTGRES_ROOT_PASSWORD",
|
"key": "MARIADB_ROOT_PASSWORD",
|
||||||
"value": "",
|
"value": "",
|
||||||
"required": "true",
|
"required": "true",
|
||||||
"generated": "random|sha256|20"
|
"generated": "random|sha256|20"
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
"description": "SMTP from Mail Adress",
|
"description": "SMTP from Mail Adress",
|
||||||
"key": "VAULTWARDEN_SMTP_FROM",
|
"key": "VAULTWARDEN_SMTP_FROM",
|
||||||
"value": "",
|
"value": "",
|
||||||
|
"required": "true",
|
||||||
"advanced": "true"
|
"advanced": "true"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -95,6 +96,7 @@
|
|||||||
"description": "Domains whitelist",
|
"description": "Domains whitelist",
|
||||||
"key": "SIGNUPS_DOMAINS_WHITELIST",
|
"key": "SIGNUPS_DOMAINS_WHITELIST",
|
||||||
"value": "",
|
"value": "",
|
||||||
|
"required": "true",
|
||||||
"advanced": "true"
|
"advanced": "true"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"vaultwardenpostgres": {
|
"vaultwardenmysql": {
|
||||||
"POSTGRES_DB": "#POSTGRES_DB",
|
"MARIADB_DATABASE": "#MARIADB_DATABASE",
|
||||||
"POSTGRES_USER": "#POSTGRES_USER",
|
"MARIADB_USER": "#MARIADB_USER",
|
||||||
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
|
"MARIADB_PASSWORD": "#MARIADB_PASSWORD",
|
||||||
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
|
"MARIADB_ROOT_PASSWORD": "#MARIADB_ROOT_PASSWORD"
|
||||||
},
|
},
|
||||||
"vaultwardenapp": {
|
"vaultwardenapp": {
|
||||||
"DATABASE_URL": "'postgresql://#POSTGRES_USER:#POSTGRES_PASSWORD@vaultwardenpostgres-db:5432/#POSTGRES_DB'",
|
"DATABASE_URL": "'mysql://#MARIADB_USER:#MARIADB_PASSWORD@vaultwardenmysql-db:3306/#MARIADB_DATABASE'",
|
||||||
"ADMIN_TOKEN": "#ADMIN_TOKEN",
|
"ADMIN_TOKEN": "#ADMIN_TOKEN",
|
||||||
"VAULTWARDEN_DOMAIN": "#VAULTWARDEN_DOMAIN",
|
"VAULTWARDEN_DOMAIN": "#VAULTWARDEN_DOMAIN",
|
||||||
"VAULTWARDEN_SMTP_PASSWORD": "#VAULTWARDEN_SMTP_PASSWORD"
|
"VAULTWARDEN_SMTP_PASSWORD": "#VAULTWARDEN_SMTP_PASSWORD"
|
||||||
|
|||||||
Reference in New Issue
Block a user