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
10 changed files with 5921 additions and 5137 deletions
@@ -1,42 +0,0 @@
name: List of Services README Generation
on:
schedule:
- cron: 30 */2 * * *
workflow_dispatch:
jobs:
readme-services:
name: Generate Services List
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
ref: 'main'
- name: Install yq
uses: dcarbone/install-yq-action@4075b4dca348d74bd83f2bf82d30f25d7c54539b # v1.3.1
- name: Generate service list
run: |
yq 'explode(.) | .services | to_entries | map({"service": .key, "image": .value.image, "description": (.value.labels."homepage.description" // "")})' docker-compose.yml > services.yml
- name: Generate Markdown Table
uses: gazab/create-markdown-table@6686233d7008e8d8b9d4bbdbfd1fb1ae510019f0 # v1.0.7
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@a94899bca583c204427a224a7af87c02f9b325d5 # v9.1.4
with:
message: "chore: Update README"
add: "README.md"
+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,466 +0,0 @@
name: Gitea Branch PR, Cloudflare DNS, README generation, & Docker Deployment
on:
workflow_dispatch:
push:
branches-ignore:
- "main"
- "renovate/**"
paths:
- "**/docker-compose.yml"
env:
FLARECTL_VERSION: "0.116.0"
HC_VAULT_VERSION: "1.21.0"
TEA_VERSION: "0.10.1"
jobs:
check-and-create-pr:
name: Check and Create PR
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 1
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: PR Check @ Rinoa"
notification_message: "Checking for existing PR... 🔍"
- name: PR Check/Creation
uses: https://git.trez.wtf/Trez/gitea-auto-pr@main
with:
url: ${{ secrets.TREZ_GITEA_URL }}
token: ${{ secrets.BOT_GITEA_TOKEN }}
pr-label: docker-compose,manual
assignee: ${{ github.actor }}
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: PR Check @ Rinoa"
notification_message: "PR Check done 🎟️"
generate-service-list:
name: Generate list of added/modified/deleted services
runs-on: ubuntu-latest
needs: [check-and-create-pr]
outputs:
svc_deploy_list: ${{ steps.detect_services.outputs.docker_svc_list }}
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Fetch base branch
run: |
git fetch origin ${{ github.event.pull_request.base.ref }}
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Services TBD"
notification_message: "Generating list of services to deploy..."
- name: Save both versions of docker-compose.yml
run: |
git show origin/main:docker-compose.yml > docker-compose-main.yml || touch docker-compose-main.yml
cp docker-compose.yml docker-compose-head.yml
- name: Detect added, deleted, and modified services
id: detect_services
run: |
set +e # prevent failure on non-zero exit codes
echo "Getting services from main and ${{ github.ref_name }}"
yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt
yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt
echo "Creating list of service changes..."
touch service_changes.txt
# Detect newly added services
comm -13 services_main.txt services_head.txt 2>/dev/null | while read service; do
[ -n "$service" ] && echo "$service: added" >> service_changes.txt
done
# Detect removed services
comm -23 services_main.txt services_head.txt 2>/dev/null | while read service; do
[ -n "$service" ] && echo "$service: removed" >> service_changes.txt
done
# Detect modified services
comm -12 services_main.txt services_head.txt 2>/dev/null | while read service; do
yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml
yq ".services[\"$service\"]" docker-compose-head.yml > tmp_head.yml
if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then
echo "$service: modified" >> service_changes.txt
fi
done
echo "Detected service changes:"
cat service_changes.txt || echo "None"
# Separate categories safely
added_svcs=$(grep -E ': added' service_changes.txt 2>/dev/null | cut -d':' -f1 | sort | uniq)
modified_svcs=$(grep -E ': modified' service_changes.txt 2>/dev/null | cut -d':' -f1 | sort | uniq)
removed_svcs=$(grep -E ': removed' service_changes.txt 2>/dev/null | cut -d':' -f1 | sort | uniq)
# Gather list of modified/added services
mod_svcs=$( (echo "$added_svcs"; echo "$modified_svcs") | tr ' ' '\n' | sort -u | grep -v '^$' || true)
if [ -z "$mod_svcs" ]; then
echo "No modified or added services detected."
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
else
echo "Modified/added services:"
echo "$mod_svcs"
# Include direct dependencies (only if head file exists)
if [ -f docker-compose-head.yml ]; then
echo "Resolving direct dependencies..."
deps_list=""
for svc in $mod_svcs; do
deps=$(yq -r ".services[\"$svc\"].depends_on | keys | .[]" docker-compose-head.yml 2>/dev/null || true)
if [ -n "$deps" ]; then
echo "$svc depends on:"
echo "$deps"
deps_list="$deps_list $deps"
fi
done
all_svcs=$( (echo "$mod_svcs"; echo "$deps_list") | tr ' ' '\n' | sort -u)
else
all_svcs="$mod_svcs"
fi
echo "Final service list (including direct dependencies):"
echo "$all_svcs"
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$all_svcs" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
fi
# Output removed services separately
echo "Removed services:"
echo "${removed_svcs:-None}"
echo "removed_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$removed_svcs" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
# Always exit cleanly
exit 0
docker-compose-dry-run:
name: Docker Compose Dry Run
needs: [generate-service-list]
runs-on: ubuntu-latest
env:
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
VAULT_NAMESPACE: ""
RINOA_REGISTRY_PASSWORD: ${{ secrets.BOT_GITEA_PASSWORD }}
DOCKER_SVC_LIST: ${{ needs.generate-service-list.outputs.svc_deploy_list }}
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_LOGIN_TOKEN }}
- name: Login to Private Gitea Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: git.trez.wtf
username: ${{ secrets.BOT_GITEA_USER }}
password: ${{ secrets.BOT_GITEA_PASSWORD }}
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Docker Compose Dry Run @ Rinoa"
notification_message: "Starting Docker Compose dry run..."
- name: Generate .env from Hashicorp Vault
uses: https://git.trez.wtf/Trez/hc-vault-env@main
with:
HC_VAULT_VERSION: ${{ env.HC_VAULT_VERSION }}
HC_VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
HC_VAULT_AUTH: token
HC_VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
HC_VAULT_SECRETS_PATH: rinoa-docker/env
- name: Check services
env:
DSLIST: ${{ env.DOCKER_SVC_LIST }}
run: |
if [ -z ${DSLIST} ]; then
echo "DOCKER_SVC_LIST=" >> $GITHUB_ENV
else
echo "${DLIST}"
fi
- name: Pre-pull/build service images in parallel
continue-on-error: true
uses: https://git.trez.wtf/Trez/docker-select-image-pull@main
env:
DOCKER_HOST: tcp://dockerproxy:2375
with:
services: ${{ env.DOCKER_SVC_LIST }}
compose_profile: "rinoa-apps"
- name: Docker Compose Dry Run
uses: hoverkraft-tech/compose-action@3846bcd61da338e9eaaf83e7ed0234a12b099b72 # v2.4.1
env:
DOCKER_HOST: tcp://dockerproxy:2375
with:
services: |
${{ needs.generate-service-list.outputs.svc_deploy_list }}
up-flags: -d --remove-orphans --dry-run
compose-flags: --dry-run --profile rinoa-apps
services-log-level: debug
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Docker Compose Dry Run @ Rinoa"
notification_message: "Docker Compose dry run completed successfully."
cloudflare-dns-setup:
name: Cloudflare DNS Setup
needs: [docker-compose-dry-run]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 1
- name: Install flarectl
uses: supplypike/setup-bin@8e3f88b4f143d9b5c3497f0fc12d45c83c123787 # v4.0.1
with:
uri: https://github.com/cloudflare/cloudflare-go/releases/download/v${{ env.FLARECTL_VERSION }}/flarectl_${{ env.FLARECTL_VERSION }}_linux_amd64.tar.gz
name: flarectl
version: ${{ env.FLARECTL_VERSION }}
- 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: |
yq -r '.services[].labels.swag_url' docker-compose.yml | \
egrep -v 'null' | \
awk -F'.' '{print $1}' | \
sort > compose_subdomains.txt
flarectl --json dns list \
--zone "trez.wtf" \
--type=CNAME \
--content "trez.wtf" \
| jq -r '.[].Name' | awk -F"." '{print $1}' | \
sort > cloudflare_subdomains.txt
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Cloudflare Setup @ Rinoa"
notification_message: "Starting Cloudflare DNS setup..."
- name: Compare Subdomains
id: compare-subdomains
uses: LouisBrunner/diff-action@9ea7b75986aa27143ad4928974c98a5a1bd92170 # 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
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Cloudflare Setup @ Rinoa"
notification_message: "Cloudflare DNS setup completed successfully."
pr-merge:
name: PR Merge
needs: [generate-service-list, docker-compose-dry-run]
if: github.ref != 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Install tea
uses: supplypike/setup-bin@8e3f88b4f143d9b5c3497f0fc12d45c83c123787 # v4.0.1
with:
uri: https://gitea.com/gitea/tea/releases/download/v${{ env.TEA_VERSION }}/tea-${{ env.TEA_VERSION }}-linux-amd64
name: tea
version: ${{ env.TEA_VERSION }}
- name: PR Merge
id: pr_merge
run: |
tea login add \
--name gitea-rinoa \
--url "${{ secrets.TREZ_GITEA_URL }}" \
--user gitea-sonarqube-bot \
--password "${{ secrets.BOT_GITEA_PASSWORD }}" \
--token ${{ secrets.BOT_GITEA_TOKEN }}
tea login default gitea-rinoa
echo "Merging PR..."
pr_index=$(tea pr ls \
--repo ${{ github.repository }} \
--state open --fields index,title,head,state \
--output csv | \
egrep ${{ github.ref_name }} | awk -F"," '{print $1}' | sed -e 's|"||g')
tea pr m \
--repo ${{ github.repository }} \
--title "Auto Merge of PR ${pr_index} - ${{ github.ref_name }}" \
--message "Merged by ${{ github.actor }}" ${pr_index}
echo "pr_index=${pr_index}" >> $GITHUB_OUTPUT
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: PR Merge Successful"
notification_message: "PR #${{ steps.pr_merge.outputs.pr_index }} merged."
docker-compose-deploy:
name: Docker Compose Deployment
runs-on: ubuntu-latest
needs: [generate-service-list, docker-compose-dry-run, pr-merge]
env:
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
DOCKER_HOST: tcp://dockerproxy:2375
RINOA_REGISTRY_PASSWORD: ${{ secrets.BOT_GITEA_PASSWORD }}
DOCKER_SVC_LIST: ${{ needs.generate-service-list.outputs.svc_deploy_list }}
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
ref: main
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_LOGIN_TOKEN }}
- name: Login to Private Gitea Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: git.trez.wtf
username: ${{ secrets.BOT_GITEA_USER }}
password: ${{ secrets.BOT_GITEA_PASSWORD }}
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Docker Compose Deployment @ Rinoa"
notification_message: "Starting Docker Compose run..."
- name: Generate .env from Hashicorp Vault
uses: https://git.trez.wtf/Trez/hc-vault-env@main
with:
HC_VAULT_VERSION: ${{ env.HC_VAULT_VERSION }}
HC_VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
HC_VAULT_AUTH: token
HC_VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
HC_VAULT_SECRETS_PATH: rinoa-docker/env
- name: Pre-pull/build service images in parallel
uses: https://git.trez.wtf/Trez/docker-select-image-pull@main
env:
DOCKER_HOST: tcp://dockerproxy:2375
with:
services: ${{ env.DOCKER_SVC_LIST }}
compose_profile: "rinoa-apps"
- name: Docker Compose Deployment
uses: hoverkraft-tech/compose-action@3846bcd61da338e9eaaf83e7ed0234a12b099b72 # v2.4.1
env:
DOCKER_HOST: tcp://dockerproxy:2375
with:
services: |
${{ needs.generate-service-list.outputs.svc_deploy_list }}
up-flags: -d --remove-orphans
down-flags: --dry-run
compose-flags: --profile rinoa-apps
services-log-level: debug
- name: Docker Compose Healthcheck
uses: jaracogmbh/docker-compose-health-check-action@973fbdccf7c8e396b652d3501984c8e530a9fa80 # v1.0.0
with:
max-retries: 30
retry-interval: 10
compose-file: "docker-compose.yml"
skip-exited: "true"
skip-no-healthcheck: "true"
- name: Gotify Notification
uses: https://git.trez.wtf/Trez/gotify-action@main
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: Docker Compose Deployment @ Rinoa"
notification_message: "Deployment completed successfully."
-172
View File
@@ -1,172 +0,0 @@
name: Renovate Image Tag Deployment
on:
workflow_dispatch:
pull_request:
types: [closed]
branches:
- main
paths:
- "**/docker-compose.yml"
env:
HC_VAULT_VERSION: "1.21.0"
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
jobs:
deploy:
name: Renovate PR Deployment
if: |
github.event.pull_request.merged == true &&
github.event.pull_request.user.login == 'renovate-bot'
runs-on: ubuntu-latest
steps:
- name: Checkout full repository
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0 # required so we can access main^1
- name: Save docker-compose.yml before merge (old)
run: |
git fetch origin main
if git ls-tree -r origin/main^1 --name-only | grep -q '^docker-compose.yml$'; then
git show origin/main^1:docker-compose.yml > docker-compose-old.yml
else
echo "services: {}" > docker-compose-old.yml
fi
- name: Save docker-compose.yml after merge (new)
run: |
git show origin/main:docker-compose.yml > docker-compose-new.yml
- name: Detect services with image tag/digest changes
id: detect_services
run: |
set -euo pipefail
echo "Flattening docker-compose files..."
yq eval '... comments=""' docker-compose-old.yml > docker-compose-old-flat.yml
yq eval '... comments=""' docker-compose-new.yml > docker-compose-new-flat.yml
echo "Getting service names..."
yq eval '.services | keys | .[]' docker-compose-old-flat.yml | sort > services_old.txt
yq eval '.services | keys | .[]' docker-compose-new-flat.yml | sort > services_new.txt
echo "Checking for image changes..."
: > service_changes.txt
comm -12 services_old.txt services_new.txt | while read service; do
old_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-old-flat.yml)
new_image=$(yq eval-all --yaml-fix-merge-anchor-to-spec=true ".services[\"$service\"].image // \"\"" docker-compose-new-flat.yml)
if [ "$old_image" != "$new_image" ]; then
echo "$service" >> service_changes.txt
fi
done
echo "Detected services with changed images:"
cat service_changes.txt || echo "None"
changed_svcs=$(sort -u service_changes.txt | xargs || true)
if [ -z "$changed_svcs" ]; then
echo "No image tag/digest changes detected."
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "Collecting direct dependencies..."
deps_list=""
for svc in $changed_svcs; do
deps=$(yq -r ".services[\"$svc\"].depends_on | keys | .[]" docker-compose-new-flat.yml 2>/dev/null || true)
if [ -n "$deps" ]; then
echo "$svc depends on:"
echo "$deps"
deps_list="$deps_list $deps"
fi
done
# Combine changed services and their dependencies, deduplicate
all_svcs=$( (echo "$changed_svcs"; echo "$deps_list") | tr ' ' '\n' | sort -u )
echo "Final service list (including direct dependencies):"
echo "$all_svcs"
# Prepare multiline output for GitHub Actions
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$all_svcs" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
- name: Stop if no image changes
if: steps.detect_services.outputs.docker_svc_list == ''
run: |
echo "No image tag/digest changes detected. Exiting."
exit 1
- name: Login to Docker Hub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_LOGIN_TOKEN }}
- name: Login to Private Gitea Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: git.trez.wtf
username: ${{ secrets.BOT_GITEA_USER }}
password: ${{ secrets.BOT_GITEA_PASSWORD }}
- name: Gotify Notification (Start)
uses: eikendev/gotify-action@master
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Rinoa"
notification_message: "Starting Docker Compose run..."
- name: Generate .env from Hashicorp Vault
uses: https://git.trez.wtf/Trez/hc-vault-env@main
with:
HC_VAULT_VERSION: ${{ env.HC_VAULT_VERSION }}
HC_VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
HC_VAULT_AUTH: token
HC_VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
HC_VAULT_SECRETS_PATH: rinoa-docker/env
- name: Docker Compose Deployment
uses: hoverkraft-tech/compose-action@3846bcd61da338e9eaaf83e7ed0234a12b099b72 # v2.4.1
env:
DOCKER_HOST: tcp://dockerproxy:2375
with:
services: |
${{ steps.detect_services.outputs.docker_svc_list }}
up-flags: -d --remove-orphans
down-flags: --dry-run
services-log-level: debug
- name: Docker Compose Healthcheck
id: health
uses: jaracogmbh/docker-compose-health-check-action@973fbdccf7c8e396b652d3501984c8e530a9fa80 # v1.0.0
with:
max-retries: 30
retry-interval: 10
compose-file: "docker-compose.yml"
skip-exited: "true"
skip-no-healthcheck: "true"
- name: Gotify Notification (Finish)
uses: eikendev/gotify-action@master
with:
gotify_api_base: "${{ secrets.RUNNER_GOTIFY_URL }}"
gotify_app_token: "${{ secrets.RUNNER_GOTIFY_TOKEN }}"
notification_title: "GITEA: [RENOVATE] Docker Compose Deployment @ Rinoa"
notification_message: "Deployment completed successfully."
-65
View File
@@ -1,65 +0,0 @@
name: Renovate
on:
schedule:
- cron: "0/30 * * * *"
workflow_dispatch:
env:
RENOVATE_VERSION: "41.168.6"
jobs:
renovate:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- name: Renovate Run
env:
DOCKER_HOST: tcp://dockerproxy:2375
RENOVATE_PLATFORM: gitea
RENOVATE_ENDPOINT: https://git.trez.wtf/api/v1
RENOVATE_TOKEN: ${{ secrets.RENOVATE_BOT_TOKEN }}
LOG_LEVEL: ${{ vars.RENOVATE_LOG_LEVEL }}
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_TOKEN }}
RENOVATE_CONFIG_FILE: renovate.json
RENOVATE_REPOSITORIES: trez/rinoa-docker
RENOVATE_HOST_RULES: |
[
{
"description": "Docker Hub authentication",
"hostType": "docker",
"matchHost": "docker.io",
"username": "${{ secrets.DOCKERHUB_USER }}",
"password": "${{ secrets.DOCKERHUB_PASSWORD }}"
},
{
"description": "GitHub Container Registry (GHCR)",
"hostType": "docker",
"matchHost": "ghcr.io",
"username": "${{ secrets.GHCR_USER }}",
"password": "${{ secrets.GHCR_LOGIN_TOKEN }}"
},
{
"description": "Self-hosted Gitea Docker Registry",
"hostType": "docker",
"matchHost": "git.trez.wtf",
"username": "${{ secrets.BOT_GITEA_USER }}",
"password": "${{ secrets.BOT_GITEA_PASSWORD }}"
}
]
run: |
docker run --rm \
-e RENOVATE_PLATFORM \
-e RENOVATE_ENDPOINT \
-e RENOVATE_TOKEN \
-e LOG_LEVEL \
-e RENOVATE_GITHUB_COM_TOKEN \
-e RENOVATE_CONFIG_FILE \
-e RENOVATE_REPOSITORIES \
-e RENOVATE_HOST_RULES \
--volumes-from ${{ env.JOB_CONTAINER_NAME }} \
-w ${GITHUB_WORKSPACE} \
renovate/renovate:${{ env.RENOVATE_VERSION }}-full
+2 -2
View File
@@ -1,2 +1,2 @@
**/.cache_ggshield
**/.env
**/.env*
**/*env*
+585 -194
View File
@@ -1,197 +1,588 @@
# List of Services
```json
~> yq '.services | to_entries | map({service: .key, image: .value.image})' docker-compose.yml
| Service | Image | Description |
| --- | --- | --- |
| 13ft | ghcr.io/wasi-master/13ft:latest@sha256:563ce7794a7173250c25c9162495bf2f510dd714067d74363c9ab2bd0e5a994f | Web interface for blocking ads and paywalls |
| actual_server | docker.io/actualbudget/actual-server:latest@sha256:8f72d73e68958566850325c1f9fe780a4477340979969bd6979649dc519723ab | Privacy-focused app for managing finances |
| adguard | adguard/adguardhome:v0.107.69@sha256:8a4107ec812023842ccab9e04600c5d39d3be6b15e907c34a36339c184c8fccf | Ad-blocking/DNS |
| apcupsd-cgi | bnhf/apcupsd-cgi:latest@sha256:e8733930739719aca608fd97aecfb0aa5f53aaf7681bf4bbccd49dbf67132bf8 | Web interface for apcupsd |
| apprise-api | lscr.io/linuxserver/apprise-api:latest@sha256:21295ffabb1e93ac751662160aaa514c6d7f6acc8dfcbe956c9fb32384d51be6 | Multi-channel notification API |
| archivebox | archivebox/archivebox:latest@sha256:fdf2936192aa1e909b0c3f286f60174efa24078555be4b6b90a07f2cef1d4909 | Open-source and self-hosted web archiving |
| asciinema | ghcr.io/asciinema/asciinema-server:latest@sha256:fad89accd5cedb366cd9213ed90e02c4f3c069458771122a9065bc7ffb2e93e1 | Platform for hosting and sharing terminal session recordings |
| asciinema-pg-db | postgres:14-alpine@sha256:cb54bb67c0fca8b439f18c1daadb315ad67de1faf8c387988c63080d15a54145 | |
| audiobookshelf | ghcr.io/advplyr/audiobookshelf:latest@sha256:6fbd7dc95d53c6e168ce69e760b87c334e3b9ba88bf7b8531ed5a116d5d6da03 | Podcasts, eBooks, & Audiobooks |
| audiomuse-ai-flask | ghcr.io/neptunehub/audiomuse-ai:0.7.7-beta@sha256:8ed854bad65eab0807e9ac999346fb32745f22c7daada5bb7df54ded83c14e49 | Platform for hosting and sharing terminal session recordings |
| audiomuse-ai-pg | postgres:15-alpine@sha256:64583b3cb4f2010277bdd9749456de78e5c36f8956466ba14b0b96922e510950 | |
| audiomuse-ai-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| audiomuse-ai-worker | ghcr.io/neptunehub/audiomuse-ai:0.7.7-beta@sha256:8ed854bad65eab0807e9ac999346fb32745f22c7daada5bb7df54ded83c14e49 | |
| authelia | authelia/authelia:master@sha256:e5de2a44aec4e3eb0c19d755e1bb3436e24f00c267d0b1a0725b211e02cdc9fe | Authentication/authorization server with MFA & SSO |
| authelia-pg | postgres:16-alpine@sha256:029660641a0cfc575b14f336ba448fb8a75fd595d42e1fa316b9fb4378742297 | |
| authelia-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| backrest | garethgeorge/backrest:latest@sha256:1308397161321b3c5aeca8acc6bf26eccb990df385f2532d3ce0eaa8b483dedf | Data backup |
| bazarr | lscr.io/linuxserver/bazarr:latest@sha256:a42fef2a5ffa1dca8714e12892ba0b8de5c6c513f1bcdb1ffe4143e715cffb45 | Subtitle automation for TV shows/movies |
| beszel | henrygd/beszel:latest@sha256:37858df37c29cc532d9af103b90a4f2645bc7555f6a291ed3f15c9096a00731e | Lightweight server monitoring hub |
| beszel-agent | henrygd/beszel-agent:latest@sha256:0598b9af65a48422f634d2f636b5f44a17397798e7c74cee6a8c5f4a1e78ef2c | |
| bitwarden | vaultwarden/server:latest@sha256:84fd8a47f58d79a1ad824c27be0a9492750c0fa5216b35c749863093bfa3c3d7 | Credential/Information Vault |
| bluesky-pds | code.modernleft.org/gravityfargo/bluesky-pds:v0.4.158@sha256:44810dc5cf9c78135d20dfd60e0999e2db0dfc5fd56dc7e45e8844d1b57c54bd | |
| browserless | ghcr.io/browserless/chromium:latest@sha256:3c467f68e3b588b89faa6d27556a798121defc46509100386cd100248599fd3f | |
| bytestash | ghcr.io/jordan-dalby/bytestash:latest@sha256:9c17b5510ca45c976fe23b0d4705ad416aa58d4bf756a70e03ef1f08cf7801fd | Code Gists/Snippets |
| changedetection | ghcr.io/dgtlmoon/changedetection.io@sha256:f67668a25429725de212becbdb5d8d783d715b4c99b94da7222a6035ba9f74f6 | Page change monitoring with alerts |
| changedetection-chrome | dgtlmoon/sockpuppetbrowser:latest@sha256:9f2df6791a4cd9b2c3138cb62b5a8de7f27953cab84729fe09d28cbd341a8973 | |
| chrome | gcr.io/zenika-hub/alpine-chrome:123@sha256:e38563d4475a3d791e986500a2e4125c9afd13798067138881cf770b1f6f3980 | |
| clipcascade | sathvikrao/clipcascade:latest@sha256:0f7aadec03af6b22a157466ade3ed1730dfd3b390d2989e55c0180e1d12d736f | Online file converter |
| cloudflareddns | ghcr.io/hotio/cloudflareddns:latest@sha256:b64687779bbe0dcd41f9854129ce8fa9d6c5f009e1992a79bed97c85fe253eaf | |
| convertx | ghcr.io/c4illin/convertx@sha256:53f2c04ebe63fdfb4d812ee66b78a5db9360c729f3defe3dcc864256ff91a7cb | Online file converter |
| crowdsec | crowdsecurity/crowdsec:latest@sha256:4beb1633cf4f41bb6f9e64d065d151d3aa5e3aa7082d5c3061a243037db0d890 | |
| crowdsec-dashboard | metabase/metabase@sha256:b5ef4e436896b5c21a12fac18debe2b583d10dd34d2cb47d807e2da67d264224 | Real-time & crowdsourced protection against aggressive IPs |
| cyber-chef | mpepping/cyberchef:latest@sha256:1772a04fd261f971da89cf6212147afe55a37b4a93421db928a78e01de3d65ea | Web app for encryption, encoding, compression, and data analysis |
| czkawka | jlesage/czkawka@sha256:03109f40d1bc41ebe24c2fd3ee81429950338591bbb64c4cf39ec6160fee75a4 | Smart file management |
| dagu | ghcr.io/dagu-org/dagu:alpine@sha256:29948c23d404d032022401ddadc17f1ab1564c3a2c073ed244958384340f97ec | Cron alternative with a web UI |
| dawarich-app | freikin/dawarich:latest@sha256:7219a71e00f53168028796e17289c22ac734f61bd0457ab55f106dae039214a8 | Self-hosted alternative to Google Location History |
| dawarich-pg-db | postgis/postgis:17-3.5-alpine@sha256:470d7569e6aa821a503eac1f1c3e9851582281db9c1b2fa239ddcc01624fa19a | |
| dawarich-sidekiq | freikin/dawarich:latest@sha256:7219a71e00f53168028796e17289c22ac734f61bd0457ab55f106dae039214a8 | |
| dawarich-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| dead-man-hand | ghcr.io/bkupidura/dead-man-hand:latest@sha256:31905f19678f60d55ecdfa63dad009c07e2055cb5db0c608c8cab5de4467050e | |
| docker-socket-proxy | ghcr.io/tecnativa/docker-socket-proxy:latest@sha256:3400c429c5f9e1b21d62130fb93b16e2e772d4fb7695bd52fc2b743800b9fe9e | |
| dockflare | alplat/dockflare:stable@sha256:d5d77c1caeb3a82467499371dd5e7c9ab7c2c03c527d4f1465062b755aa7c8ca | Cloudflare Tunnel controller |
| dockpeek | ghcr.io/dockpeek/dockpeek:v1.7.1@sha256:f7113905cbf041ce1a71b0dc32f92710d3e55ae6625b4f7994abe8fa9f79a72b | Real-time port monitoring and discovery |
| duplicati | lscr.io/linuxserver/duplicati:latest@sha256:8c9bf31dac0b40a30c0c9fae5496654e43a42ac34b9fe751432a5267f38e301f | Data backup |
| excalidraw | excalidraw/excalidraw:latest@sha256:71b9c25d8bfb47c051015456ef9b64700d53934eeb0e691db5c6522bb265c362 | Virtual whiteboard for sketching hand-drawn like diagrams |
| explo | ghcr.io/lumepart/explo:latest@sha256:4d8870ea033cb27e078772e60c4ca7b92f8c3ece062de8ceaec047e46e79f1df | |
| fastenhealth | ghcr.io/fastenhealth/fasten-onprem:main@sha256:ed5353eb49d0dbd3e3e30aeb1b71d430a35aebe6823637dcd3dca7aa9b7fa3c3 | Open-source, self-hosted, personal/family electronic medical record aggregator |
| flaresolverr | ghcr.io/flaresolverr/flaresolverr:latest@sha256:06c76759d062c185d8ac0b48f302258645b8d99db86109a3d6dce3209d93de51 | |
| garage | dxflrs/garage:v2.1.0@sha256:4c9b34c113e61358466e83fd6e7d66e6d18657ede14b776eb78a93ee8da7cf6a | |
| garage-webui | khairul169/garage-webui:latest@sha256:17c793551873155065bf9a022dabcde874de808a1f26e648d4b82e168806439c | S3-compatible storage backend |
| ghost | ghost:latest@sha256:2489eb1ef94f459d7c84f4d0fe4dc5a8ae42950339c1224f0e89d3bdbccf0cbc | Personal blog |
| gitea | gitea/gitea:1.25.1@sha256:b3aee0f6fa4ff3271180a2388bb796be5cced8828685b968a310d70e881fcbb3 | Private Code Repo |
| gitea-db | postgres:14@sha256:50abf1998eacf0a5926bc9f3d50b686f52959ff99acef7841e4ac39f3577b987 | |
| gitea-runner | gitea/act_runner:latest@sha256:8477d5b61b655caad4449888bae39f1f34bebd27db56cb15a62dccb3dcf3a944 | |
| gitea-sonarqube-bot | justusbunsi/gitea-sonarqube-bot:v0.4.0@sha256:18dd43b470d9a470e27d5999dd7dcbb44423d5c4466ae56dd7c1722f23115673 | |
| gitignore-io | guog/gitignore.io:latest@sha256:27b0bc3e9eb81adaee39fb6f77169ea9cbef164bcab049d29bcab68d154013ad | .gitignore generator |
| gluetun | qmcgaw/gluetun:latest@sha256:74eeabaec71a3cca40f4eb9d02a9137945a4a3c1da697fc4a92088e625ba784c | |
| gotify | gotify/server@sha256:2ae0e4e689f183137c8247884382fcb174d5a72253ce1897e7e5267090093fc8 | Notification System |
| guacamole | flcontainers/guacamole:latest@sha256:81a420f386ef8cbb4697208e13ea90f6a10a54619981241bed672e4a41b5f77f | Client-less remote desktop gateway |
| homepage | ghcr.io/gethomepage/homepage:latest@sha256:e7fc26f914cf5e7dcd6c566e24ca218addb879aa76478ad4a553b1f9ae48b1d7 | |
| hugo | hugomods/hugo:exts@sha256:86b9a9ee8915be9cd5e9b555082352ab502daebf12c0bdae0a513f5340586496 | Static site |
| immich-server | ghcr.io/immich-app/immich-server:release@sha256:4504d794123c3f5410cc45bbc61e4d7dbcacec1e1b0cd2e599691430c94e5849 | High performance self-hosted photo and video management solution |
| immich-machine-learning | ghcr.io/immich-app/immich-machine-learning:release@sha256:bf339cbb44af6c2ef25d9128e1da51b2bec0cfd524846a83e3017c21bd71ddb4 | |
| immich-pg-db | tensorchord/pgvecto-rs:pg14-v0.2.1@sha256:9172feae86a211bc502db4ec2d3309a57329060b031d91796d39f45d1d698ef3 | |
| immich-public-proxy | alangrainger/immich-public-proxy:latest@sha256:9b0bfb05897fffdcec83ebb8a06b8e962a023d54ba2fa6ca7031d1d179849cbe | Immich Proxy for public sharing |
| immich-power-tools | ghcr.io/varun-raj/immich-power-tools:latest@sha256:2abdc8a73cd7438006e16f7a9b50f51ca6806332f8855404375e8bbdd5b024f7 | |
| immich-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| influxdb2 | influxdb:2-alpine@sha256:b4dbe25bb8f8be38f9cf5a12cbca453318a1ad3475954e9d37c38f6e5bc5006b | Scalable datastore for metrics, events, and real-time analytics |
| invidious | quay.io/invidious/invidious:latest@sha256:2836b5b8226a53a9cc2afdbd5f5fe6bccdd200f2e17cd92a828b4dc8d8b5cc06 | Alternative YouTube frontend (privacy-focused, ad-blocking) |
| invidious-companion | quay.io/invidious/invidious-companion:latest@sha256:4f589b8eedf3c2d49de4a256ee018d7e4ff54fcce683f9005a31dbb7d1bf870f | |
| invidious-db | docker.io/library/postgres:14@sha256:962ffbe9f6418387643411b127c1db27465e5a23b9a8849bfaf45fa6323963ce | |
| it-tools | ghcr.io/corentinth/it-tools:latest@sha256:8b8128748339583ca951af03dfe02a9a4d7363f61a216226fc28030731a5a61f | Useful tools for developers and people working in IT |
| jellyfin | jellyfin/jellyfin@sha256:d43a8878689311f841a1967f899f54db56877bf6b426fd7ff870ac1a6fd1dce4 | Movie/TV Streaming |
| jitsi-etherpad | etherpad/etherpad:1.9.7@sha256:d1d6a772dd49e2d920fda874cdae2d4a43f24ba5713a1e330b6342fbab3eb5ec | |
| 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 | Web Conferencing |
| joplin-db | postgres:17-alpine@sha256:ef257d85f76e48da1c64832459b59fcaba1a4dac97bf5d7450c77753542eee94 | |
| joplin | joplin/server:latest@sha256:95b67dc6a4e77a974ac2bcc86818cbbfe5495e7b62d06a66f848a877878dce53 | Open-source note taking & to-do |
| karakeep | ghcr.io/karakeep-app/karakeep:release@sha256:abd7d6b11b1b8fa3593d1971f886a74850ba8d6a99291218b150207d5a60378e | Self-hosted bookmark-everything app with a touch of AI for data hoarders |
| languagetool | elestio/languagetool:latest@sha256:85a32bdef9e7d87125977a201bfe7aa4310e67cab8abfa370157a9fc67cda4cd | |
| libretranslate | libretranslate/libretranslate@sha256:c057e7fb60731a768406e6630909ce6fb5127b594109966b3b2fd90f9eccdac1 | Open-source machine translation API |
| lidarr | lscr.io/linuxserver/lidarr:latest@sha256:1d49ebdfaae525d9e1e4ad5b7fa1753e364da44ac1b5e6acae241a2173ac09a4 | Music Automation |
| lidify | thewicklowwolf/lidify:latest@sha256:958eaddeef8195470b974ee03512d9a5c31ad2af3167f7824448fb026fa9c94a | Music Discovery a la Last.fm, Spotify, Pandora, etc. |
| linkstack | linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae | Personal profile |
| lldap | lldap/lldap:stable@sha256:9e605a66c02514bfcffd1b67cafb1e98d50992216bb2871d7ae44622047dd09d | LDAP made easy |
| loggifly | ghcr.io/clemcer/loggifly:latest@sha256:6faa4d4964994a9213494f879b58085acc04cafa2927cadfde98657676dfd199 | |
| maloja | krateng/maloja:latest@sha256:4ecea26058d2ca5168a8d53820279942d28f0606664cea6425f42371d5d88f95 | Simple self-hosted music scrobble database to create personal listening statistics |
| manyfold | lscr.io/linuxserver/manyfold:latest@sha256:ad4e5f03c811c37eb740f1748c44a8a2a935d8c55f3adf72aaa7b71e8c9e5ccb | Self-hosted digital asset manager for 3D print files |
| manyfold-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| mariadb | linuxserver/mariadb@sha256:195b6be2d3e2dd0744a54ba2542a136c572b3375bc7f019e37a505da5da3022b | |
| mastodon | lscr.io/linuxserver/mastodon:latest@sha256:99d16a9b2982e3f9cd3406a142e9b5f1293bd81dec27d0e37fbccaaf526f2b4e | Open-source social network |
| mastodon-pg-db | postgres:17-alpine@sha256:ef257d85f76e48da1c64832459b59fcaba1a4dac97bf5d7450c77753542eee94 | |
| mastodon-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| maxun-backend | getmaxun/maxun-backend:latest@sha256:d9c5f3036d2bccde7387cd3ab06f6cb9f23fb9f8094a9bf83eb194683724430e | |
| maxun-frontend | getmaxun/maxun-frontend:latest@sha256:fd6f977affa245a2b7d93ffada7c9a5d36657b1948d2374914d6a71e0df63dd6 | No-code web data extraction platform |
| maxun-pg-db | postgres:17-alpine@sha256:ef257d85f76e48da1c64832459b59fcaba1a4dac97bf5d7450c77753542eee94 | |
| maxun-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| meilisearch | getmeili/meilisearch:v1.24@sha256:d991eb07331e9d1f9cec7bc0f9523fd5d51aee3b223d997e0e66206361952056 | |
| meme-search-pro | ghcr.io/neonwatty/meme_search_pro:latest@sha256:bf3c20a6a0407ffa594d3e2fe8611073c0499659c90f44a28decd5e701e9e1f6 | Meme search engine built with Python and Ruby |
| meme-search-pro-img2txt-gen | ghcr.io/neonwatty/image_to_text_generator:latest@sha256:e8445afab38e2eae1fcb95101dd26cf66708ef72127b291cab748050b4700cb8 | |
| meme-search-db | pgvector/pgvector:pg17@sha256:9ae02a756ba16a2d69dd78058e25915e36e189bb36ddf01ceae86390d7ed786a | |
| mini-qr | ghcr.io/lyqht/mini-qr:latest@sha256:babe90594f88cb3e8463a7622b1aac46defff7ef5c8d991299c5df4ca8514f66 | Scan and generate customized QR codes easily |
| minio | minio/minio:RELEASE.2025-04-22T22-12-26Z@sha256:a1ea29fa28355559ef137d71fc570e508a214ec84ff8083e39bc5428980b015e | S3-compatible storage backend |
| mixpost | inovector/mixpost:latest@sha256:088a0eed84289e9a408294acea969c1eebf80dff803d165629fe20c3442b0f8c | Multi-channel social media manager |
| mixpost-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| mgob | stefanprodan/mgob@sha256:d089c6d105d7d0f9db5222786cb93d85b1bf61e28b21ad717cea90f92570c8f3 | Headless Automated MongoDB Backups |
| mongodb | mongo:7@sha256:a814f930db8c4514f5fe5dc3e489f58637fb7ee32a7b9bb0b7064d3274e90b8e | |
| mongodb-exporter | percona/mongodb_exporter:0.47.1@sha256:8ba5d6e25fe7e30912f10b01a9e16e14c6c3af05f36dcaed0659690d70dc1670 | |
| multi-scrobbler | foxxmd/multi-scrobbler@sha256:e1e4832256f5fca895dc3e2f377abfb1476230eb6b30da97fbc32840f21d1e7f | JS App for scrobbling/recording play history from/to multiple sources |
| n8n | docker.n8n.io/n8nio/n8n@sha256:cf74d4ebe7dca858c390ee317b9a4f554ea57f0444b2d760f6d69e4f18d5d312 | Extendable workflow automation tool to easily automate tasks |
| navidrome | deluan/navidrome:latest@sha256:2ae037d464de9f802d047165a13b1c9dc2bdbb14920a317ae4aef1233adc0a3c | Music Streaming |
| netalertx | jokobsk/netalertx:latest@sha256:9304e29cd71bf9ddc9f33d6a7ddb3d71bab71815e077ab330f86bcc081598a79 | Network Monitoring |
| nextcloud | nextcloud/all-in-one:latest@sha256:090f59bbef2c6753b2ac58163d3bece84b15af19d9d83d02c33da83080cb6400 | Private Cloud |
| nocodb | nocodb/nocodb:latest@sha256:8fd57018accf775fb5390392910e4b0ef6bb154f17c5732b478eb76c40ee8d1e | Turn any SQL-based database into a smart spreadsheet |
| nocodb-pg-db | postgres:16-alpine@sha256:029660641a0cfc575b14f336ba448fb8a75fd595d42e1fa316b9fb4378742297 | |
| nocodb-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| ollama | ollama/ollama:latest@sha256:889ae74bdb4aa541044574d3e5e5dedde3c682c8b7918b6792aa031e7dfc8f06 | |
| ombi | lscr.io/linuxserver/ombi:latest@sha256:701c9801649b2245335b9a99f1dd05d34d1718f1f52bfc021483d1712c83d915 | Media Requests |
| omnitools | iib0011/omni-tools:latest@sha256:66027051e7fcf25ca898f3ddddb1e7a7a6682fea4985ca4b96444a7b9d5a984c | Tools for common tasks |
| omnipoly | kweg/omnipoly:latest@sha256:fa133d5ac6534ee45e393fab85ad61098a0826351724996e0d29ba61033dde7d | Open-source language translation with LanguageTool, LibreTranslate, & Ollama |
| open-webui | ghcr.io/open-webui/open-webui:main@sha256:d6ab9bce3030f5b58e59144a7db9fe3012b39c94d27bc2979e98e6d6dc2161da | User-friendly and extensible AI interface |
| open-webui-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| paperless-ngx | ghcr.io/paperless-ngx/paperless-ngx:latest@sha256:7ec0797af256194f6e117d1b7ed3ef91ad31b4a14bf3092abdee6bb74f6b3656 | Document indexer & archiver with OCR |
| paperless-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| pgbackweb | eduardolat/pgbackweb:latest@sha256:56358e7adff53250ec0b43cf2764e723e45872fa2b92b9608fdddfeebaafbed7 | Backups for PostgreSQL |
| pgbackweb-db | postgres:17-alpine@sha256:ef257d85f76e48da1c64832459b59fcaba1a4dac97bf5d7450c77753542eee94 | |
| planka | ghcr.io/plankanban/planka:2.0.0-rc.3@sha256:5a2a69ec7159a2f9c6679c31698e4b5b17ccf254d5bfc6e9be43e411b6de0c3d | Kanban board |
| planka-pg-db | postgres:16-alpine@sha256:029660641a0cfc575b14f336ba448fb8a75fd595d42e1fa316b9fb4378742297 | |
| plant-it | msdeluise/plant-it-server:latest@sha256:23ddf8660087d6b9f5dbdca2ca09817b84db45cb2d9d6e2e0176e70f514629e7 | 🪴 Self-hosted, open source gardening companion app |
| plant-it-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| plantuml-server | plantuml/plantuml-server:jetty@sha256:d672e1faf68d9f455d162502bf69edde5d8b0fbe25cf2d01ded9611156dab3ef | Textual diagram generator for UML & other visualizations. |
| portainer | portainer/portainer-ce:alpine@sha256:adcb33ce6a1debd31918a215ebfd08bca84259b907466d93cea63bd538d20f02 | Service delivery platform for containerized applications |
| portchecker-web | ghcr.io/dsgnr/portcheckerio-web:latest@sha256:8bea203e8785541c0acac7860de9f70849b05806e0c6db1d83dfc1b8407a6077 | Service delivery platform for containerized applications |
| portchecker-api | ghcr.io/dsgnr/portcheckerio-api:latest@sha256:7783796d791c3e10aedba9d5f7fc2b934bb0e7afa75bc89054b70b886ed39e5c | |
| postal-smtp | ghcr.io/postalserver/postal:latest@sha256:ff9a42deeda9b236ac36df012dab843b14726da8f3c2464c18c371f23107d986 | |
| postal-web | ghcr.io/postalserver/postal:latest@sha256:ff9a42deeda9b236ac36df012dab843b14726da8f3c2464c18c371f23107d986 | OSS Mail delivery platform |
| postal-worker | ghcr.io/postalserver/postal:latest@sha256:ff9a42deeda9b236ac36df012dab843b14726da8f3c2464c18c371f23107d986 | |
| protonmail-bridge | shenxn/protonmail-bridge@sha256:3717b4441130675dc9131196de9f9c5287d2ea21b138d83b0486429e1737638a | |
| prowlarr | lscr.io/linuxserver/prowlarr:latest@sha256:643220338204525524db787ff38a607261597f49d1f550694acdb3e908e2b43e | Index aggregator |
| qbit-manage | ghcr.io/stuffanthings/qbit_manage:latest@sha256:64f749b97604d607747fc8b790821cf0317d8107385ea111afe1ed1c9d1d5b11 | |
| qbittorrentvpn | ghcr.io/binhex/arch-qbittorrentvpn:latest@sha256:e6556875ffa483ff603c0ed76c0c10122efad1edee2d9f5e4a94244accd5b3a3 | Fast and stable torrent client |
| radarec | thewicklowwolf/radarec:latest@sha256:df726f35e3a1ef2f0cd482a6cf993bac8782804efd38ee8004c8694f7e8f526e | Movie discovery based on library/tastes |
| radarr | lscr.io/linuxserver/radarr:latest@sha256:c984533510abe0219a70e80d15bd0d212b7df21baa0913759c4ce6cc9092240b | Movie Automation |
| reactive-resume | amruthpillai/reactive-resume:latest@sha256:f1b27f567b2a1b57fb6b2a81f7b9cec0af577b6be945820c1599a0a8b6b91f8b | Open-source resume builder |
| reactive-resume-pg | postgres:16-alpine@sha256:029660641a0cfc575b14f336ba448fb8a75fd595d42e1fa316b9fb4378742297 | |
| readarr | lscr.io/linuxserver/readarr:develop@sha256:eb37f58646a901dc7727cf448cae36daaefaba79de33b5058dab79aa4c04aefb | eBook/Audiobook Automation |
| redlib | quay.io/redlib/redlib:latest@sha256:25dbb5466ebd22e58277d4aa54897899b044f02f7219ca3054784aecc0be34e1 | Redlib is a private front-end like Invidious but for Reddit |
| rocketchat | registry.rocket.chat/rocketchat/rocket.chat:latest | Fully customizable communications platform with high standards of data protection |
| romm | rommapp/romm:latest@sha256:1895c339b3c7ca62d52f809f5e4c747d78fc8291ea5ee88b3b57df84acf33449 | Beautiful, powerful, self-hosted ROM manager |
| romm-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| sabnzbdvpn | ghcr.io/binhex/arch-sabnzbdvpn:latest@sha256:411ed4ba589529960690c08de64fb2791c76d37d9a4278a99d30d7d32fc701f5 | NZB Downloader over VPN |
| sablier | sablierapp/sablier:latest@sha256:4d4096b59a6e1496bd3106c1a90a7fdd161aafb73d58539b8c749c69380dedae | |
| scraparr | ghcr.io/thecfu/scraparr:2@sha256:cfe07f005aa6e93221dd0bb540600aaa51ea1215968595806863f9df3dc3b26c | |
| scrutiny | ghcr.io/analogj/scrutiny:master-omnibus@sha256:e5638d8580adba40f7c03464cde8420866188b9e48cddb9fc3866ec3243163d5 | WebUI for smartd S.M.A.R.T monitoring |
| searxng | searxng/searxng:latest@sha256:e479206b72bc16054000c06d04574bc93f4abe1adbaa6432037bd806c0acabed | Anonymized Meta-Search Engine |
| searxng-valkey | docker.io/valkey/valkey:8-alpine@sha256:e706d1213aaba6896c162bb6a3a9e1894e1a435f28f8f856d14fab2e10aa098b | |
| semaphore-ui | semaphoreui/semaphore:v2.16.37@sha256:8785cb97da895b3770c4c197fe42717b71ac226e47df6dea9373934ae6ecde37 | Modern UI for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools |
| signoz-app | signoz/signoz:v0.96.1@sha256:e2cded000c87adb0366c9ae4f292e034515458552d151879195071ba4f078b4e | Logs, metrics, and traces in a single pane |
| signoz-clickhouse | clickhouse/clickhouse-server:25.5.6-alpine | |
| signoz-init-clickhouse | clickhouse/clickhouse-server:25.5.6-alpine | |
| signoz-logspout | pavanputhra/logspout-signoz@sha256:6da8ce12279a5262de8b2d5c083ce82d4c878c4eab702b4d328afe147ed7553b | |
| signoz-otel-collector | signoz/signoz-otel-collector:v0.129.8@sha256:1beda534e337767597c3fdc83fcca8593a98b6db89bc34032e8fec7c58b7c900 | |
| signoz-schema-migrator-async | signoz/signoz-schema-migrator:v0.129.8@sha256:eb20e69025373e0d9749d3a88e34d74654ea4c03be694eebdb5b76a6cbeadfdc | |
| signoz-schema-migrator-sync | signoz/signoz-schema-migrator:v0.129.8@sha256:eb20e69025373e0d9749d3a88e34d74654ea4c03be694eebdb5b76a6cbeadfdc | |
| signoz-zookeeper-1 | signoz/zookeeper:3.7.1@sha256:fcc4a3288154ccaa3bdb5ae6dc10180c084d29a8a6a26b62ac8e30a8940dc2e6 | |
| sonarqube | mc1arke/sonarqube-with-community-branch-plugin:lts@sha256:70b055c294a2a751357ee65d5d55139c93f87faed436d0075034da38b2edafa1 | Code/DevOps quality/security |
| sonarqube-pg-db | postgres:17-alpine@sha256:ef257d85f76e48da1c64832459b59fcaba1a4dac97bf5d7450c77753542eee94 | |
| sonarr | lscr.io/linuxserver/sonarr:latest@sha256:4b8a853b76337cd5de5f69961e23b7d0792ce7bf0a8be083dd7202ef670bfc34 | TV Show Automation |
| sonashow | thewicklowwolf/sonashow:latest@sha256:4b40df407bf31577668bfb3191e007ac78c349d81bfde7463ec8433d417ebd3d | TV show discovery based on library/tastes |
| soularr | mrusse08/soularr:latest@sha256:71a0b9e5a522d76bb0ffdb6d720d681fde22417b3a5acc9ecae61c89d05d8afc | |
| soularr-dashboard | ghcr.io/mrusse/soularr:main@sha256:61181c5809845d2c49c8c3c182c0280c5c91069cd2e5d7c341ddd8bfa2c01598 | Dashboard for monitoring Soularr |
| soulseek | slskd/slskd@sha256:239ccb871fa1a624aa8ad4f11a712b4ec6c7a2ff570bf5800abae2cf91030834 | Modern client-server application for the Soulseek file-sharing network. |
| speedtest-tracker | lscr.io/linuxserver/speedtest-tracker:latest@sha256:689627263cf0e38d50d5b9067e926ecbe90049753ab2aeab48bebcef2d2d9b63 | Self-hosted internet performance tracking |
| stable-diffusion-webui | ghcr.io/neggles/sd-webui-docker:latest@sha256:1795fe796e1dad0d8d3baa9ef7c38a255b69c0878b76869feecc617bfd015e53 | |
| stirling-pdf | docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest@sha256:bfe2b8dd378c4f3d5fc1d2fc7649a357d0916b3a713022aa70ac3f08d6302cbc | PDF Operations |
| swag | lscr.io/linuxserver/swag:latest@sha256:fab0cdf1f5be08e6d9c4f24a9cd321bd0a60a3e09d5ca991cf761561eaf467c6 | SWAG Dashboard for proxies |
| tandoor | vabene1111/recipes@sha256:af6bd76e703d644748a93d581da05c25159d742b94b2da9eddadaaec93555858 | Recipes, cookbooks, meal-planning, & grocery lists |
| tandoor-pg | postgres:16-alpine@sha256:029660641a0cfc575b14f336ba448fb8a75fd595d42e1fa316b9fb4378742297 | |
| unmanic | josh5/unmanic:latest@sha256:80a76023a5d32a4afefb4cf0bd1712674b46174283216b5b1760b3f8135fc56d | Library Optimizer |
| uptimekuma | louislam/uptime-kuma:latest@sha256:431fee3be822b04861cf0e35daf4beef6b7cb37391c5f26c3ad6e12ce280fe18 | HTTP Endpoint Monitoring |
| vault | hashicorp/vault:latest@sha256:62dd55c9ccbdc0af0a9269e87481a64650258907434d5ddb5e795e2eb2ac5780 | HashiCorp Vault for secrets, key/value stores, etc. |
| wallos | bellamy/wallos:latest@sha256:1277c83dc626853ac14658c1b0aaf003e1bced213c37370d149fdd9622b5747f | Subscription Tracking |
| web-check | lissy93/web-check@sha256:f2d1dc726958c1d79ac459cac84eb26eb4f203a4d27447f336695a8c1884f1e3 | Site scanner for attack vectors, architecture, security configs, and more |
| whodb | clidey/whodb@sha256:9bdd46c7d37c2cf6aa57a689749eb28acd5ea6b63519c58d59cb25a1ee8f57ae | Lightweight next-gen database explorer |
| wizarr | ghcr.io/wizarrrr/wizarr@sha256:f2eabe36fcbdb4e8c50fc98b4fe9aa1a00dfcd4411d3ea3f10cf619cf3d83341 | User invitation management system for Jellyfin, Plex, and Emby |
| youtubedl | nbr23/youtube-dl-server:latest@sha256:a5274ded39024da2fe8c3116747e9b906a867ffea8307a6cd4220215f1dfefed | YouTube Downloader |
[
{
"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"
}
]
```
+4364 -4173
View File
File diff suppressed because it is too large Load Diff
+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=''
-23
View File
@@ -1,23 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>trez/renovate-config"],
"packageRules": [
{
"description": "Freeze ClickHouse and Zookeeper",
"matchDatasources": ["docker"],
"matchManagers": ["docker-compose"],
"matchPackageNames": [
"clickhouse/clickhouse-server",
"signoz/zookeeper"
],
"enabled": false
},
{
"description": "Pin Postgres, pgvector, and pgvecto-rs images",
"matchDatasources": ["docker"],
"matchManagers": ["docker-compose"],
"matchPackageNames": ["postgres", "pgvector", "pgvecto-rs"],
"pinDigests": true
}
]
}