Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ab4d6c2242 |
@@ -1,35 +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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
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 | sub("@sha256:.*$"; "")), "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"
|
||||
@@ -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,456 +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.4"
|
||||
TEA_VERSION: "0.14.0"
|
||||
|
||||
jobs:
|
||||
check-and-create-pr:
|
||||
name: Check and Create PR
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Gotify Notification
|
||||
uses: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- name: Fetch base branch
|
||||
run: |
|
||||
git fetch origin ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Gotify Notification
|
||||
uses: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.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
|
||||
uses: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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: 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@05da55b2bb8a5a759d1c4732095044bd9018c050 # v2.4.3
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- 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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@05da55b2bb8a5a759d1c4732095044bd9018c050 # v2.4.3
|
||||
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: eikendev/gotify-action@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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."
|
||||
@@ -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.4"
|
||||
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@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
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@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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@05da55b2bb8a5a759d1c4732095044bd9018c050 # v2.4.3
|
||||
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@ca0339b85ee8db9fda9c0718aaa7f95e17b3c617 # 0.0.4
|
||||
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."
|
||||
@@ -1,65 +0,0 @@
|
||||
name: Renovate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0/30 * * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
RENOVATE_VERSION: "43.170.22"
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- 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
@@ -1,2 +1,2 @@
|
||||
**/.cache_ggshield
|
||||
**/.env
|
||||
**/.env*
|
||||
**/*env*
|
||||
|
||||
@@ -1,192 +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 | Web interface for blocking ads and paywalls |
|
||||
| actual_server | docker.io/actualbudget/actual-server:latest | Privacy-focused app for managing finances |
|
||||
| adguard | adguard/adguardhome:v0.107.75 | Ad-blocking/DNS |
|
||||
| apcupsd-cgi | bnhf/apcupsd-cgi:latest | Web interface for apcupsd |
|
||||
| apprise-api | lscr.io/linuxserver/apprise-api:latest | Multi-channel notification API |
|
||||
| archivebox | archivebox/archivebox:latest | Open-source and self-hosted web archiving |
|
||||
| asciinema | ghcr.io/asciinema/asciinema-server:latest | Platform for hosting and sharing terminal session recordings |
|
||||
| asciinema-pg-db | postgres:14-alpine | |
|
||||
| audiobookshelf | ghcr.io/advplyr/audiobookshelf:latest | Podcasts, eBooks, & Audiobooks |
|
||||
| authelia | authelia/authelia:master | Authentication/authorization server with MFA & SSO |
|
||||
| authelia-pg | postgres:16-alpine | |
|
||||
| authelia-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| backrest | garethgeorge/backrest:latest | Data backup |
|
||||
| bazarr | lscr.io/linuxserver/bazarr:latest | Subtitle automation for TV shows/movies |
|
||||
| beszel | henrygd/beszel:latest | Lightweight server monitoring hub |
|
||||
| beszel-agent | henrygd/beszel-agent:latest | |
|
||||
| bitwarden | vaultwarden/server:latest | Credential/Information Vault |
|
||||
| bluesky-pds | code.modernleft.org/gravityfargo/bluesky-pds:v0.4.193 | |
|
||||
| browserless | ghcr.io/browserless/chromium:latest | |
|
||||
| bytestash | ghcr.io/jordan-dalby/bytestash:latest | Code Gists/Snippets |
|
||||
| changedetection | ghcr.io/dgtlmoon/changedetection.io | Page change monitoring with alerts |
|
||||
| changedetection-chrome | dgtlmoon/sockpuppetbrowser:latest | |
|
||||
| chrome | gcr.io/zenika-hub/alpine-chrome:124 | |
|
||||
| clipcascade | sathvikrao/clipcascade:latest | Online file converter |
|
||||
| cloudflareddns | ghcr.io/hotio/cloudflareddns:latest | |
|
||||
| convertx | ghcr.io/c4illin/convertx | Online file converter |
|
||||
| crowdsec | crowdsecurity/crowdsec:latest | |
|
||||
| crowdsec-dashboard | metabase/metabase | Real-time & crowdsourced protection against aggressive IPs |
|
||||
| cyber-chef | mpepping/cyberchef:latest | Web app for encryption, encoding, compression, and data analysis |
|
||||
| czkawka | jlesage/czkawka | Smart file management |
|
||||
| dawarich-app | freikin/dawarich:latest | Self-hosted alternative to Google Location History |
|
||||
| dawarich-pg-db | postgis/postgis:17-3.5-alpine | |
|
||||
| dawarich-sidekiq | freikin/dawarich:latest | |
|
||||
| dawarich-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| dead-man-hand | ghcr.io/bkupidura/dead-man-hand:latest | |
|
||||
| docker-socket-proxy | ghcr.io/tecnativa/docker-socket-proxy:latest | |
|
||||
| dockflare | alplat/dockflare:stable | Cloudflare Tunnel controller |
|
||||
| dockpeek | ghcr.io/dockpeek/dockpeek:v1.7.2 | Real-time port monitoring and discovery |
|
||||
| duplicati | lscr.io/linuxserver/duplicati:latest | Data backup |
|
||||
| excalidraw | excalidraw/excalidraw:latest | Virtual whiteboard for sketching hand-drawn like diagrams |
|
||||
| explo | ghcr.io/lumepart/explo:latest | |
|
||||
| fastenhealth | ghcr.io/fastenhealth/fasten-onprem:main | Open-source, self-hosted, personal/family electronic medical record aggregator |
|
||||
| flaresolverr | ghcr.io/flaresolverr/flaresolverr:latest | |
|
||||
| garage | dxflrs/garage:v2.3.0 | |
|
||||
| garage-webui | khairul169/garage-webui:latest | S3-compatible storage backend |
|
||||
| ghost | ghost:latest | Personal blog |
|
||||
| gitea | gitea/gitea:1.26.2 | Private Code Repo |
|
||||
| gitea-db | postgres:14 | |
|
||||
| gitea-runner | gitea/act_runner:nightly | |
|
||||
| gitea-sonarqube-bot | justusbunsi/gitea-sonarqube-bot:v0.4.0 | |
|
||||
| gitignore-io | guog/gitignore.io:latest | .gitignore generator |
|
||||
| gluetun | qmcgaw/gluetun:latest | |
|
||||
| gotify | gotify/server | Notification System |
|
||||
| guacamole | flcontainers/guacamole:latest | Client-less remote desktop gateway |
|
||||
| homepage | ghcr.io/gethomepage/homepage:latest | |
|
||||
| hugo | hugomods/hugo:exts | Static site |
|
||||
| immich-server | ghcr.io/immich-app/immich-server:release | High performance self-hosted photo and video management solution |
|
||||
| immich-machine-learning | ghcr.io/immich-app/immich-machine-learning:release | |
|
||||
| immich-pg-db | tensorchord/pgvecto-rs:pg14-v0.2.1 | |
|
||||
| immich-public-proxy | alangrainger/immich-public-proxy:latest | Immich Proxy for public sharing |
|
||||
| immich-power-tools | ghcr.io/varun-raj/immich-power-tools:latest | |
|
||||
| immich-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| influxdb2 | influxdb:2-alpine | Scalable datastore for metrics, events, and real-time analytics |
|
||||
| invidious | quay.io/invidious/invidious:latest | Alternative YouTube frontend (privacy-focused, ad-blocking) |
|
||||
| invidious-companion | quay.io/invidious/invidious-companion:latest | |
|
||||
| invidious-db | docker.io/library/postgres:14 | |
|
||||
| it-tools | ghcr.io/corentinth/it-tools:latest | Useful tools for developers and people working in IT |
|
||||
| jellyfin | jellyfin/jellyfin | Movie/TV Streaming |
|
||||
| jitsi-etherpad | etherpad/etherpad:1.9.7 | |
|
||||
| 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 | |
|
||||
| joplin | joplin/server:latest | Open-source note taking & to-do |
|
||||
| karakeep | ghcr.io/karakeep-app/karakeep:release | Self-hosted bookmark-everything app with a touch of AI for data hoarders |
|
||||
| languagetool | elestio/languagetool:latest | |
|
||||
| libretranslate | libretranslate/libretranslate | Open-source machine translation API |
|
||||
| lidarr | lscr.io/linuxserver/lidarr:latest | Music Automation |
|
||||
| lidify | thewicklowwolf/lidify:latest | Music Discovery a la Last.fm, Spotify, Pandora, etc. |
|
||||
| linkstack | linkstackorg/linkstack:latest | Personal profile |
|
||||
| lldap | lldap/lldap:stable | LDAP made easy |
|
||||
| loggifly | ghcr.io/clemcer/loggifly:latest | |
|
||||
| maloja | krateng/maloja:latest | Simple self-hosted music scrobble database to create personal listening statistics |
|
||||
| manyfold | lscr.io/linuxserver/manyfold:0.133.1 | Self-hosted digital asset manager for 3D print files |
|
||||
| manyfold-pg-db | postgres:18-alpine | |
|
||||
| manyfold-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| mariadb | linuxserver/mariadb | |
|
||||
| mastodon | lscr.io/linuxserver/mastodon:latest | Open-source social network |
|
||||
| mastodon-pg-db | postgres:17-alpine | |
|
||||
| mastodon-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| maxun-backend | getmaxun/maxun-backend:latest | |
|
||||
| maxun-frontend | getmaxun/maxun-frontend:latest | No-code web data extraction platform |
|
||||
| maxun-pg-db | postgres:17-alpine | |
|
||||
| maxun-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| meme-search-pro | ghcr.io/neonwatty/meme_search_pro:latest | Meme search engine built with Python and Ruby |
|
||||
| meme-search-pro-img2txt-gen | ghcr.io/neonwatty/image_to_text_generator:latest | |
|
||||
| meme-search-db | pgvector/pgvector:pg17 | |
|
||||
| mini-qr | ghcr.io/lyqht/mini-qr:latest | Scan and generate customized QR codes easily |
|
||||
| minio | minio/minio:RELEASE.2025-04-22T22-12-26Z | S3-compatible storage backend |
|
||||
| mixpost | inovector/mixpost:latest | Multi-channel social media manager |
|
||||
| mixpost-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| mgob | stefanprodan/mgob | Headless Automated MongoDB Backups |
|
||||
| mongodb | mongo:7 | |
|
||||
| mongodb-exporter | percona/mongodb_exporter:2.37.0 | |
|
||||
| multi-scrobbler | foxxmd/multi-scrobbler | JS App for scrobbling/recording play history from/to multiple sources |
|
||||
| n8n | docker.n8n.io/n8nio/n8n | Extendable workflow automation tool to easily automate tasks |
|
||||
| navidrome | deluan/navidrome:latest | Music Streaming |
|
||||
| netalertx | jokobsk/netalertx:latest | Network Monitoring |
|
||||
| nextcloud | nextcloud/all-in-one:latest | Private Cloud |
|
||||
| nocodb | nocodb/nocodb:latest | Turn any SQL-based database into a smart spreadsheet |
|
||||
| nocodb-pg-db | postgres:16-alpine | |
|
||||
| nocodb-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| ombi | lscr.io/linuxserver/ombi:latest | Media Requests |
|
||||
| omnitools | iib0011/omni-tools:latest | Tools for common tasks |
|
||||
| omnipoly | kweg/omnipoly:latest | Open-source language translation with LanguageTool, LibreTranslate, & Ollama |
|
||||
| open-webui | ghcr.io/open-webui/open-webui:main | User-friendly and extensible AI interface |
|
||||
| open-webui-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| paperless-ngx | ghcr.io/paperless-ngx/paperless-ngx:latest | Document indexer & archiver with OCR |
|
||||
| paperless-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| pgbackweb | eduardolat/pgbackweb:latest | Backups for PostgreSQL |
|
||||
| pgbackweb-db | postgres:17-alpine | |
|
||||
| planka | ghcr.io/plankanban/planka:2.0.0-rc.3 | Kanban board |
|
||||
| planka-pg-db | postgres:16-alpine | |
|
||||
| plant-it | msdeluise/plant-it-server:latest | 🪴 Self-hosted, open source gardening companion app |
|
||||
| plant-it-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| plantuml-server | plantuml/plantuml-server:jetty | Textual diagram generator for UML & other visualizations. |
|
||||
| portainer | portainer/portainer-ce:alpine | Service delivery platform for containerized applications |
|
||||
| portchecker-web | ghcr.io/dsgnr/portcheckerio-web:latest | Service delivery platform for containerized applications |
|
||||
| portchecker-api | ghcr.io/dsgnr/portcheckerio-api:latest | |
|
||||
| postal-smtp | ghcr.io/postalserver/postal:latest | |
|
||||
| postal-web | ghcr.io/postalserver/postal:latest | OSS Mail delivery platform |
|
||||
| postal-worker | ghcr.io/postalserver/postal:latest | |
|
||||
| protonmail-bridge | shenxn/protonmail-bridge | |
|
||||
| prowlarr | lscr.io/linuxserver/prowlarr:latest | Index aggregator |
|
||||
| qbit-manage | ghcr.io/stuffanthings/qbit_manage:latest | |
|
||||
| qbittorrentvpn | ghcr.io/binhex/arch-qbittorrentvpn:latest | Fast and stable torrent client |
|
||||
| radarec | thewicklowwolf/radarec:latest | Movie discovery based on library/tastes |
|
||||
| radarr | lscr.io/linuxserver/radarr:latest | Movie Automation |
|
||||
| reactive-resume | amruthpillai/reactive-resume:latest | Open-source resume builder |
|
||||
| reactive-resume-pg | postgres:16-alpine | |
|
||||
| readarr | lscr.io/linuxserver/readarr:develop | eBook/Audiobook Automation |
|
||||
| redlib | quay.io/redlib/redlib:latest | 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 | Beautiful, powerful, self-hosted ROM manager |
|
||||
| romm-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| sabnzbdvpn | ghcr.io/binhex/arch-sabnzbdvpn:latest | NZB Downloader over VPN |
|
||||
| sablier | sablierapp/sablier:latest | |
|
||||
| scraparr | ghcr.io/thecfu/scraparr:3 | |
|
||||
| scrutiny | ghcr.io/analogj/scrutiny:master-omnibus | WebUI for smartd S.M.A.R.T monitoring |
|
||||
| searxng | searxng/searxng:latest | Anonymized Meta-Search Engine |
|
||||
| searxng-valkey | docker.io/valkey/valkey:9-alpine | |
|
||||
| semaphore-ui | semaphoreui/semaphore:v2.18.4 | Modern UI for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools |
|
||||
| signoz-app | signoz/signoz:v0.113.0 | 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 | |
|
||||
| signoz-otel-collector | signoz/signoz-otel-collector:v0.144.4 | |
|
||||
| signoz-schema-migrator-async | signoz/signoz-schema-migrator:v0.144.4 | |
|
||||
| signoz-schema-migrator-sync | signoz/signoz-schema-migrator:v0.144.4 | |
|
||||
| signoz-zookeeper-1 | signoz/zookeeper:3.7.1 | |
|
||||
| sonarqube | mc1arke/sonarqube-with-community-branch-plugin:lts | Code/DevOps quality/security |
|
||||
| sonarqube-pg-db | postgres:17-alpine | |
|
||||
| sonarr | lscr.io/linuxserver/sonarr:latest | TV Show Automation |
|
||||
| sonashow | thewicklowwolf/sonashow:latest | TV show discovery based on library/tastes |
|
||||
| soularr | mrusse08/soularr:latest | |
|
||||
| soularr-dashboard | ghcr.io/mrusse/soularr:main | Dashboard for monitoring Soularr |
|
||||
| soulseek | slskd/slskd | Modern client-server application for the Soulseek file-sharing network. |
|
||||
| speedtest-tracker | lscr.io/linuxserver/speedtest-tracker:latest | Self-hosted internet performance tracking |
|
||||
| stirling-pdf | docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest | PDF Operations |
|
||||
| swag | lscr.io/linuxserver/swag:latest | SWAG Dashboard for proxies |
|
||||
| tandoor | vabene1111/recipes | Recipes, cookbooks, meal-planning, & grocery lists |
|
||||
| tandoor-pg | postgres:16-alpine | |
|
||||
| tdarr | ghcr.io/haveagitgat/tdarr:2.72.01 | Distributed transcode automation |
|
||||
| unmanic | josh5/unmanic:latest | Library Optimizer |
|
||||
| uptimekuma | louislam/uptime-kuma:latest | HTTP Endpoint Monitoring |
|
||||
| vault | hashicorp/vault:2.0.0-bugfix | HashiCorp Vault for secrets, key/value stores, etc. |
|
||||
| vault-agent | hashicorp/vault:2.0.0-bugfix | |
|
||||
| wallos | bellamy/wallos:latest | Subscription Tracking |
|
||||
| web-check | lissy93/web-check | Site scanner for attack vectors, architecture, security configs, and more |
|
||||
| whodb | clidey/whodb | Lightweight next-gen database explorer |
|
||||
| wizarr | ghcr.io/wizarrrr/wizarr | User invitation management system for Jellyfin, Plex, and Emby |
|
||||
| youtubedl | nbr23/youtube-dl-server:latest | 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"
|
||||
}
|
||||
]
|
||||
```
|
||||
+4390
-4079
File diff suppressed because it is too large
Load Diff
+842
@@ -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=''
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user