Compare commits

..

1 Commits

Author SHA1 Message Date
Trez.One ab4d6c2242 Typo fix for Soularr.
Gitea Branch PR, SonarQube Analyze, and Merge Workflow / Check and Create PR (push) Has been cancelled
Gitea Branch PR, SonarQube Analyze, and Merge Workflow / Docker Compose Test (push) Has been cancelled
Gitea Branch PR, SonarQube Analyze, and Merge Workflow / Cloudflare DNS Setup (push) Has been cancelled
Gitea Branch PR, SonarQube Analyze, and Merge Workflow / PR Merge (push) Has been cancelled
2025-01-07 11:54:55 -05:00
6 changed files with 1630 additions and 475 deletions
+128
View File
@@ -0,0 +1,128 @@
name: Gitea Branch PR, SonarQube Analyze, and Merge Workflow
on:
push:
branches-ignore:
- main
jobs:
# Job 1: Check if PR exists and create one if the branch is new
check-and-create-pr:
name: Check and Create PR
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: PR list
id: list-prs
run: |
pr_check=$(curl ${{ vars.RINOA_GITEA_URL }}/api/v1/repos/${{ github.repository }}/pulls/main/${{ github.ref_name }} \
-X 'GET' \
-H 'Accept: application/json' \
-H 'Authorization: token ${{ secrets.BOT_GITEA_TOKEN }}' \
-sS | jq '{index: .number, state: .state}')
pr_state=$(echo ${pr_check} | jq -r '.state')
- name: Create PR
if: steps.list-prs.outputs.pr_state != 'open'
uses: arifer612/Gitea-PR-action@v1.2.0
with:
url: ${{ gitea.server_url }}
token: ${{ secrets.BOT_GITEA_TOKEN }}
pr-label: 'auto-deploy-pr'
docker-compose-test:
name: Docker Compose Test
needs: [check-and-create-pr]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate ephemeral .env compose file
id: generate-env-file-pr
run: |
echo "${{ secrets.RINOA_ENV }}" > .env
- name: Docker Compose Lint
uses: yu-ichiro/spin-up-docker-compose-action@v1
with:
file: docker-compose.yml
pull: true
pull-opts: --dry-run
up: true
up-opts: --dry-run -d --remove-orphans
env:
DOCKER_HOST: tcp://dockerproxy:2375
cloudflare-dns-setup:
name: Cloudflare DNS Setup
needs: [docker-compose-test]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install jq
uses: dcarbone/install-jq-action@v3.0.1
- name: Install yq
uses: dcarbone/install-yq-action@v1
- name: Install flarectl
uses: supplypike/setup-bin@v4
with:
uri: 'https://github.com/cloudflare/cloudflare-go/releases/download/v0.113.0/flarectl_0.113.0_linux_amd64.tar.gz'
name: 'flarectl'
version: '0.113.0'
- name: Grab Subdomains from Docker Compose & Cloudflare
id: grab-subdomains
env:
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }}
run: |
echo "Grabbing subdomains from docker-compose.yml..."
yq '.services[].labels.swag_url' docker-compose.yml | egrep -v 'null' | sed -e 's|"||g' | awk -F'.' '{print $1}' | sort > compose_subdomains.txt
echo "Grabbing subdomains from Cloudflare..."
flarectl --json dns list --zone "trez.wtf" --type=CNAME --content "trez.wtf" | jq '.[].Name' | sed -e 's|"||g' | awk -F"." '{print $1}' | sort > cloudflare_subdomains.txt
- name: Compare Subdomains
id: compare-subdomains
uses: LouisBrunner/diff-action@v2.2.0
with:
old: compose_subdomains.txt
new: cloudflare_subdomains.txt
mode: addition
tolerance: mixed-better
output: domain_compare.txt
- name: Create Subdomains
if: steps.compare-subdomains.outputs.output != ''
env:
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }}
run: |
cat domain_compare.txt | egrep '^-[a-z]' | sed -e 's|-||g' | while read -r subdomain; do
echo "Creating $subdomain.trez.wtf..."
flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf"
done
merge-pr:
name: PR Merge
runs-on: ubuntu-latest
if: ${{ always() }}
needs: [cloudflare-dns-setup]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Tea CLI Setup & PR Merge
run: |
curl -sSL https://dl.gitea.com/tea/main/tea-main-linux-amd64 -o /usr/local/bin/tea
chmod +x /usr/local/bin/tea
echo "Merging PR..."
tea login add --name gitea-rinoa --url ${{ vars.RINOA_GITEA_URL }} --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }}
pr_index=$(tea pr ls --repo ${{ github.repository }} --state open --fields index,title,head,state --output csv | egrep ${{ gitea.ref_name }} | awk -F, '{print $1}' | sed -e 's|"||g')
tea pr m --repo ${{ github.repository }} --title "${{ github.ref_name }} Auto Merge" --message "Merged by ${{ gitea.actor }}" --output table ${pr_index}
@@ -1,217 +0,0 @@
name: Gitea Branch PR, Cloudflare DNS, README generation, & Docker Deployment
on:
push:
branches-ignore:
- main
jobs:
check-and-create-pr:
name: Check and Create PR
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install tea
uses: supplypike/setup-bin@v4
with:
uri: 'https://gitea.com/gitea/tea/releases/download/v0.9.2/tea-0.9.2-linux-amd64'
name: 'tea'
version: '0.9.2'
- name: Check if open PR exists
id: check-opened-pr-step
continue-on-error: true
run: |
echo "Logging into Gitea..."
tea login add --name gitea-rinoa --url ${{ secrets.RINOA_GITEA_URL }} --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }}
echo "Setting default login to gitea-rinoa..."
tea login default gitea-rinoa
echo "Checking for existing PRs..."
pr_exists=$(tea pr list --repo ${{ github.repository }} --state open --fields index,title,head | egrep ${{ github.ref_name }} | tail -1 | wc -l)
echo ${pr_exists}
echo "exists=$pr_exists" >> $GITHUB_OUTPUT
- name: Create PR
if: ${{ steps.check-opened-pr-step.outputs.exists == '0' }}
run: |
echo "Creating PR for branch: ${{ github.ref_name }}"
tea pr c -r ${{ github.repository }} -t "Automated PR for ${{ github.ref_name }}" -d "Automatically created PR for branch: ${{ github.ref_name }}" -a ${{ github.actor }}
docker-compose-test:
name: Docker Compose Test
needs: [check-and-create-pr]
runs-on: ubuntu-latest
env:
VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install jq
uses: dcarbone/install-jq-action@v3.0.1
- name: Install Vault
uses: cpanato/vault-installer@main
with:
vault-release: '1.18.3'
- name: Generate .env file for linting
run: |
vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env
- name: Docker Compose Lint
uses: yu-ichiro/spin-up-docker-compose-action@v1
with:
file: docker-compose.yml
pull: true
pull-opts: --dry-run
up: true
up-opts: --dry-run -d --remove-orphans
env:
DOCKER_HOST: tcp://dockerproxy:2375
cloudflare-dns-setup:
name: Cloudflare DNS Setup
needs: [docker-compose-test]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install jq
uses: dcarbone/install-jq-action@v3.0.1
- name: Install yq
uses: dcarbone/install-yq-action@v1
- name: Install flarectl
uses: supplypike/setup-bin@v4
with:
uri: 'https://github.com/cloudflare/cloudflare-go/releases/download/v0.113.0/flarectl_0.113.0_linux_amd64.tar.gz'
name: 'flarectl'
version: '0.113.0'
- name: Grab Subdomains from Docker Compose & Cloudflare
id: grab-subdomains
env:
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }}
run: |
echo "Grabbing subdomains from docker-compose.yml..."
yq '.services[].labels.swag_url' docker-compose.yml | egrep -v 'null' | sed -e 's|"||g' | awk -F'.' '{print $1}' | sort > compose_subdomains.txt
echo "Grabbing subdomains from Cloudflare..."
flarectl --json dns list --zone "trez.wtf" --type=CNAME --content "trez.wtf" | jq '.[].Name' | sed -e 's|"||g' | awk -F"." '{print $1}' | sort > cloudflare_subdomains.txt
- name: Compare Subdomains
id: compare-subdomains
uses: LouisBrunner/diff-action@v2.2.0
with:
old: compose_subdomains.txt
new: cloudflare_subdomains.txt
mode: addition
tolerance: mixed-better
output: domain_compare.txt
- name: Create Subdomains
if: steps.compare-subdomains.outputs.output != ''
continue-on-error: true
env:
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }}
run: |
cat domain_compare.txt | egrep '^-[a-z]' | sed -e 's|-||g' | while read -r subdomain; do
echo "Creating $subdomain.trez.wtf..."
flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf" --proxy true
done
regenerate-readme:
name: Update README
runs-on: ubuntu-latest
needs: [cloudflare-dns-setup]
outputs:
pr-pushed: ${{ steps.commit-readme.outputs.pushed }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install yq
uses: dcarbone/install-yq-action@v1
- name: Generate service list
run: |
yq '.services | to_entries | map({"service": .key, "image": .value.image})' docker-compose.yml > services.yml
- name: Generate Markdown Table
uses: gazab/create-markdown-table@v1
id: service-table
with:
file: ./services.yml
- name: Regenerate README
run: |
echo "# List of Services" > README.md
echo -e "\n\n" >> README.md
echo "${{ steps.service-table.outputs.table }}" >> README.md
- name: Add/Commit README.md
id: commit-readme
uses: EndBug/add-and-commit@v9
with:
message: "chore: Update README"
add: "README.md"
pr-merge:
name: PR Merge
needs: [regenerate-readme]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tea
uses: supplypike/setup-bin@v4
with:
uri: 'https://gitea.com/gitea/tea/releases/download/v0.9.2/tea-0.9.2-linux-amd64'
name: 'tea'
version: '0.9.2'
- name: PR Merge
id: pr_merge
run: |
tea login add --name gitea-rinoa --url ${{ secrets.RINOA_GITEA_URL }} --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }}
tea login default gitea-rinoa
pr_index=$(tea pr ls --repo ${{ github.repository }} --state open --fields index,title,head,state --output csv | egrep ${{ gitea.ref_name }} | awk -F, '{print $1}' | sed -e 's|"||g')
tea pr m --repo ${{ github.repository }} --title "Auto Merge of PR #${pr_index} - ${{ gitea.ref_name }}" --message "Merged by ${{ gitea.actor }}" --output table ${pr_index}
docker-compose-deploy:
name: Deploy via Docker Compose
runs-on: ubuntu-latest
needs: [pr-merge]
env:
VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
DOCKER_HOST: tcp://dockerproxy:2375
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main
- name: Install Vault
uses: cpanato/vault-installer@main
- name: Generate .env file for deployment
run: |
vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env
- name: Docker Compose Deployment
uses: keatonLiu/docker-compose-remote-action@v1.2
with:
ssh_user: gitea-deploy
ssh_host: 192.168.1.254
ssh_host_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }}
ssh_private_key: ${{ secrets.RINOA_GITEA_PRIVATE_SSH_KEY }}
docker_compose_file: docker-compose.yml
+2 -1
View File
@@ -1 +1,2 @@
ansible/**
**/.env*
**/*env*
+585 -152
View File
@@ -1,155 +1,588 @@
# List of Services
```json
~> yq '.services | to_entries | map({service: .key, image: .value.image})' docker-compose.yml
| Service | Image |
| --- | --- |
| actual_server | docker.io/actualbudget/actual-server:latest |
| adguard | adguard/adguardhome:latest |
| apprise | lscr.io/linuxserver/apprise-api:latest |
| audiobookshelf | ghcr.io/advplyr/audiobookshelf:latest |
| authelia | authelia/authelia:master |
| authelia-pg | postgres:16-alpine |
| bazarr | lscr.io/linuxserver/bazarr:latest |
| bitmagnet | ghcr.io/bitmagnet-io/bitmagnet:latest |
| bitmagnet-pg-db | postgres:17-alpine |
| bitwarden | vaultwarden/server:latest |
| bluesky-pds | ghcr.io/bluesky-social/pds:latest |
| browserless | ghcr.io/browserless/chromium:latest |
| bunkerweb | bunkerity/bunkerweb:latest |
| bunkerweb-scheduler | bunkerity/bunkerweb-scheduler:latest |
| bunkerweb-ui | bunkerity/bunkerweb-ui:latest |
| castopod | castopod/castopod:latest |
| cloudflared | cloudflare/cloudflared:latest |
| cloudflareddns | ghcr.io/hotio/cloudflareddns:latest |
| crowdsec | crowdsecurity/crowdsec:latest |
| crowdsec-dashboard | metabase/metabase |
| czkawka | jlesage/czkawka |
| dagu-scheduler | ghcr.io/dagu-org/dagu:latest |
| dagu-server | ghcr.io/dagu-org/dagu:latest |
| delugevpn | ghcr.io/binhex/arch-delugevpn:latest |
| docker-socket-proxy | ghcr.io/tecnativa/docker-socket-proxy:latest |
| dockge | louislam/dockge:latest |
| docuseal | docuseal/docuseal:latest |
| duplicati | lscr.io/linuxserver/duplicati:latest |
| fastenhealth | ghcr.io/fastenhealth/fasten-onprem:main |
| flaresolverr | ghcr.io/flaresolverr/flaresolverr:latest |
| ghost | ghost:latest |
| gitea | gitea/gitea:1.23.1 |
| gitea-db | postgres:14 |
| gitea-opengist | ghcr.io/thomiceli/opengist:latest |
| gitea-runner | gitea/act_runner:latest |
| gitea-sonarqube-bot | justusbunsi/gitea-sonarqube-bot:v0.4.0 |
| gluetun | qmcgaw/gluetun:latest |
| gotify | gotify/server |
| grafana | grafana/grafana-enterprise:latest |
| grafana-alloy | grafana/alloy:latest |
| grafana-loki | grafana/loki:latest |
| grafana-mimir | grafana/mimir:latest |
| grafana-mimir-memcached | memcached |
| grafana-pyroscope | grafana/pyroscope:latest |
| grafana-tempo | grafana/tempo:latest |
| guacamole | flcontainers/guacamole:latest |
| homepage | ghcr.io/gethomepage/homepage:latest |
| hortusfox | ghcr.io/danielbrendel/hortusfox-web:latest |
| hugo | hugomods/hugo:exts |
| invidious | quay.io/invidious/invidious:latest |
| invidious-db | docker.io/library/postgres:14 |
| invoice_ninja | invoiceninja/invoiceninja:5 |
| invoice_ninja_proxy | nginx |
| it-tools | ghcr.io/corentinth/it-tools:latest |
| jellyfin | jellyfin/jellyfin |
| jitsi-etherpad | etherpad/etherpad:1.8.6 |
| jitsi-jibri | jitsi/jibri:stable |
| jitsi-jicofo | jitsi/jicofo:stable |
| jitsi-jigasi | jitsi/jigasi:stable |
| jitsi-jvb | jitsi/jvb:stable |
| jitsi-prosody | jitsi/prosody:stable |
| jitsi-web | jitsi/web:stable |
| joplin-db | postgres:17-alpine |
| joplin | joplin/server:latest |
| librespeed | lscr.io/linuxserver/librespeed:latest |
| lidarr | lscr.io/linuxserver/lidarr:latest |
| lidify | thewicklowwolf/lidify:latest |
| lldap | lldap/lldap:stable |
| localai | localai/localai:latest-aio-cpu |
| maloja | krateng/maloja:latest |
| mariadb | linuxserver/mariadb |
| mastodon | lscr.io/linuxserver/mastodon:latest |
| mastodon-pg-db | postgres:17-alpine |
| minio | minio/minio |
| mongodb | mongo:7.0 |
| multi-scrobbler | foxxmd/multi-scrobbler |
| n8n | docker.n8n.io/n8nio/n8n |
| navidrome | deluan/navidrome:latest |
| netbox | lscr.io/linuxserver/netbox:latest |
| netbox-db | postgres:17-alpine |
| nextcloud | lscr.io/linuxserver/nextcloud:latest |
| ollama | ollama/ollama |
| ombi | lscr.io/linuxserver/ombi:latest |
| paperless-ngx | ghcr.io/paperless-ngx/paperless-ngx:latest |
| plausible | ghcr.io/plausible/community-edition:v2.1.0 |
| plausible_db | postgres:16-alpine |
| plausible_events_db | clickhouse/clickhouse-server:24.3.3.102-alpine |
| postal-smtp | ghcr.io/postalserver/postal:latest |
| postal-web | ghcr.io/postalserver/postal:latest |
| postal-worker | ghcr.io/postalserver/postal:latest |
| prowlarr | lscr.io/linuxserver/prowlarr:latest |
| radarec | thewicklowwolf/radarec:latest |
| radarr | lscr.io/linuxserver/radarr:latest |
| reactive-resume | amruthpillai/reactive-resume:latest |
| reactive-resume-pg | postgres:16-alpine |
| readarr | lscr.io/linuxserver/readarr:develop |
| redis | redis:alpine |
| redlib | quay.io/redlib/redlib:latest |
| sabnzbdvpn | ghcr.io/binhex/arch-sabnzbdvpn:latest |
| scraperr | jpyles0524/scraperr:latest |
| scraperr-api | jpyles0524/scraperr_api:latest |
| scrutiny | ghcr.io/analogj/scrutiny:master-omnibus |
| searxng | searxng/searxng:latest |
| semaphore | semaphoreui/semaphore:v2.10.32 |
| slurpit-portal | slurpit/portal:latest |
| slurpit-scanner | slurpit/scanner:latest |
| slurpit-scraper | slurpit/scraper:latest |
| slurpit-warehouse | slurpit/warehouse:latest |
| sonarqube | mc1arke/sonarqube-with-community-branch-plugin:lts |
| sonarqube-pg-db | postgres:17-alpine |
| sonarr | lscr.io/linuxserver/sonarr:latest |
| sonashow | thewicklowwolf/sonashow:latest |
| soularr | mrusse08/soularr:latest |
| soulseek | slskd/slskd |
| spotisub | blastbeng/spotisub:latest |
| swag | lscr.io/linuxserver/swag:latest |
| synapse | docker.io/matrixdotorg/synapse:latest |
| synapse-db | postgres:16-alpine |
| tandoor | vabene1111/recipes |
| tandoor-pg | postgres:16-alpine |
| traccar | traccar/traccar:latest |
| traccar-pg | postgres:16-alpine |
| unmanic | josh5/unmanic:latest |
| uptimekuma | louislam/uptime-kuma:latest |
| vault | hashicorp/vault:latest |
| wallabag | wallabag/wallabag |
| wallos | bellamy/wallos:latest |
| watchtower | ghcr.io/containrrr/watchtower:latest |
| wazuh.agent | opennix/wazuh-agent:latest |
| wazuh.dashboard | wazuh/wazuh-dashboard: |
| wazuh.indexer | wazuh/wazuh-indexer: |
| wazuh.manager | wazuh/wazuh-manager: |
| web-check | lissy93/web-check |
| whodb | clidey/whodb |
| your_spotify | lscr.io/linuxserver/your_spotify:latest |
| youtubedl | nbr23/youtube-dl-server:latest |
| zammad-backup | postgres: |
| zammad-elasticsearch | bitnami/elasticsearch: |
| zammad-init | : |
| zammad-memcached | memcached: |
| zammad-nginx | : |
| zammad-postgresql | postgres: |
| zammad-railsserver | : |
| zammad-redis | redis: |
| zammad-scheduler | : |
| zammad-websocket | : |
| zitadel | ghcr.io/zitadel/zitadel:latest |
| zitadel-pg-db | postgres:16-alpine |
[
{
"service": "actual_server",
"image": "docker.io/actualbudget/actual-server:latest"
},
{
"service": "adguard",
"image": "adguard/adguardhome:latest"
},
{
"service": "apprise",
"image": "lscr.io/linuxserver/apprise-api:latest"
},
{
"service": "audiobookshelf",
"image": "ghcr.io/advplyr/audiobookshelf:latest"
},
{
"service": "authelia",
"image": "authelia/authelia:master"
},
{
"service": "authelia-pg",
"image": "postgres:16-alpine"
},
{
"service": "bazarr",
"image": "lscr.io/linuxserver/bazarr:latest"
},
{
"service": "bitmagnet",
"image": "ghcr.io/bitmagnet-io/bitmagnet:latest"
},
{
"service": "bitmagnet-pg-db",
"image": "postgres:17-alpine"
},
{
"service": "bitwarden",
"image": "vaultwarden/server:latest"
},
{
"service": "bluesky-pds",
"image": "ghcr.io/bluesky-social/pds:latest"
},
{
"service": "browserless",
"image": "ghcr.io/browserless/chromium:latest"
},
{
"service": "castopod",
"image": "castopod/castopod:latest"
},
{
"service": "cloudflared",
"image": "cloudflare/cloudflared:latest"
},
{
"service": "cloudflareddns",
"image": "ghcr.io/hotio/cloudflareddns:latest"
},
{
"service": "crowdsec",
"image": "crowdsecurity/crowdsec:latest"
},
{
"service": "crowdsec-dashboard",
"image": "metabase/metabase"
},
{
"service": "czkawka",
"image": "jlesage/czkawka"
},
{
"service": "dagu-scheduler",
"image": "ghcr.io/dagu-org/dagu:latest"
},
{
"service": "dagu-server",
"image": "ghcr.io/dagu-org/dagu:latest"
},
{
"service": "delugevpn",
"image": "ghcr.io/binhex/arch-delugevpn:latest"
},
{
"service": "docker-socket-proxy",
"image": "ghcr.io/tecnativa/docker-socket-proxy:latest"
},
{
"service": "docuseal",
"image": "docuseal/docuseal:latest"
},
{
"service": "duplicati",
"image": "lscr.io/linuxserver/duplicati:latest"
},
{
"service": "fastenhealth",
"image": "ghcr.io/fastenhealth/fasten-onprem:main"
},
{
"service": "flaresolverr",
"image": "ghcr.io/flaresolverr/flaresolverr:latest"
},
{
"service": "ghost",
"image": "ghost:latest"
},
{
"service": "gitea",
"image": "gitea/gitea:1.22.2"
},
{
"service": "gitea-db",
"image": "postgres:14"
},
{
"service": "gitea-opengist",
"image": "ghcr.io/thomiceli/opengist:latest"
},
{
"service": "gitea-runner",
"image": "gitea/act_runner:latest"
},
{
"service": "gitea-sonarqube-bot",
"image": "justusbunsi/gitea-sonarqube-bot:v0.4.0"
},
{
"service": "gluetun",
"image": "qmcgaw/gluetun:latest"
},
{
"service": "gotify",
"image": "gotify/server"
},
{
"service": "grafana",
"image": "grafana/grafana-enterprise:latest"
},
{
"service": "grafana-alloy",
"image": "grafana/alloy:latest"
},
{
"service": "grafana-loki",
"image": "grafana/loki:latest"
},
{
"service": "grafana-mimir",
"image": "grafana/mimir:latest"
},
{
"service": "grafana-mimir-memcached",
"image": "memcached"
},
{
"service": "grafana-pyroscope",
"image": "grafana/pyroscope:latest"
},
{
"service": "grafana-tempo",
"image": "grafana/tempo:latest"
},
{
"service": "homepage",
"image": "ghcr.io/gethomepage/homepage:latest"
},
{
"service": "hortusfox",
"image": "ghcr.io/danielbrendel/hortusfox-web:latest"
},
{
"service": "hugo",
"image": "hugomods/hugo:exts"
},
{
"service": "invidious",
"image": "quay.io/invidious/invidious:latest"
},
{
"service": "invidious-db",
"image": "docker.io/library/postgres:14"
},
{
"service": "invoice_ninja",
"image": "invoiceninja/invoiceninja:5"
},
{
"service": "invoice_ninja_proxy",
"image": "nginx"
},
{
"service": "it-tools",
"image": "ghcr.io/corentinth/it-tools:latest"
},
{
"service": "jellyfin",
"image": "jellyfin/jellyfin"
},
{
"service": "jitsi-etherpad",
"image": "etherpad/etherpad:1.8.6"
},
{
"service": "jitsi-jibri",
"image": "jitsi/jibri:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "jitsi-jicofo",
"image": "jitsi/jicofo:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "jitsi-jigasi",
"image": "jitsi/jigasi:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "jitsi-jvb",
"image": "jitsi/jvb:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "jitsi-prosody",
"image": "jitsi/prosody:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "jitsi-web",
"image": "jitsi/web:${JITSI_IMAGE_VERSION:-stable}"
},
{
"service": "joplin-db",
"image": "postgres:17-alpine"
},
{
"service": "joplin",
"image": "joplin/server:latest"
},
{
"service": "komodo-core",
"image": "ghcr.io/mbecker20/komodo:latest"
},
{
"service": "komodo-ferretdb",
"image": "ghcr.io/ferretdb/ferretdb"
},
{
"service": "komodo-periphery",
"image": "ghcr.io/mbecker20/periphery:latest"
},
{
"service": "komodo-pg-db",
"image": "postgres:17-alpine"
},
{
"service": "librespeed",
"image": "lscr.io/linuxserver/librespeed:latest"
},
{
"service": "lidarr",
"image": "lscr.io/linuxserver/lidarr:latest"
},
{
"service": "lidify",
"image": "thewicklowwolf/lidify:latest"
},
{
"service": "lldap",
"image": "lldap/lldap:stable"
},
{
"service": "localai",
"image": "localai/localai:latest-aio-cpu"
},
{
"service": "maloja",
"image": "krateng/maloja:latest"
},
{
"service": "mariadb",
"image": "ghcr.io/linuxserver/mariadb"
},
{
"service": "meshcentral",
"image": "ghcr.io/ylianst/meshcentral:master"
},
{
"service": "minio",
"image": "minio/minio"
},
{
"service": "mongodb",
"image": "mongo:7.0"
},
{
"service": "multi-scrobbler",
"image": "foxxmd/multi-scrobbler"
},
{
"service": "n8n",
"image": "docker.n8n.io/n8nio/n8n"
},
{
"service": "navidrome",
"image": "deluan/navidrome:latest"
},
{
"service": "netbox",
"image": "lscr.io/linuxserver/netbox:latest"
},
{
"service": "netbox-db",
"image": "postgres:17-alpine"
},
{
"service": "nextcloud",
"image": "lscr.io/linuxserver/nextcloud:latest"
},
{
"service": "ollama",
"image": "ollama/ollama"
},
{
"service": "ombi",
"image": "lscr.io/linuxserver/ombi:latest"
},
{
"service": "paperless-ngx",
"image": "ghcr.io/paperless-ngx/paperless-ngx:latest"
},
{
"service": "plausible",
"image": "ghcr.io/plausible/community-edition:v2.1.0"
},
{
"service": "plausible_db",
"image": "postgres:16-alpine"
},
{
"service": "plausible_events_db",
"image": "clickhouse/clickhouse-server:24.3.3.102-alpine"
},
{
"service": "postal-smtp",
"image": "ghcr.io/postalserver/postal:latest"
},
{
"service": "postal-web",
"image": "ghcr.io/postalserver/postal:latest"
},
{
"service": "postal-worker",
"image": "ghcr.io/postalserver/postal:latest"
},
{
"service": "prowlarr",
"image": "lscr.io/linuxserver/prowlarr:latest"
},
{
"service": "radarec",
"image": "thewicklowwolf/radarec:latest"
},
{
"service": "radarr",
"image": "lscr.io/linuxserver/radarr:latest"
},
{
"service": "reactive-resume",
"image": "amruthpillai/reactive-resume:latest"
},
{
"service": "reactive-resume-pg",
"image": "postgres:16-alpine"
},
{
"service": "readarr",
"image": "lscr.io/linuxserver/readarr:develop"
},
{
"service": "redis",
"image": "redis:alpine"
},
{
"service": "redlib",
"image": "quay.io/redlib/redlib:latest"
},
{
"service": "sabnzbdvpn",
"image": "ghcr.io/binhex/arch-sabnzbdvpn:latest"
},
{
"service": "scraperr",
"image": "jpyles0524/scraperr:latest"
},
{
"service": "scraperr-api",
"image": "jpyles0524/scraperr_api:latest"
},
{
"service": "scrutiny",
"image": "ghcr.io/analogj/scrutiny:master-omnibus"
},
{
"service": "searxng",
"image": "searxng/searxng:latest"
},
{
"service": "semaphore",
"image": "semaphoreui/semaphore:v2.10.32"
},
{
"service": "slurpit-portal",
"image": "slurpit/portal:latest"
},
{
"service": "slurpit-scanner",
"image": "slurpit/scanner:latest"
},
{
"service": "slurpit-scraper",
"image": "slurpit/scraper:latest"
},
{
"service": "slurpit-warehouse",
"image": "slurpit/warehouse:latest"
},
{
"service": "sonarqube",
"image": "mc1arke/sonarqube-with-community-branch-plugin:lts"
},
{
"service": "sonarqube-pg-db",
"image": "postgres:17-alpine"
},
{
"service": "sonarr",
"image": "lscr.io/linuxserver/sonarr:latest"
},
{
"service": "sonashow",
"image": "thewicklowwolf/sonashow:latest"
},
{
"service": "soulseek",
"image": "slskd/slskd"
},
{
"service": "spotisub",
"image": "blastbeng/spotisub:latest"
},
{
"service": "swag",
"image": "lscr.io/linuxserver/swag:latest"
},
{
"service": "synapse",
"image": "docker.io/matrixdotorg/synapse:latest"
},
{
"service": "synapse-db",
"image": "postgres:16-alpine"
},
{
"service": "tandoor",
"image": "vabene1111/recipes"
},
{
"service": "tandoor-pg",
"image": "postgres:16-alpine"
},
{
"service": "traccar",
"image": "traccar/traccar:latest"
},
{
"service": "traccar-pg",
"image": "postgres:16-alpine"
},
{
"service": "unmanic",
"image": "josh5/unmanic:latest"
},
{
"service": "uptimekuma",
"image": "louislam/uptime-kuma:latest"
},
{
"service": "vault",
"image": "hashicorp/vault:latest"
},
{
"service": "wallabag",
"image": "wallabag/wallabag"
},
{
"service": "wallos",
"image": "bellamy/wallos:latest"
},
{
"service": "watchtower",
"image": "ghcr.io/containrrr/watchtower:latest"
},
{
"service": "wazuh.agent",
"image": "opennix/wazuh-agent:latest"
},
{
"service": "wazuh.dashboard",
"image": "wazuh/wazuh-dashboard:${WAZUH_VERSION}"
},
{
"service": "wazuh.indexer",
"image": "wazuh/wazuh-indexer:${WAZUH_VERSION}"
},
{
"service": "wazuh.manager",
"image": "wazuh/wazuh-manager:${WAZUH_VERSION}"
},
{
"service": "web-check",
"image": "lissy93/web-check"
},
{
"service": "whodb",
"image": "clidey/whodb"
},
{
"service": "your_spotify",
"image": "lscr.io/linuxserver/your_spotify:latest"
},
{
"service": "youtubedl",
"image": "nbr23/youtube-dl-server:latest"
},
{
"service": "zammad-backup",
"image": "postgres:${ZAMMAD_POSTGRES_VERSION}"
},
{
"service": "zammad-elasticsearch",
"image": "bitnami/elasticsearch:${ZAMMAD_ELASTICSEARCH_VERSION}"
},
{
"service": "zammad-init",
"image": "${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}"
},
{
"service": "zammad-memcached",
"image": "memcached:${ZAMMAD_MEMCACHE_VERSION}"
},
{
"service": "zammad-nginx",
"image": "${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}"
},
{
"service": "zammad-postgresql",
"image": "postgres:${ZAMMAD_POSTGRES_VERSION}"
},
{
"service": "zammad-railsserver",
"image": "${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}"
},
{
"service": "zammad-redis",
"image": "redis:${ZAMMAD_REDIS_VERSION}"
},
{
"service": "zammad-scheduler",
"image": "${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}"
},
{
"service": "zammad-websocket",
"image": "${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}"
},
{
"service": "zitadel",
"image": "ghcr.io/zitadel/zitadel:latest"
},
{
"service": "zitadel-pg-db",
"image": "postgres:16-alpine"
}
]
```
+73 -105
View File
@@ -556,10 +556,7 @@ services:
castopod:
container_name: castopod
depends_on:
mariadb:
condition: service_started
required: true
restart: true
- mariadb
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
@@ -1157,7 +1154,7 @@ services:
GITEA__mailer__SMTP_PORT: 25
GITEA__mailer__USER: ${POSTAL_SMTP_AUTH_USER}
GITEA__mailer__PASSWD: ${POSTAL_SMTP_AUTH_PASSWORD}
image: gitea/gitea:1.23.1
image: gitea/gitea:1.22.6
labels:
homepage.group: Code/DevOps
homepage.name: Gitea
@@ -1185,7 +1182,7 @@ services:
restart: always
volumes:
- source: ${DOCKER_VOLUME_CONFIG}/gitea
target: /data/gitea
target: /data
type: bind
bind:
create_host_path: true
@@ -1709,7 +1706,6 @@ services:
mariadb:
condition: service_started
required: true
restart: true
environment:
APP_ADMIN_EMAIL: charish.patel@trez.wtf
APP_ADMIN_PASSWORD: ${HORTUSFOX_ADMIN_PASSWORD}
@@ -1806,7 +1802,7 @@ services:
db:
dbname: invidious
user: kemal
password: ${INVID_PG_DB_PASSWORD}
password: kemal
host: invidious-db
port: 5432
check_tables: true
@@ -1845,7 +1841,7 @@ services:
container_name: invidious-db
environment:
POSTGRES_DB: invidious
POSTGRES_PASSWORD: ${INVID_PG_DB_PASSWORD}
POSTGRES_PASSWORD: kemal
POSTGRES_USER: kemal
healthcheck:
test:
@@ -1872,11 +1868,6 @@ services:
create_host_path: true
invoice_ninja:
container_name: invoice_ninja
depends_on:
mariadb:
condition: service_started
required: true
restart: true
environment:
APP_DEBUG: true
APP_KEY: ${IN_APP_KEY}
@@ -2685,6 +2676,70 @@ services:
published: "22300"
target: 22300
restart: unless-stopped
komodo-core:
container_name: komodo-core
depends_on:
- komodo-ferretdb
- komodo-periphery
image: ghcr.io/mbecker20/komodo:latest
labels:
homepage.group: System Administration
homepage.name: Komodo
homepage.href: https://komodo.${MY_TLD}
homepage.icon: /icons/komodo.png
homepage.description: Open-source note taking & to-do
komodo.skip: a
swag: enable
swag_url: komodo.${MY_TLD}
swag_port: 9120
swag_proto: http
ports:
- 9120:9120
restart: always
volumes:
- ${DOCKER_VOLUME_CONFIG}/komodo/core.config.toml:/config/config.toml
komodo-ferretdb:
container_name: komodo-ferretdb
depends_on:
- komodo-pg-db
image: ghcr.io/ferretdb/ferretdb
labels:
komodo.skip: a
restart: unless-stopped
expose:
- 27017
environment:
- FERRETDB_POSTGRESQL_URL=postgres://komodo-pg-db:5432/komodo
komodo-periphery:
container_name: komodo-periphery
environment:
DOCKER_HOST: tcp://dockerproxy:2375
PERIPHERY_PASSKEYS: ${KOMODO_PASSKEY}
PERIPHERY_SSL_ENABLED: false
PERIPHERY_INCLUDE_DISK_MOUNTS: /etc/hostname
# PERIPHERY_EXCLUDE_DISK_MOUNTS: /snap,/etc/repos
expose:
- 8120
image: ghcr.io/mbecker20/periphery:latest
labels:
komodo.skip: a
restart: always
volumes:
- /proc:/proc
komodo-pg-db:
container_name: komodo-pg-db
environment:
POSTGRES_USER: komodo
POSTGRES_PASSWORD: ${KOMODO_PG_DB_PASSWORD}
POSTGRES_DB: komodo
expose:
- 5432
labels:
komodo.skip: a
image: postgres:17-alpine
restart: unless-stopped
volumes:
- komodo-pg-data:/var/lib/postgresql/data
librespeed:
container_name: librespeed
environment:
@@ -2970,9 +3025,9 @@ services:
PGID: 1000
PUID: 1000
TZ: America/New_York
MYSQL_PASSWORD: ${NEXTCLOUD_MARIADB_PASSWORD}
MYSQL_PASSWORD: VQU23wHKRNmfpAPt5E9BxMaSGJdWjLuz
hostname: Rinoa
image: linuxserver/mariadb
image: ghcr.io/linuxserver/mariadb
networks:
default: null
ports:
@@ -3003,58 +3058,6 @@ services:
type: bind
bind:
create_host_path: true
mastodon:
container_name: mastodon
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
LOCAL_DOMAIN: trez.wtf
REDIS_HOST: redis
REDIS_PORT: 6379
DB_HOST: mastodon-pg-db
DB_USER: mastodon
DB_NAME: mastodon
DB_PASS: ${MASTODON_PG_DB_PASSWORD}
DB_PORT: 5432
ES_ENABLED: false
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY:
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY:
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT:
SECRET_KEY_BASE:
OTP_SECRET:
VAPID_PRIVATE_KEY:
VAPID_PUBLIC_KEY:
SMTP_SERVER: postal-smtp
SMTP_PORT: 25
SMTP_LOGIN: ${POSTAL_SMTP_AUTH_USER}
SMTP_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD}
SMTP_FROM_ADDRESS: noreply@trez.wtf
S3_ENABLED: true
S3_BUCKET: mastodon
AWS_ACCESS_KEY_ID: ${MASTODON_MINIO_ACCESS_KEY}
AWS_SECRET_ACCESS_KEY: ${MASTODON_MINIO_SECRET_KEY}
image: lscr.io/linuxserver/mastodon:latest
labels:
swag: enable
swag_proto: http
swag_port: 5678
swag_url: mastodon.${MY_TLD}
swag.uptime-kuma.enabled: true
swag.uptime-kuma.monitor.url: https://mastodon.${MY_TLD}
homepage.group: Social
homepage.name: Mastodon
homepage.href: https://mastodon.${MY_TLD}
homepage.icon: mastodon.svg
homepage.description: Open-source social network
homepage.widget.type: mastodon
homepage.widget.url: http://mastodon
ports:
- 9044:80
- 3444:443
restart: unless-stopped
volumes:
- ${DOCKER_VOLUME_CONFIG}/mastodon:/config
mastodon-pg-db:
container_name: mastodon-pg-db
environment:
@@ -3308,11 +3311,6 @@ services:
volume: {}
nextcloud:
container_name: nextcloud
depends_on:
mariadb:
condition: service_started
required: true
restart: true
environment:
PGID: 1000
PUID: 1000
@@ -3425,11 +3423,6 @@ services:
type: bind
paperless-ngx:
container_name: paperless-ngx
depends_on:
mariadb:
condition: service_started
required: true
restart: true
environment:
PAPERLESS_DBENGINE: mariadb
PAPERLESS_DBHOST: mariadb
@@ -6079,7 +6072,6 @@ services:
mariadb:
condition: service_started
required: true
restart: true
redis:
condition: service_started
required: true
@@ -6521,32 +6513,6 @@ services:
published: "8900"
target: 8080
restart: unless-stopped
yacht:
container_name: yacht
depends_on:
docker-socket-proxy:
condition: service_started
required: true
environment:
DOCKER_HOST: tcp://dockerproxy:2375
image: selfhostedpro/yacht
labels:
homepage.group: System Administration
homepage.name: Yacht
homepage.href: https://yacht.${MY_TLD}
homepage.icon: yacht.svg
homepage.description: TV show discovery based on library/tastes
swag: enable
swag_proto: http
swag_port: 8000
swag_url: yacht.${MY_TLD}
swag.uptime-kuma.enabled: true
swag.uptime-kuma.monitor.url: https://yacht.${MY_TLD}
ports:
- 19733:8000
restart: unless-stopped
volumes:
- ${DOCKER_VOLUME_CONFIG}/yacht:/config
your_spotify:
container_name: your_spotify
environment:
@@ -7080,6 +7046,8 @@ volumes:
name: jitsi-web-admin-upload
joplin_data:
name: joplin_data
komodo-pg-data:
name: komodo-pg-data
lldap_data:
name: lldap_data
localai_data:
+842
View File
@@ -0,0 +1,842 @@
# Global Settings
COMPOSE_HTTP_TIMEOUT=''
DOCKER_GID=''
DOCKER_HOSTNAME=''
DOCKER_VOLUME_CONFIG=''
DOCKER_VOLUME_STORAGE=''
PGID=''
PUID=''
TZ=''
MY_TLD=''
# END OF DEFAULT SETTINGS
##
## ADDY
##
ADDY_ANONADDY_ADDITIONAL_USERNAME_LIMIT=''
ADDY_ANONADDY_ADMIN_USERNAME=''
ADDY_ANONADDY_ALL_DOMAINS=''
ADDY_ANONADDY_BANDWIDTH_LIMIT=''
ADDY_ANONADDY_DKIM_SELECTOR=''
ADDY_ANONADDY_DKIM_SIGNING_KEY=''
ADDY_ANONADDY_DNS_RESOLVER=''
ADDY_ANONADDY_DOMAIN=''
ADDY_ANONADDY_HOSTNAME=''
ADDY_ANONADDY_LIMIT=''
ADDY_ANONADDY_NEW_ALIAS_LIMIT=''
ADDY_ANONADDY_RETURN_PATH=''
ADDY_ANONADDY_SECRET=''
ADDY_ANONADDY_SIGNING_KEY_FINGERPRINT=''
ADDY_APP_KEY=''
ADDY_APP_URL=''
ADDY_DB_PASSWORD=''
ADDY_MAIL_ENCRYPTION=''
ADDY_MAIL_FROM_ADDRESS=''
ADDY_MAIL_FROM_NAME=''
ADDY_POSTFIX_DEBUG=''
ADDY_POSTFIX_MESSAGE_SIZE_LIMIT=''
ADDY_POSTFIX_RELAYHOST=''
ADDY_POSTFIX_RELAYHOST_AUTH_ENABLE=''
ADDY_POSTFIX_SMTPD_TLS_CERT_FILE=''
ADDY_POSTFIX_SMTPD_TLS_KEY_FILE=''
ADDY_POSTFIX_SPAMHAUS_DQS_KEY=''
ADDY_REDIS_PASSWORD=''
ADDY_RSPAMD_NO_LOCAL_ADDRS=''
ADDY_RSPAMD_WEB_PASSWORD=''
##
## ADGUARD
##
ADGUARD_CONTAINER_NAME=''
ADGUARD_ENABLED=''
ADGUARD_ENVIRONMENT_SERVERIP=''
ADGUARD_NETWORK_MODE=''
ADGUARD_PORT_3000=''
ADGUARD_PORT_443=''
ADGUARD_PORT_53=''
ADGUARD_PORT_67=''
ADGUARD_PORT_68=''
ADGUARD_PORT_80=''
ADGUARD_PORT_853=''
ADGUARD_RESTART=''
ADGUARD_TAG=''
##
## ADGUARD
##
ADGUARD_CF_TUNNEL_PASSWORD=''
ADGUARD_PASSWORD=''
##
## ANYTHINGLLM
##
ANYTHINGLLM_JWT_SECRET=''
##
## APPRISE
##
APPRISE_CONTAINER_NAME=''
APPRISE_ENABLED=''
APPRISE_NETWORK_MODE=''
APPRISE_PORT_8000=''
APPRISE_RESTART=''
APPRISE_TAG=''
##
## AUDIOBOOKSHELF
##
AUDIOBOOKSHELF_CONTAINER_NAME=''
AUDIOBOOKSHELF_ENABLED=''
AUDIOBOOKSHELF_NETWORK_MODE=''
AUDIOBOOKSHELF_PORT_80=''
AUDIOBOOKSHELF_RESTART=''
AUDIOBOOKSHELF_TAG=''
##
## AUDIOBOOKSHELF
##
AUDIOBOOKSHELF_ROOT_API_KEY=''
##
## AUTHELIA
##
AUTHELIA_AUTH_BIND_LDAP_PASSWORD=''
AUTHELIA_JWT_SECRET=''
AUTHELIA_SESSION_SECRET=''
AUTHELIA_STORAGE_ENCRYPTION_KEY=''
AUTHELIA_STORAGE_POSTGRES_PASSWORD=''
##
## BAZARR
##
BAZARR_CONTAINER_NAME=''
BAZARR_ENABLED=''
BAZARR_NETWORK_MODE=''
BAZARR_PORT_6767=''
BAZARR_RESTART=''
BAZARR_TAG=''
BAZARR_API_KEY=''
##
## BITMAGNET
##
BITMAGNET_POSTGRESQL_PASSWORD=''
##
## BITWARDEN
##
BITWARDEN_CONTAINER_NAME=''
BITWARDEN_ENABLED=''
BITWARDEN_ENVIRONMENT_ADMIN_TOKEN=''
BITWARDEN_ENVIRONMENT_DATABASE_URL=''
BITWARDEN_ENVIRONMENT_DISABLE_ADMIN_TOKEN=''
BITWARDEN_ENVIRONMENT_DOMAIN=''
BITWARDEN_ENVIRONMENT_ENABLE_DB_WAL=''
BITWARDEN_ENVIRONMENT_INVITATIONS_ALLOWED=''
BITWARDEN_ENVIRONMENT_SHOW_PASSWORD_HINT=''
BITWARDEN_ENVIRONMENT_SIGNUPS_ALLOWED=''
BITWARDEN_ENVIRONMENT_SIGNUPS_VERIFY=''
BITWARDEN_ENVIRONMENT_WEBSOCKET_ENABLE=''
BITWARDEN_NETWORK_MODE=''
BITWARDEN_PORT_3012=''
BITWARDEN_PORT_80=''
BITWARDEN_RESTART=''
BITWARDEN_TAG=''
##
## CHROMIUM
##
CHROMIUM_TOKEN=''
##
## CLOUDFLARE
##
CLOUDFLARE_ACCOUNT_ID=''
CLOUDFLARE_DNS_API_TOKEN=''
CLOUDFLARE_ZONE_ID=''
##
## CLOUDFLAREDDNS
##
CLOUDFLAREDDNS_CONTAINER_NAME=''
CLOUDFLAREDDNS_ENABLED=''
CLOUDFLAREDDNS_ENVIRONMENT_APIKEY=''
CLOUDFLAREDDNS_ENVIRONMENT_APITOKEN=''
CLOUDFLAREDDNS_ENVIRONMENT_ARGS=''
CLOUDFLAREDDNS_ENVIRONMENT_DETECTION_MODE=''
CLOUDFLAREDDNS_ENVIRONMENT_HOSTS=''
CLOUDFLAREDDNS_ENVIRONMENT_INTERVAL=''
CLOUDFLAREDDNS_ENVIRONMENT_LOG_LEVEL=''
CLOUDFLAREDDNS_ENVIRONMENT_RECORDTYPES=''
CLOUDFLAREDDNS_ENVIRONMENT_USER=''
CLOUDFLAREDDNS_ENVIRONMENT_ZONES=''
CLOUDFLAREDDNS_RESTART=''
CLOUDFLAREDDNS_TAG=''
##
## CROWDSEC
##
CROWDSEC_API_KEY=''
CROWDSEC_LOCAL_API_KEY=''
##
## DELUGEVPN
##
DELUGEVPN_CONTAINER_NAME=''
DELUGEVPN_ENABLED=''
DELUGEVPN_ENVIRONMENT_ENABLE_PRIVOXY=''
DELUGEVPN_ENVIRONMENT_LAN_NETWORK=''
DELUGEVPN_ENVIRONMENT_NAME_SERVERS=''
DELUGEVPN_ENVIRONMENT_VPN_CLIENT=''
DELUGEVPN_ENVIRONMENT_VPN_ENABLE=''
DELUGEVPN_ENVIRONMENT_VPN_INPUT_PORTS=''
DELUGEVPN_ENVIRONMENT_VPN_OPTIONS=''
DELUGEVPN_ENVIRONMENT_VPN_OUTPUT_PORTS=''
DELUGEVPN_ENVIRONMENT_VPN_PASS=''
DELUGEVPN_ENVIRONMENT_VPN_PROV=''
DELUGEVPN_ENVIRONMENT_VPN_USER=''
DELUGEVPN_NETWORK_MODE=''
DELUGEVPN_PORT_58846=''
DELUGEVPN_PORT_58946=''
DELUGEVPN_PORT_8112=''
DELUGEVPN_PORT_8118=''
DELUGEVPN_RESTART=''
DELUGEVPN_TAG=''
##
## DELUGEVPN
##
DELUGEVPN_PASSWORD=''
DELUGEVPN_PORT_51413=''
DELUGEVPN_PORT_6881=''
##
## DUPLICATI
##
DUPLICATI_CONTAINER_NAME=''
DUPLICATI_ENABLED=''
DUPLICATI_NETWORK_MODE=''
DUPLICATI_PORT_8200=''
DUPLICATI_RESTART=''
DUPLICATI_TAG=''
DUPLICATI_VOLUME_BACKUPSDIR=''
DUPLICATI_VOLUME_SOURCEDIR=''
##
## DUPLICATI
##
DUPLICATI_CF_TUNNEL_PASSWORD=''
##
## EMBY
##
EMBY_CONTAINER_NAME=''
EMBY_ENABLED=''
EMBY_NETWORK_MODE=''
EMBY_PORT_8096=''
EMBY_PORT_8920=''
EMBY_RESTART=''
EMBY_TAG=''
EMBY_VOLUME_TRANSCODEDIR=''
##
## EMBY
##
EMBY_HOMEPAGE_API_KEY=''
##
## FLARESOLVERR
##
FLARESOLVERR_CONTAINER_NAME=''
FLARESOLVERR_ENABLED=''
FLARESOLVERR_ENVIRONMENT_CAPTCHA_SOLVER=''
FLARESOLVERR_ENVIRONMENT_LOG_HTML=''
FLARESOLVERR_ENVIRONMENT_LOG_LEVEL=''
FLARESOLVERR_NETWORK_MODE=''
FLARESOLVERR_PORT_8191=''
FLARESOLVERR_RESTART=''
FLARESOLVERR_TAG=''
##
## GHOST
##
GHOST_DB_PASSWORD=''
GHOST_DB_USER=''
##
## GITEA
##
GITEA_HOMEPAGE_API_KEY=''
GITEA_PG_DB_PASSWORD=''
GITEA_RUNNER_REGISTRATION_TOKEN=''
##
## GLUETUN
##
GLUETUN_SERVER_REGIONS=''
##
## GOTIFY
##
GOTIFY_HOMEPAGE_CLIENT_KEY=''
GOTIFY_PASSWORD=''
##
## GRAFANA
##
GRAFANA_CONTAINER_NAME=''
GRAFANA_ENABLED=''
GRAFANA_ENVIRONMENT_GF_INSTALL_PLUGINS=''
GRAFANA_NETWORK_MODE=''
GRAFANA_PORT_3000=''
GRAFANA_RESTART=''
GRAFANA_TAG=''
##
## GRAFANA
##
GRAFANA_ADMIN_PASSWORD=''
GRAFANA_MIMIR_HTTP_AUTH_PASSWORD=''
##
## GUID
##
GUID=''
##
## HORTUSFOX
##
HORTUSFOX_ADMIN_PASSWORD=''
HORTUSFOX_DB_PASSWORD=''
##
## HUGINN
##
HUGINN_CONTAINER_NAME=''
HUGINN_ENABLED=''
HUGINN_ENVIRONMENT_DATABASE_HOST=''
HUGINN_ENVIRONMENT_DATABASE_NAME=''
HUGINN_ENVIRONMENT_DATABASE_PASSWORD=''
HUGINN_ENVIRONMENT_DATABASE_PORT=''
HUGINN_ENVIRONMENT_DATABASE_USERNAME=''
HUGINN_NETWORK_MODE=''
HUGINN_PORT_3000=''
HUGINN_RESTART=''
HUGINN_TAG=''
##
## IN
##
IN_APP_KEY=''
IN_MYSQL_PASSWORD=''
IN_PASSWORD=''
##
## JAN
##
JAN_AI_S3_ACCESS_KEY=''
JAN_AI_S3_SECRET_KEY=''
##
## JITSI
##
JITSI__ADMIN_DB_PASSWORD=''
JITSI__ADMIN_JWT_SECRET=''
JITSI__ETHERPAD_DEFAULT_PAD_TEXT=''
JITSI__ETHERPAD_SKIN_NAME=''
JITSI__ETHERPAD_SKIN_VARIANTS=''
JITSI__ETHERPAD_TITLE=''
JITSI__ETHERPAD_URL_BASE=''
JITSI__HTTP_PORT=''
JITSI__HTTPS_PORT=''
JITSI__JIBRI_RECORDER_PASSWORD=''
JITSI__JIBRI_XMPP_PASSWORD=''
JITSI__JICOFO_AUTH_PASSWORD=''
JITSI__JIGAGI_SIP_PASSWORD=''
JITSI__JIGAGI_SIP_PORT=''
JITSI__JIGAGI_SIP_SERVER=''
JITSI__JIGAGI_SIP_TRANSPORT=''
JITSI__JIGAGI_SIP_URI=''
JITSI__JIGASI_XMPP_PASSWORD=''
JITSI__JVB_AUTH_PASSWORD=''
JITSI__PUBLIC_URL=''
JITSI__SIP_URI=''
JITSI__TZ=''
JITSI__WEBSOCKET_SECRET=''
##
## JOPLIN
##
JOPLIN_APP_BASE_URL=''
JOPLIN_APP_PORT=''
JOPLIN_POSTGRES_DATABASE=''
JOPLIN_POSTGRES_PASSWORD=''
JOPLIN_POSTGRES_PORT=''
JOPLIN_POSTGRES_USER=''
JOPLIN_S3_ACCESS_KEY=''
JOPLIN_S3_SECRET_KEY=''
##
## KEYCLOAK
##
KEYCLOAK_ADMIN_PASSWORD=''
##
## LAN
##
LAN_NETWORK=''
##
## LASTFM
##
LASTFM_API_KEY=''
LASTFM_API_SECRET=''
LASTFM_PASSWORD=''
LASTFM_USERNAME=''
##
## LIBRESPEED
##
LIBRESPEED_CONTAINER_NAME=''
LIBRESPEED_ENABLED=''
LIBRESPEED_ENVIRONMENT_DB_HOSTNAME=''
LIBRESPEED_ENVIRONMENT_DB_NAME=''
LIBRESPEED_ENVIRONMENT_DB_PASSWORD=''
LIBRESPEED_ENVIRONMENT_DB_TYPE=''
LIBRESPEED_ENVIRONMENT_DB_USERNAME=''
LIBRESPEED_ENVIRONMENT_PASSWORD=''
LIBRESPEED_NETWORK_MODE=''
LIBRESPEED_PORT_80=''
LIBRESPEED_RESTART=''
LIBRESPEED_TAG=''
##
## LIDARR
##
LIDARR_CONTAINER_NAME=''
LIDARR_ENABLED=''
LIDARR_NETWORK_MODE=''
LIDARR_PORT_8686=''
LIDARR_RESTART=''
LIDARR_TAG=''
##
## LIDARR
##
LIDARR_API_KEY=''
##
## LLDAP
##
LLDAP_JWT_SECRET=''
LLDAP_KEY_SEED=''
##
## LOCALAI
##
LOCALAI_API_KEY=''
##
## MALOJA
##
MALOJA_FORCE_PASSWORD=''
##
## MARIADB
##
MARIADB_CONTAINER_NAME=''
MARIADB_ENABLED=''
MARIADB_ENVIRONMENT_MYSQL_ROOT_PASSWORD=''
MARIADB_NETWORK_MODE=''
MARIADB_PORT_3306=''
MARIADB_RESTART=''
MARIADB_TAG=''
##
## MATTERMOST
##
MATTERMOST_AWS_S3_ACCESSKEY=''
MATTERMOST_AWS_S3_SECRETKEY=''
MATTERMOST_POSTGRES_CONNECTION_URI=''
MATTERMOST_POSTGRES_PASSWORD=''
##
## MAYBE
##
MAYBE_POSTGRES_PASSWORD=''
MAYBE_SECRET_KEY_BASE=''
##
## MEDUSAJS
##
MEDUSAJS_COOKIE_SECRET=''
MEDUSAJS_JWT_TOKEN=''
MEDUSAJS_POSTGRES_PASSWORD=''
MEDUSAJS_S3_ACCESS_KEY=''
MEDUSAJS_S3_SECRET_KEY=''
##
## MINIO
##
MINIO_MIMIR_STORAGE_ACCESS_KEY=''
MINIO_MIMIR_STORAGE_SECRET_KEY=''
MINIO_ROOT_PASSWORD=''
##
## MONGO
##
MONGO_INITDB_ROOT_PASSWORD=''
MONGO_INITDB_ROOT_USERNAME=''
##
## NAVIDROME
##
NAVIDROME_PASSWORD=''
NAVIDROME_USERNAME=''
##
## NEXTCLOUD
##
NEXTCLOUD_CONTAINER_NAME=''
NEXTCLOUD_ENABLED=''
NEXTCLOUD_NETWORK_MODE=''
NEXTCLOUD_PORT_443=''
NEXTCLOUD_RESTART=''
NEXTCLOUD_TAG=''
NEXTCLOUD_VOLUME_DATADIR=''
##
## OMBI
##
OMBI_CONTAINER_NAME=''
OMBI_ENABLED=''
OMBI_NETWORK_MODE=''
OMBI_PORT_3579=''
OMBI_RESTART=''
OMBI_TAG=''
OMBI_API_KEY=''
##
## OPENGIST
##
OPENGIST_GITEA_CLIENT_KEY=''
OPENGIST_GITEA_SECRET=''
##
## PAPERLESS
##
PAPERLESS_DBPASS=''
PAPERLESS_SECRET_KEY=''
##
## PLAUSIBLE
##
PLAUSIBLE_PG_PASSWORD=''
PLAUSIBLE_SECRET_KEY_BASE=''
PLAUSIBLE_TOTP_VAULT_KEY=''
##
## PODINDEX
##
PODINDEX_API_KEY=''
PODINDEX_API_SECRET=''
##
## PORTAINER
##
PORTAINER_CONTAINER_NAME=''
PORTAINER_ENABLED=''
PORTAINER_NETWORK_MODE=''
PORTAINER_PORT_9000=''
PORTAINER_RESTART=''
PORTAINER_TAG=''
PORTAINER_VOLUME_DOCKER_SOCKET=''
PORTAINER_API_KEY=''
##
## POSTAL
##
POSTAL_MYSQL_PASSWORD=''
POSTAL_SMTP_AUTH_PASSWORD=''
POSTAL_SMTP_AUTH_USER=''
##
## POSTGRES
##
POSTGRES_HOST=''
POSTGRES_PASSWORD=''
POSTGRES_USER=''
##
## PROWLARR
##
PROWLARR_CONTAINER_NAME=''
PROWLARR_ENABLED=''
PROWLARR_NETWORK_MODE=''
PROWLARR_PORT_9696=''
PROWLARR_RESTART=''
PROWLARR_TAG=''
PROWLARR_API_KEY=''
##
## RADARR
##
RADARR_CONTAINER_NAME=''
RADARR_ENABLED=''
RADARR_NETWORK_MODE=''
RADARR_PORT_7878=''
RADARR_RESTART=''
RADARR_TAG=''
##
## RADARR
##
RADARR_API_KEY=''
##
## REACTIVE
##
REACTIVE_RESUME_ACCESS_TOKEN_SECRET=''
REACTIVE_RESUME_PGSQL_PASSWORD=''
REACTIVE_RESUME_REFRESH_TOKEN_SECRET=''
REACTIVE_RESUME_S3_ACCESS_KEY=''
REACTIVE_RESUME_S3_SECRET_KEY=''
##
## READARR
##
READARR_CONTAINER_NAME=''
READARR_ENABLED=''
READARR_NETWORK_MODE=''
READARR_PORT_8787=''
READARR_RESTART=''
READARR_TAG=''
READARR_API_KEY=''
##
## REMMINA
##
REMMINA_CF_TUNNEL_ID=''
REMMINA_CF_TUNNEL_PASSWORD=''
REMMINA_USER_PASSWORD=''
##
## RUSTDESK
##
RUSTDESK_CUSTOM_PASSWORD=''
##
## SABNZBDVPN
##
SABNZBDVPN_CONTAINER_NAME=''
SABNZBDVPN_ENABLED=''
SABNZBDVPN_ENVIRONMENT_ENABLE_PRIVOXY=''
SABNZBDVPN_ENVIRONMENT_LAN_NETWORK=''
SABNZBDVPN_ENVIRONMENT_NAME_SERVERS=''
SABNZBDVPN_ENVIRONMENT_VPN_CLIENT=''
SABNZBDVPN_ENVIRONMENT_VPN_ENABLE=''
SABNZBDVPN_ENVIRONMENT_VPN_INPUT_PORTS=''
SABNZBDVPN_ENVIRONMENT_VPN_OPTIONS=''
SABNZBDVPN_ENVIRONMENT_VPN_OUTPUT_PORTS=''
SABNZBDVPN_ENVIRONMENT_VPN_PASS=''
SABNZBDVPN_ENVIRONMENT_VPN_PROV=''
SABNZBDVPN_ENVIRONMENT_VPN_USER=''
SABNZBDVPN_NETWORK_MODE=''
SABNZBDVPN_PORT_8080=''
SABNZBDVPN_PORT_8090=''
SABNZBDVPN_PORT_8118=''
SABNZBDVPN_RESTART=''
SABNZBDVPN_TAG=''
SABNZBDVPN_API_KEY=''
##
## SCRAPERR
##
SCRAPERR_SECRET_KEY=''
##
## SCRUTINY
##
SCRUTINY_CF_TUNNEL_PASSWORD=''
##
## SEARXNG
##
SEARXNG_BASE_URL=''
##
## SLSKD
##
SLSKD_PASSWORD=''
##
## SONARQUBE
##
SONARQUBE_POSTGRES_PASSWORD=''
SONARQUBE_LDAP_BIND_PASSWORD=''
##
## SONARR
##
SONARR_CONTAINER_NAME=''
SONARR_ENABLED=''
SONARR_NETWORK_MODE=''
SONARR_PORT_8989=''
SONARR_RESTART=''
SONARR_TAG=''
SONARR_API_KEY=''
##
## SWAG
##
SWAG_CONTAINER_NAME=''
SWAG_ENABLED=''
SWAG_ENVIRONMENT_DNSPLUGIN=''
SWAG_ENVIRONMENT_EMAIL=''
SWAG_ENVIRONMENT_EXTRA_DOMAINS=''
SWAG_ENVIRONMENT_ONLY_SUBDOMAINS=''
SWAG_ENVIRONMENT_SUBDOMAINS=''
SWAG_ENVIRONMENT_URL=''
SWAG_ENVIRONMENT_VALIDATION=''
SWAG_NETWORK_MODE=''
SWAG_PORT_443=''
SWAG_PORT_80=''
SWAG_RESTART=''
SWAG_TAG=''
##
## SWAG
##
SWAG_CF_TUNNEL_ID=''
SWAG_CF_TUNNEL_PASSWORD=''
SWAG_DUCKDNSTOKEN=''
SWAG_MAXMINDDB_LICENSE_KEY=''
##
## TANDOOR
##
TANDOOR_API_TOKEN=''
TANDOOR_POSTGRES_PASSWORD=''
TANDOOR_SECRET_KEY=''
##
## TMDB
##
TMDB_API_KEY=''
##
## TRACCAR
##
TRACCAR_POSTGRES_DATABASE=''
TRACCAR_POSTGRES_PASSWORD=''
TRACCAR_POSTGRES_USER=''
##
## UPTIME
##
UPTIME_KUMA_PASSWORD=''
UPTIME_KUMA_USERNAME=''
##
## UPTIMEKUMA
##
UPTIMEKUMA_CONTAINER_NAME=''
UPTIMEKUMA_ENABLED=''
UPTIMEKUMA_NETWORK_MODE=''
UPTIMEKUMA_PORT_3001=''
UPTIMEKUMA_RESTART=''
UPTIMEKUMA_TAG=''
##
## VAULT
##
VAULT_HASHICORP_AWS_ACCESS_KEY_ID=''
VAULT_HASHICORP_AWS_SECRET_ACCESS_KEY=''
##
## VIRUS
##
VIRUS_TOTAL_API_KEY=''
##
## WALLABAG
##
WALLABAG_DB=''
WALLABAG_DB_PASSWORD=''
##
## WATCHTOWER
##
WATCHTOWER_CONTAINER_NAME=''
WATCHTOWER_ENABLED=''
WATCHTOWER_ENVIRONMENT_CLEANUP=''
WATCHTOWER_ENVIRONMENT_INCLUDE_STOPPED=''
WATCHTOWER_ENVIRONMENT_MONITOR_ONLY=''
WATCHTOWER_ENVIRONMENT_NOTIFICATION_TEMPLATE=''
WATCHTOWER_ENVIRONMENT_NOTIFICATION_URL=''
WATCHTOWER_ENVIRONMENT_NOTIFICATIONS=''
WATCHTOWER_ENVIRONMENT_NOTIFICATIONS_LEVEL=''
WATCHTOWER_ENVIRONMENT_REPO_PASS=''
WATCHTOWER_ENVIRONMENT_REPO_USER=''
WATCHTOWER_ENVIRONMENT_SCHEDULE=''
WATCHTOWER_ENVIRONMENT_TIMEOUT=''
WATCHTOWER_NETWORK_MODE=''
WATCHTOWER_RESTART=''
WATCHTOWER_TAG=''
WATCHTOWER_VOLUME_DOCKER_SOCKET=''
##
## WATCHTOWER
##
WATCHTOWER_HTTP_API_TOKEN=''
WATCHTOWER_NOTIFICATION_GOTIFY_TLS_SKIP_VERIFY=''
WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=''
WATCHTOWER_NOTIFICATION_GOTIFY_URL=''
##
## WAZUH
##
WAZUH_API_PASSWORD=''
WAZUH_INDEXER_PASSWORD=''
WAZUH_KIBANA_PASSWORD=''
WAZUH_VERSION=''
##
## YOUR
##
YOUR_SPOTIFY_ID=''
YOUR_SPOTIFY_PORT_443=''
YOUR_SPOTIFY_PORT_80=''
YOUR_SPOTIFY_SECRET=''
##
## YOUTUBEDL
##
YOUTUBEDL_CONTAINER_NAME=''
YOUTUBEDL_ENABLED=''
YOUTUBEDL_ENVIRONMENT_CONFIG_PATH=''
YOUTUBEDL_ENVIRONMENT_DEBUG=''
YOUTUBEDL_NETWORK_MODE=''
YOUTUBEDL_PORT_8080=''
YOUTUBEDL_RESTART=''
YOUTUBEDL_TAG=''
##
## ZAMMAD
##
ZAMMAD_ELASTICSEARCH_VERSION=''
ZAMMAD_IMAGE_REPO=''
ZAMMAD_MEMCACHE_SERVERS=''
ZAMMAD_MEMCACHE_VERSION=''
ZAMMAD_POSTGRES_DB=''
ZAMMAD_POSTGRES_HOST=''
ZAMMAD_POSTGRES_PASS=''
ZAMMAD_POSTGRES_PORT=''
ZAMMAD_POSTGRES_USER=''
ZAMMAD_POSTGRES_VERSION=''
ZAMMAD_POSTGRESQL_OPTIONS=''
ZAMMAD_REDIS_URL=''
ZAMMAD_REDIS_VERSION=''
ZAMMAD_RESTART=''
ZAMMAD_S3_ACCESS_KEY=''
ZAMMAD_S3_SECRET_KEY=''
ZAMMAD_VERSION=''