diff --git a/.gitea/workflows/deployment.yml b/.gitea/workflows/deployment.yml index a842a0c9..3e154bcb 100644 --- a/.gitea/workflows/deployment.yml +++ b/.gitea/workflows/deployment.yml @@ -14,36 +14,47 @@ jobs: - name: Checkout Code 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 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' + 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_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') + if [ "${pr_state}" != open ]; then + tea pr c -r ${{ github.repository }} -t "Automated PR for ${{ github.ref_name }}" -d "Automated PR for ${{ github.ref_name }}" + elif [ "${pr_state}" = open ]; then + echo "PR already exists, skipping creation..." + fi 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.RINOA_VAULT_TOKEN }} steps: - name: Checkout uses: actions/checkout@v4 + + - name: Install jq + uses: dcarbone/install-jq-action@v3.0.1 - - name: Generate ephemeral .env compose file - id: generate-env-file-pr + - name: Install Vault + uses: cpanato/vault-installer@main + with: + vault-release: '1.18.3' + + - name: Generate .env file for linting 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 uses: yu-ichiro/spin-up-docker-compose-action@v1 @@ -100,6 +111,7 @@ jobs: - 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 }} @@ -109,20 +121,96 @@ jobs: flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf" done - merge-pr: - name: PR Merge + regenerate-readme: + name: Update README runs-on: ubuntu-latest - if: ${{ always() }} needs: [cloudflare-dns-setup] steps: - name: Checkout 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: | - 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 }} + services_list=$(yq '.services | to_entries | map({"service": .key, "image": .value.image})' docker-compose.yml) + echo "SERVICES_LIST<> $GITHUB_ENV + echo "${services_list}" >> $GITHUB_ENV + 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') - tea pr m --repo ${{ github.repository }} --title "${{ github.ref_name }} Auto Merge" --message "Merged by ${{ gitea.actor }}" --output table ${pr_index} \ No newline at end of file + 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 }} + \ No newline at end of file diff --git a/README.md b/README.md index 53d4d6ad..eeb2a223 100644 --- a/README.md +++ b/README.md @@ -1,588 +1,309 @@ # 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` -[ - { - "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" - } -] -``` \ No newline at end of file + +```yaml +- 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: bunkerweb + image: bunkerity/bunkerweb:latest +- service: bunkerweb-scheduler + image: bunkerity/bunkerweb-scheduler:latest +- service: bunkerweb-ui + image: bunkerity/bunkerweb-ui: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.6 +- 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: guacamole + image: flcontainers/guacamole: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: mastodon-pg-db + image: postgres:17-alpine +- 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: soularr + image: mrusse08/soularr: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 +```` + + \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index e3ce8339..d9dc4511 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4447,7 +4447,7 @@ services: restart: unless-stopped volumes: #"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 - ${DOCKER_VOLUME_CONFIG}/soularr:/data soulseek: