Auto Merge of PR #2 - docker-compose-deploy

Merged by Trez.One
This commit is contained in:
2025-01-09 13:29:21 -05:00
3 changed files with 422 additions and 613 deletions
+115 -27
View File
@@ -14,36 +14,47 @@ jobs:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: PR list - 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 PR exists & Create
id: list-prs id: list-prs
run: | run: |
pr_check=$(curl ${{ vars.RINOA_GITEA_URL }}/api/v1/repos/${{ github.repository }}/pulls/main/${{ github.ref_name }} \ 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 }}
-X 'GET' \ tea login default gitea-rinoa
-H 'Accept: application/json' \ pr_state=$(tea pr ls --repo ${{ github.repository }} --state open --fields index,title,head,state --output csv | egrep ${{ gitea.ref_name }} | awk -F, '{print $4}' | sed -e 's|"||g')
-H 'Authorization: token ${{ secrets.BOT_GITEA_TOKEN }}' \ if [ "${pr_state}" != open ]; then
-sS | jq '{index: .number, state: .state}') tea pr c -r ${{ github.repository }} -t "Automated PR for ${{ github.ref_name }}" -d "Automated PR for ${{ github.ref_name }}"
pr_state=$(echo ${pr_check} | jq -r '.state') elif [ "${pr_state}" = open ]; then
echo "PR already exists, skipping creation..."
- name: Create PR fi
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: docker-compose-test:
name: Docker Compose Test name: Docker Compose Test
needs: [check-and-create-pr] needs: [check-and-create-pr]
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.RINOA_VAULT_TOKEN }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Generate ephemeral .env compose file - name: Install jq
id: generate-env-file-pr 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: | run: |
echo "${{ secrets.RINOA_ENV }}" > .env vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env
- name: Docker Compose Lint - name: Docker Compose Lint
uses: yu-ichiro/spin-up-docker-compose-action@v1 uses: yu-ichiro/spin-up-docker-compose-action@v1
@@ -100,6 +111,7 @@ jobs:
- name: Create Subdomains - name: Create Subdomains
if: steps.compare-subdomains.outputs.output != '' if: steps.compare-subdomains.outputs.output != ''
continue-on-error: true
env: env:
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }} CF_API_EMAIL: ${{ secrets.CF_API_EMAIL }}
@@ -109,20 +121,96 @@ jobs:
flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf" flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf"
done done
merge-pr: regenerate-readme:
name: PR Merge name: Update README
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ always() }}
needs: [cloudflare-dns-setup] needs: [cloudflare-dns-setup]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Tea CLI Setup & PR Merge - name: Install yq
uses: dcarbone/install-yq-action@v1
- name: Generate README list
id: readme-list
run: | run: |
curl -sSL https://dl.gitea.com/tea/main/tea-main-linux-amd64 -o /usr/local/bin/tea services_list=$(yq '.services | to_entries | map({"service": .key, "image": .value.image})' docker-compose.yml)
chmod +x /usr/local/bin/tea echo "SERVICES_LIST<<EOF" >> $GITHUB_ENV
echo "Merging PR..." echo "${services_list}" >> $GITHUB_ENV
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 }} echo "EOF" >> $GITHUB_ENV
- name: Regenerate README
uses: gnpaone/dynamic-update-readme@v1.0.2
with:
marker_text: "SERVICES_LIST"
markdown_text: |
```yaml
${{ env.SERVICES_LIST }}
````
commit_email: noreply@trez.wtf
commit_username: gitea-sonarqube-bot
commit_message: "docs: regenerate README"
deployment-trigger:
name: Deployment Trigger
needs: [generate-readme]
runs-on: ubuntu-latest
outputs:
CONTINUE_JOBS: ${{ steps.deploy-trigger.outputs.CONTINUE_JOBS }}
steps:
- 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
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 }}
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') 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} 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}
- name: Gotify Notification
uses: eikendev/gotify-action@master
with:
gotify_api_base: '${{ secrets.RINOA_GOTIFY_URL }}'
gotify_app_token: '${{ secrets.RINOA_GOTIFY_TOKEN }}'
notification_title: 'Ready to Deploy'
notification_message: 'Ready to deploy: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }}'
- name: Trigger Deployment
id: deploy-trigger
uses: benhamiltonpro/manual-trigger@v1
with:
RUN_NAME: "docker-compose-deploy"
docker-compose-deploy:
name: Merge and Deploy
if: ${{ needs.deployment-trigger.outputs.CONTINUE_JOB == 'manual-step' }}
runs-on: ubuntu-latest
needs: [deployment-trigger]
env:
VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.RINOA_VAULT_TOKEN }}
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: Autom3/docker-deployment-action@3.0.1
with:
remote_docker_host: gitea-deploy@192.168.1.254
ssh_private_key: ${{ secrets.RINOA_GITEA_PRIVATE_SSH_KEY }}
ssh_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }}
+306 -585
View File
@@ -1,588 +1,309 @@
# List of Services # List of Services
```json `~> yq '.services | to_entries | map({service: .key, image: .value.image})' docker-compose.yml`
~> yq '.services | to_entries | map({service: .key, image: .value.image})' docker-compose.yml
[ <!-- SERVICES_LIST_START -->
{ ```yaml
"service": "actual_server", - service: actual_server
"image": "docker.io/actualbudget/actual-server:latest" image: docker.io/actualbudget/actual-server:latest
}, - service: adguard
{ image: adguard/adguardhome:latest
"service": "adguard", - service: apprise
"image": "adguard/adguardhome:latest" image: lscr.io/linuxserver/apprise-api:latest
}, - service: audiobookshelf
{ image: ghcr.io/advplyr/audiobookshelf:latest
"service": "apprise", - service: authelia
"image": "lscr.io/linuxserver/apprise-api:latest" image: authelia/authelia:master
}, - service: authelia-pg
{ image: postgres:16-alpine
"service": "audiobookshelf", - service: bazarr
"image": "ghcr.io/advplyr/audiobookshelf:latest" image: lscr.io/linuxserver/bazarr:latest
}, - service: bitmagnet
{ image: ghcr.io/bitmagnet-io/bitmagnet:latest
"service": "authelia", - service: bitmagnet-pg-db
"image": "authelia/authelia:master" image: postgres:17-alpine
}, - service: bitwarden
{ image: vaultwarden/server:latest
"service": "authelia-pg", - service: bluesky-pds
"image": "postgres:16-alpine" image: ghcr.io/bluesky-social/pds:latest
}, - service: browserless
{ image: ghcr.io/browserless/chromium:latest
"service": "bazarr", - service: bunkerweb
"image": "lscr.io/linuxserver/bazarr:latest" image: bunkerity/bunkerweb:latest
}, - service: bunkerweb-scheduler
{ image: bunkerity/bunkerweb-scheduler:latest
"service": "bitmagnet", - service: bunkerweb-ui
"image": "ghcr.io/bitmagnet-io/bitmagnet:latest" image: bunkerity/bunkerweb-ui:latest
}, - service: castopod
{ image: castopod/castopod:latest
"service": "bitmagnet-pg-db", - service: cloudflared
"image": "postgres:17-alpine" image: 'cloudflare/cloudflared:latest'
}, - service: cloudflareddns
{ image: ghcr.io/hotio/cloudflareddns:latest
"service": "bitwarden", - service: crowdsec
"image": "vaultwarden/server:latest" image: crowdsecurity/crowdsec:latest
}, - service: crowdsec-dashboard
{ image: metabase/metabase
"service": "bluesky-pds", - service: czkawka
"image": "ghcr.io/bluesky-social/pds:latest" image: jlesage/czkawka
}, - service: dagu-scheduler
{ image: ghcr.io/dagu-org/dagu:latest
"service": "browserless", - service: dagu-server
"image": "ghcr.io/browserless/chromium:latest" image: ghcr.io/dagu-org/dagu:latest
}, - service: delugevpn
{ image: ghcr.io/binhex/arch-delugevpn:latest
"service": "castopod", - service: docker-socket-proxy
"image": "castopod/castopod:latest" image: ghcr.io/tecnativa/docker-socket-proxy:latest
}, - service: docuseal
{ image: docuseal/docuseal:latest
"service": "cloudflared", - service: duplicati
"image": "cloudflare/cloudflared:latest" image: lscr.io/linuxserver/duplicati:latest
}, - service: fastenhealth
{ image: ghcr.io/fastenhealth/fasten-onprem:main
"service": "cloudflareddns", - service: flaresolverr
"image": "ghcr.io/hotio/cloudflareddns:latest" image: ghcr.io/flaresolverr/flaresolverr:latest
}, - service: ghost
{ image: ghost:latest
"service": "crowdsec", - service: gitea
"image": "crowdsecurity/crowdsec:latest" image: gitea/gitea:1.22.6
}, - service: gitea-db
{ image: postgres:14
"service": "crowdsec-dashboard", - service: gitea-opengist
"image": "metabase/metabase" image: ghcr.io/thomiceli/opengist:latest
}, - service: gitea-runner
{ image: gitea/act_runner:latest
"service": "czkawka", - service: gitea-sonarqube-bot
"image": "jlesage/czkawka" image: justusbunsi/gitea-sonarqube-bot:v0.4.0
}, - service: gluetun
{ image: qmcgaw/gluetun:latest
"service": "dagu-scheduler", - service: gotify
"image": "ghcr.io/dagu-org/dagu:latest" image: gotify/server
}, - service: grafana
{ image: grafana/grafana-enterprise:latest
"service": "dagu-server", - service: grafana-alloy
"image": "ghcr.io/dagu-org/dagu:latest" image: grafana/alloy:latest
}, - service: grafana-loki
{ image: grafana/loki:latest
"service": "delugevpn", - service: grafana-mimir
"image": "ghcr.io/binhex/arch-delugevpn:latest" image: grafana/mimir:latest
}, - service: grafana-mimir-memcached
{ image: memcached
"service": "docker-socket-proxy", - service: grafana-pyroscope
"image": "ghcr.io/tecnativa/docker-socket-proxy:latest" image: grafana/pyroscope:latest
}, - service: grafana-tempo
{ image: grafana/tempo:latest
"service": "docuseal", - service: guacamole
"image": "docuseal/docuseal:latest" image: flcontainers/guacamole:latest
}, - service: homepage
{ image: ghcr.io/gethomepage/homepage:latest
"service": "duplicati", - service: hortusfox
"image": "lscr.io/linuxserver/duplicati:latest" image: ghcr.io/danielbrendel/hortusfox-web:latest
}, - service: hugo
{ image: hugomods/hugo:exts
"service": "fastenhealth", - service: invidious
"image": "ghcr.io/fastenhealth/fasten-onprem:main" image: quay.io/invidious/invidious:latest
}, - service: invidious-db
{ image: docker.io/library/postgres:14
"service": "flaresolverr", - service: invoice_ninja
"image": "ghcr.io/flaresolverr/flaresolverr:latest" image: invoiceninja/invoiceninja:5
}, - service: invoice_ninja_proxy
{ image: nginx
"service": "ghost", - service: it-tools
"image": "ghost:latest" image: ghcr.io/corentinth/it-tools:latest
}, - service: jellyfin
{ image: jellyfin/jellyfin
"service": "gitea", - service: jitsi-etherpad
"image": "gitea/gitea:1.22.2" image: etherpad/etherpad:1.8.6
}, - service: jitsi-jibri
{ image: jitsi/jibri:${JITSI_IMAGE_VERSION:-stable}
"service": "gitea-db", - service: jitsi-jicofo
"image": "postgres:14" image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-stable}
}, - service: jitsi-jigasi
{ image: jitsi/jigasi:${JITSI_IMAGE_VERSION:-stable}
"service": "gitea-opengist", - service: jitsi-jvb
"image": "ghcr.io/thomiceli/opengist:latest" image: jitsi/jvb:${JITSI_IMAGE_VERSION:-stable}
}, - service: jitsi-prosody
{ image: jitsi/prosody:${JITSI_IMAGE_VERSION:-stable}
"service": "gitea-runner", - service: jitsi-web
"image": "gitea/act_runner:latest" image: jitsi/web:${JITSI_IMAGE_VERSION:-stable}
}, - service: joplin-db
{ image: postgres:17-alpine
"service": "gitea-sonarqube-bot", - service: joplin
"image": "justusbunsi/gitea-sonarqube-bot:v0.4.0" image: joplin/server:latest
}, - service: komodo-core
{ image: ghcr.io/mbecker20/komodo:latest
"service": "gluetun", - service: komodo-ferretdb
"image": "qmcgaw/gluetun:latest" image: ghcr.io/ferretdb/ferretdb
}, - service: komodo-periphery
{ image: ghcr.io/mbecker20/periphery:latest
"service": "gotify", - service: komodo-pg-db
"image": "gotify/server" image: postgres:17-alpine
}, - service: librespeed
{ image: lscr.io/linuxserver/librespeed:latest
"service": "grafana", - service: lidarr
"image": "grafana/grafana-enterprise:latest" image: lscr.io/linuxserver/lidarr:latest
}, - service: lidify
{ image: thewicklowwolf/lidify:latest
"service": "grafana-alloy", - service: lldap
"image": "grafana/alloy:latest" image: lldap/lldap:stable
}, - service: localai
{ image: localai/localai:latest-aio-cpu
"service": "grafana-loki", - service: maloja
"image": "grafana/loki:latest" image: krateng/maloja:latest
}, - service: mariadb
{ image: ghcr.io/linuxserver/mariadb
"service": "grafana-mimir", - service: mastodon-pg-db
"image": "grafana/mimir:latest" image: postgres:17-alpine
}, - service: minio
{ image: minio/minio
"service": "grafana-mimir-memcached", - service: mongodb
"image": "memcached" image: mongo:7.0
}, - service: multi-scrobbler
{ image: foxxmd/multi-scrobbler
"service": "grafana-pyroscope", - service: n8n
"image": "grafana/pyroscope:latest" image: docker.n8n.io/n8nio/n8n
}, - service: navidrome
{ image: deluan/navidrome:latest
"service": "grafana-tempo", - service: netbox
"image": "grafana/tempo:latest" image: lscr.io/linuxserver/netbox:latest
}, - service: netbox-db
{ image: postgres:17-alpine
"service": "homepage", - service: nextcloud
"image": "ghcr.io/gethomepage/homepage:latest" image: lscr.io/linuxserver/nextcloud:latest
}, - service: ollama
{ image: ollama/ollama
"service": "hortusfox", - service: ombi
"image": "ghcr.io/danielbrendel/hortusfox-web:latest" image: lscr.io/linuxserver/ombi:latest
}, - service: paperless-ngx
{ image: ghcr.io/paperless-ngx/paperless-ngx:latest
"service": "hugo", - service: plausible
"image": "hugomods/hugo:exts" image: ghcr.io/plausible/community-edition:v2.1.0
}, - service: plausible_db
{ image: postgres:16-alpine
"service": "invidious", - service: plausible_events_db
"image": "quay.io/invidious/invidious:latest" image: clickhouse/clickhouse-server:24.3.3.102-alpine
}, - service: postal-smtp
{ image: ghcr.io/postalserver/postal:latest
"service": "invidious-db", - service: postal-web
"image": "docker.io/library/postgres:14" image: ghcr.io/postalserver/postal:latest
}, - service: postal-worker
{ image: ghcr.io/postalserver/postal:latest
"service": "invoice_ninja", - service: prowlarr
"image": "invoiceninja/invoiceninja:5" image: lscr.io/linuxserver/prowlarr:latest
}, - service: radarec
{ image: thewicklowwolf/radarec:latest
"service": "invoice_ninja_proxy", - service: radarr
"image": "nginx" image: lscr.io/linuxserver/radarr:latest
}, - service: reactive-resume
{ image: amruthpillai/reactive-resume:latest
"service": "it-tools", - service: reactive-resume-pg
"image": "ghcr.io/corentinth/it-tools:latest" image: postgres:16-alpine
}, - service: readarr
{ image: lscr.io/linuxserver/readarr:develop
"service": "jellyfin", - service: redis
"image": "jellyfin/jellyfin" image: redis:alpine
}, - service: redlib
{ image: quay.io/redlib/redlib:latest
"service": "jitsi-etherpad", - service: sabnzbdvpn
"image": "etherpad/etherpad:1.8.6" image: ghcr.io/binhex/arch-sabnzbdvpn:latest
}, - service: scraperr
{ image: jpyles0524/scraperr:latest
"service": "jitsi-jibri", - service: scraperr-api
"image": "jitsi/jibri:${JITSI_IMAGE_VERSION:-stable}" image: jpyles0524/scraperr_api:latest
}, - service: scrutiny
{ image: ghcr.io/analogj/scrutiny:master-omnibus
"service": "jitsi-jicofo", - service: searxng
"image": "jitsi/jicofo:${JITSI_IMAGE_VERSION:-stable}" image: searxng/searxng:latest
}, - service: semaphore
{ image: semaphoreui/semaphore:v2.10.32
"service": "jitsi-jigasi", - service: slurpit-portal
"image": "jitsi/jigasi:${JITSI_IMAGE_VERSION:-stable}" image: slurpit/portal:latest
}, - service: slurpit-scanner
{ image: slurpit/scanner:latest
"service": "jitsi-jvb", - service: slurpit-scraper
"image": "jitsi/jvb:${JITSI_IMAGE_VERSION:-stable}" image: slurpit/scraper:latest
}, - service: slurpit-warehouse
{ image: slurpit/warehouse:latest
"service": "jitsi-prosody", - service: sonarqube
"image": "jitsi/prosody:${JITSI_IMAGE_VERSION:-stable}" image: mc1arke/sonarqube-with-community-branch-plugin:lts
}, - service: sonarqube-pg-db
{ image: postgres:17-alpine
"service": "jitsi-web", - service: sonarr
"image": "jitsi/web:${JITSI_IMAGE_VERSION:-stable}" image: lscr.io/linuxserver/sonarr:latest
}, - service: sonashow
{ image: thewicklowwolf/sonashow:latest
"service": "joplin-db", - service: soularr
"image": "postgres:17-alpine" image: mrusse08/soularr:latest
}, - service: soulseek
{ image: slskd/slskd
"service": "joplin", - service: spotisub
"image": "joplin/server:latest" image: blastbeng/spotisub:latest
}, - service: swag
{ image: lscr.io/linuxserver/swag:latest
"service": "komodo-core", - service: synapse
"image": "ghcr.io/mbecker20/komodo:latest" image: docker.io/matrixdotorg/synapse:latest
}, - service: synapse-db
{ image: postgres:16-alpine
"service": "komodo-ferretdb", - service: tandoor
"image": "ghcr.io/ferretdb/ferretdb" image: vabene1111/recipes
}, - service: tandoor-pg
{ image: postgres:16-alpine
"service": "komodo-periphery", - service: traccar
"image": "ghcr.io/mbecker20/periphery:latest" image: traccar/traccar:latest
}, - service: traccar-pg
{ image: postgres:16-alpine
"service": "komodo-pg-db", - service: unmanic
"image": "postgres:17-alpine" image: josh5/unmanic:latest
}, - service: uptimekuma
{ image: louislam/uptime-kuma:latest
"service": "librespeed", - service: vault
"image": "lscr.io/linuxserver/librespeed:latest" image: hashicorp/vault:latest
}, - service: wallabag
{ image: wallabag/wallabag
"service": "lidarr", - service: wallos
"image": "lscr.io/linuxserver/lidarr:latest" image: bellamy/wallos:latest
}, - service: watchtower
{ image: ghcr.io/containrrr/watchtower:latest
"service": "lidify", - service: wazuh.agent
"image": "thewicklowwolf/lidify:latest" image: opennix/wazuh-agent:latest
}, - service: wazuh.dashboard
{ image: wazuh/wazuh-dashboard:${WAZUH_VERSION}
"service": "lldap", - service: wazuh.indexer
"image": "lldap/lldap:stable" image: wazuh/wazuh-indexer:${WAZUH_VERSION}
}, - service: wazuh.manager
{ image: wazuh/wazuh-manager:${WAZUH_VERSION}
"service": "localai", - service: web-check
"image": "localai/localai:latest-aio-cpu" image: lissy93/web-check
}, - service: whodb
{ image: clidey/whodb
"service": "maloja", - service: your_spotify
"image": "krateng/maloja:latest" image: lscr.io/linuxserver/your_spotify:latest
}, - service: youtubedl
{ image: nbr23/youtube-dl-server:latest
"service": "mariadb", - service: zammad-backup
"image": "ghcr.io/linuxserver/mariadb" image: postgres:${ZAMMAD_POSTGRES_VERSION}
}, - service: zammad-elasticsearch
{ image: bitnami/elasticsearch:${ZAMMAD_ELASTICSEARCH_VERSION}
"service": "meshcentral", - service: zammad-init
"image": "ghcr.io/ylianst/meshcentral:master" image: ${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}
}, - service: zammad-memcached
{ image: memcached:${ZAMMAD_MEMCACHE_VERSION}
"service": "minio", - service: zammad-nginx
"image": "minio/minio" image: ${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}
}, - service: zammad-postgresql
{ image: postgres:${ZAMMAD_POSTGRES_VERSION}
"service": "mongodb", - service: zammad-railsserver
"image": "mongo:7.0" image: ${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}
}, - service: zammad-redis
{ image: redis:${ZAMMAD_REDIS_VERSION}
"service": "multi-scrobbler", - service: zammad-scheduler
"image": "foxxmd/multi-scrobbler" image: ${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}
}, - service: zammad-websocket
{ image: ${ZAMMAD_IMAGE_REPO}:${ZAMMAD_VERSION}
"service": "n8n", - service: zitadel
"image": "docker.n8n.io/n8nio/n8n" image: ghcr.io/zitadel/zitadel:latest
}, - service: zitadel-pg-db
{ image: postgres:16-alpine
"service": "navidrome", ````
"image": "deluan/navidrome:latest"
}, <!-- SERVICES_LIST_END -->
{
"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"
}
]
```
+1 -1
View File
@@ -4447,7 +4447,7 @@ services:
restart: unless-stopped restart: unless-stopped
volumes: volumes:
#"You can set /downloads to whatever you want but will then need to change the Slskd download dir in your config file" #"You can set /downloads to whatever you want but will then need to change the Slskd download dir in your config file"
- ${DOCKER_VOLUME_STORAGEE}/downloads:/downloads - ${DOCKER_VOLUME_STORAGE}/downloads:/downloads
#Select where you are storing your config file. Leave "/data" since thats where the script expects the config file to be #Select where you are storing your config file. Leave "/data" since thats where the script expects the config file to be
- ${DOCKER_VOLUME_CONFIG}/soularr:/data - ${DOCKER_VOLUME_CONFIG}/soularr:/data
soulseek: soulseek: