Compare commits

..

1 Commits

Author SHA1 Message Date
Trez.One c2c633f517 DMH config. 2025-05-21 13:17:55 -04:00
6 changed files with 137 additions and 239 deletions
@@ -56,16 +56,14 @@ jobs:
gotify_app_token: '${{ secrets.RINOA_RUNNER_GOTIFY_TOKEN }}'
notification_title: 'GITEA: PR Check'
notification_message: 'PR Created 🎟️'
docker-compose-dry-run:
name: Docker Compose Dry Run
docker-compose-ansible-lints:
name: Docker Compose & Ansible Lints
needs: [check-and-create-pr]
runs-on: ubuntu-latest
env:
VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }}
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
VAULT_NAMESPACE: ""
outputs:
svc_deploy_list: ${{ steps.modded_svcs.outputs.rinoa_svcs }}
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -124,16 +122,13 @@ jobs:
echo ${mod_svcs}
vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env
echo "rinoa_svcs=${mod_svcs}" >> "$GITHUB_OUTPUT"
- name: Testing service list output
run: |
echo ${{ steps.modded_svcs.outputs.rinoa_svcs }}
- name: Docker Compose Dry Run
timeout-minutes: 360
continue-on-error: true
uses: keatonLiu/docker-compose-remote-action@v1.2
with:
docker_compose_file: docker-compose.yml
docker_args: -d --remove-orphans --pull missing ${{ steps.modded_svcs.outputs.rinoa_svcs }}
docker_args: -d --remove-orphans --pull missing --no-recreate ${{ steps.modded_svcs.rinoa_svcs.output }}
ssh_user: gitea-deploy
ssh_host: 192.168.1.254
ssh_host_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }}
@@ -287,8 +282,8 @@ jobs:
gotify_app_token: '${{ secrets.RINOA_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
ansible-config-docker-compose-deploy:
name: Ansible Configs & Docker Compose Deployment
runs-on: ubuntu-latest
needs: [pr-merge]
env:
@@ -315,7 +310,7 @@ jobs:
- name: Login to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: https://git.trez.wtf
registry: git.trez.wtf
username: gitea-sonarqube-bot
password: ${{ secrets.BOT_GITEA_TOKEN }}
- name: Gotify Notification
@@ -334,7 +329,7 @@ jobs:
uses: keatonLiu/docker-compose-remote-action@v1.2
with:
docker_compose_file: docker-compose.yml
docker_args: -d --remove-orphans --pull missing ${{ docker-compose-dry-run.outputs.svc_deploy_list }}
docker_args: -d --remove-orphans --pull missing --no-recreate
ssh_user: gitea-deploy
ssh_host: 192.168.1.254
ssh_host_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }}
+3 -1
View File
@@ -14,11 +14,14 @@
| bazarr | lscr.io/linuxserver/bazarr:latest |
| beszel | henrygd/beszel:latest |
| beszel-agent | henrygd/beszel-agent:latest |
| bitmagnet | ghcr.io/bitmagnet-io/bitmagnet:latest |
| bitmagnet-pg-db | postgres:17-alpine |
| bitwarden | vaultwarden/server:latest |
| bluesky-pds | code.modernleft.org/gravityfargo/bluesky-pds:v0.4.98 |
| browserless | ghcr.io/browserless/chromium:latest |
| bytestash | ghcr.io/jordan-dalby/bytestash:latest |
| castopod | castopod/castopod:latest |
| cloudflared | cloudflare/cloudflared:latest |
| cloudflareddns | ghcr.io/hotio/cloudflareddns:latest |
| convertx | ghcr.io/c4illin/convertx |
| cronicle | elestio/cronicle:latest |
@@ -119,7 +122,6 @@
| redis | redis:alpine |
| redlib | quay.io/redlib/redlib:latest |
| rocketchat | registry.rocket.chat/rocketchat/rocket.chat:latest |
| romm | rommapp/romm:latest |
| sabnzbdvpn | ghcr.io/binhex/arch-sabnzbdvpn:latest |
| scraperr | jpyles0524/scraperr:latest |
| scraperr-api | jpyles0524/scraperr_api:latest |
@@ -0,0 +1,33 @@
{% set vault_addr = 'https://vault.trez.wtf' %}
{% set secrets_path = 'rinoa-docker/env' %}
components:
- vault
- dmh
vault:
# key used to encrypt vault data at-rest - `age-keygen` to generate new private key
key:
file: /data/vault.json # where to save vault data
state:
file: /data/state.json # where to save dmh data
# address to vault
remote_vault:
client_uuid: random-uuid-dont-copy # generate new, random, UUID
url: http://127.0.0.1:8080
# how to treat `Action.ProcessAfter`, `Action.MinInterval`, `Secret.ProcessAfter` - supported values 'minute', 'hour'
action:
process_unit: hour
# configuration for all execute plugins
execute:
plugin:
bulksms:
routing_group: premium
token:
id: "auth-token-id"
secret: "auth-token-secret"
mail:
username: "username"
password: "password"
server: smtp.server.com
from: dmh@some-domain.com
tls_policy: tls_mandatory
@@ -53,4 +53,4 @@ layout:
columns: 2
Media Library:
style: row
columns: 3
columns: 4
-48
View File
@@ -1,48 +0,0 @@
# This is a generic example of a configuration file
# Rename this file to `config.yml`, copy it to a `config` folder, and mount that folder as per the docker-compose.example.yml
# Only uncomment the lines you want to use/modify, or add new ones where needed
exclude:
# Exclude platforms to be scanned
platforms: [] # ['my_excluded_platform_1', 'my_excluded_platform_2']
# Exclude roms or parts of roms to be scanned
roms:
# Single file games section.
# Will not apply to files that are in sub-folders (multi-disc roms, games with updates, DLC, patches, etc.)
single_file:
# Exclude all files with certain extensions to be scanned
extensions: [] # ['xml', 'txt']
# Exclude matched file names to be scanned.
# Supports unix filename pattern matching
# Can also exclude files by extension
names: [] # ['info.txt', '._*', '*.nfo']
# Multi files games section
# Will apply to files that are in sub-folders (multi-disc roms, games with updates, DLC, patches, etc.)
multi_file:
# Exclude matched 'folder' names to be scanned (RomM identifies folders as multi file games)
names: [] # ['my_multi_file_game', 'DLC']
# Exclude files within sub-folders.
parts:
# Exclude matched file names to be scanned from multi file roms
# Keep in mind that RomM doesn't scan folders inside multi files games,
# so there is no need to exclude folders from inside of multi files games.
names: [] # ['data.xml', '._*'] # Supports unix filename pattern matching
# Exclude all files with certain extensions to be scanned from multi file roms
extensions: [] # ['xml', 'txt']
system:
# Asociate different platform names to your current file system platform names
# [your custom platform folder name]: [RomM platform name]
# In this example if you have a 'gc' folder, RomM will treat it like the 'ngc' folder and if you have a 'psx' folder, RomM will treat it like the 'ps' folder
platforms: {} # { gc: 'ngc', psx: 'ps' }
# Asociate one platform to it's main version
versions: {} # { naomi: 'arcade' }
# The folder name where your roms are located
filesystem: {} # { roms_folder: 'roms' } For example if your folder structure is /home/user/library/roms_folder
+93 -177
View File
@@ -423,6 +423,80 @@ services:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /rinoa-storage:/extra-filesystems/rinoa-storage:ro
- /dev/nvme0n1:/extra-filesystems/nvme0n1:ro
bitmagnet:
command:
- worker
- run
- --keys=http_server
- --keys=queue_server
- --keys=dht_crawler
container_name: bitmagnet
depends_on:
bitmagnet-pg-db:
condition: service_healthy
required: true
gluetun:
condition: service_started
required: true
restart: true
environment:
LOG_FILE_ROTATION_ENABLED: true
POSTGRES_HOST: bitmagnet-pg-db
POSTGRES_PASSWORD: ${BITMAGNET_POSTGRESQL_PASSWORD}
POSTGRES_USER: bitmagnet
image: ghcr.io/bitmagnet-io/bitmagnet:latest
labels:
homepage.group: Downloaders
homepage.name: Bitmagnet
homepage.href: https://btmag.${MY_TLD}
homepage.icon: sh-bitmagnet.png
homepage.description: Torrent indexer, DHT crawler, search engine, & content classifier
homepage.widget.type: gluetun
homepage.widget.url: http://gluetun:8000
swag: enable
swag_proto: http
swag_address: gluetun
swag_auth: authelia
swag_auth_bypass: /v1
swag_port: 3333
swag_url: btmag.${MY_TLD}
swag_server_custom_directive: |
access_log /config/log/$$host_access.log ;
error_log /config/log/$$host_error.log ;
network_mode: service:gluetun
restart: always
volumes:
- source: ${DOCKER_VOLUME_CONFIG}/bitmagnet
target: /root/.local/share/bitmagnet
type: bind
bind:
create_host_path: true
bitmagnet-pg-db:
container_name: bitmagnet-pg-db
environment:
POSTGRES_DB: bitmagnet
POSTGRES_PASSWORD: ${BITMAGNET_POSTGRESQL_PASSWORD}
POSTGRES_USER: bitmagnet
expose:
- 5432
healthcheck:
interval: 10s
start_period: 20s
test:
- CMD-SHELL
- pg_isready
image: postgres:17-alpine
networks:
bitmagnet:
ipv4_address: 192.168.55.8
default: null
restart: unless-stopped
shm_size: 1g
volumes:
- source: bitmagnet-pg-db
target: /var/lib/postgresql/data
type: volume
volume: {}
bitwarden:
container_name: bitwarden
environment:
@@ -620,6 +694,15 @@ services:
restart: unless-stopped
volumes:
- castopod-media:/var/www/castopod/public/media
cloudflared:
command: ['tunnel', '--no-autoupdate', 'run', '--token', '${CLOUDFLARED_TUNNEL_TOKEN}']
container_name: cloudflared
environment:
CLOUDFLARED_TUNNEL_KEY: ${CLOUDFLARED_TUNNEL_TOKEN}
image: 'cloudflare/cloudflared:latest'
restart: unless-stopped
volumes:
- ${DOCKER_VOLUME_CONFIG}/cloudflared:/etc/cloudflared
cloudflareddns:
container_name: cloudflareddns
environment:
@@ -4303,75 +4386,6 @@ services:
swag.uptime-kuma.monitor.url: https://chat.${MY_TLD}
swag.uptime-kuma.monitor.interval: 300
restart: always
romm:
container_name: romm
depends_on:
mariadb:
condition: service_started
restart: true
image: rommapp/romm:latest
environment:
ROMM_DB_DRIVER: mariadb # mariadb | sqlite (default: sqlite)
ROMM_HOST: https://localhost:3000 # [Optional] your host ip or domain name (including http(s)://, subdomain and port if needed). Being used only for webRcade feed for now.
# [Optional] Only required if using MariaDB as the database
DB_HOST: mariadb
DB_PORT: 3306
DB_USER: romm
DB_NAME: romm # Should match the MYSQL_DATABASE value in the mariadb container
DB_PASSWD: ${ROMM_MARIADB_PASSWORD}
# [Optional WIP] Use SteamGridDB as a source for covers
# STEAMGRIDDB_API_KEY: <SteamGridDB api key>
# [Optional] Will enable user management and require authentication to access the interface (disabled by default)
ROMM_AUTH_ENABLED: true # default: false
ROMM_AUTH_SECRET_KEY: ${ROMM_AUTH_SECRET_KEY} # Generate a key with `openssl rand -hex 32`
ROMM_AUTH_USERNAME: admin # default: admin
ROMM_AUTH_PASSWORD: ${ROMM_AUTH_PASSWORD} # default: admin
# [Optional] Only required if authentication is enabled
ENABLE_EXPERIMENTAL_REDIS: false # default: false
# REDIS_HOST: redis # default: localhost
# REDIS_PORT: 6379 # default: 6379
# REDIS_PASSWORD: # [Optional] Support for secured redis
# [Optional] Will enable asynchronous tasks (all disabled by default)
# Important: Do NOT wrap the cron expression in quotes
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE: true # Runs a quick scan on the library when a file is added or removed
RESCAN_ON_FILESYSTEM_CHANGE_DELAY: 5 # Delay in seconds before running the quick scan (default: 5)
ENABLE_SCHEDULED_RESCAN: true # Runs a quick scan on the library at a given time
SCHEDULED_RESCAN_CRON: 0 3 * * * # Cron expression for the scheduled scan (default: 0 3 * * * At 3:00 AM every day)
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB: true # Updates the Switch TitleDB database at a given time
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON: 0 4 * * * # Cron expression for the scheduled update (default: 0 4 * * * At 4:00 AM every day)
ENABLE_SCHEDULED_UPDATE_MAME_XML: true # Updates the MAME XML database at a given time
SCHEDULED_UPDATE_MAME_XML_CRON: 0 5 * * * # Cron expression for the scheduled update (default: 0 5 * * * At 5:00 AM every day)
IGDB_CLIENT_ID: ${ROMM_IGDB_CLIENT_ID} # Generate an ID and SECRET in IGDB
IGDB_CLIENT_SECRET: ${ROMM_IGDB_CLIENT_SECRET} # https://docs.romm.app/latest/Getting-Started/Generate-API-Keys/#igdb
MOBYGAMES_API_KEY: # https://docs.romm.app/latest/Getting-Started/Generate-API-Keys/#mobygames
STEAMGRIDDB_API_KEY: ${ROMM_STEAMGRIDDB_API_KEY} # https://docs.romm.app/latest/Getting-Started/Generate-API-Keys/#steamgriddb
SCREENSCRAPER_USER: ${ROMM_SCREENSCRAPER_USERNAME} # Use your ScreenScraper username and password
SCREENSCRAPER_PASSWORD: ${ROMM_SCREENSCRAPER_PASSWORD} # https://docs.romm.app/latest/Getting-Started/Generate-API-Keys/#screenscraper
labels:
homepage.group: Media Library
homepage.name: RomM
homepage.href: https://romm.${MY_TLD}
homepage.icon: romm.svg
homepage.description: Beautiful, powerful, self-hosted ROM manager
homepage.widget.type: romm
homepage.widget.url: http://romm:8080
swag: enable
swag_proto: http
swag_url: romm.${MY_TLD}
swag_server_custom_directive: |
access_log /config/log/$$host_access.log ;
error_log /config/log/$$host_error.log ;
swag.uptime-kuma.enabled: true
swag.uptime-kuma.monitor.url: https://romm.${MY_TLD}
swag.uptime-kuma.monitor.interval: 300
ports:
- 30229:8080
restart: unless-stopped
volumes:
- romm_resources:/romm/resources # Resources fetched from IGDB (covers, screenshots, etc.)
- ${DOCKER_VOLUME_STORAGE}/roms:/romm/library # Your game library. Check https://github.com/rommapp/romm?tab=readme-ov-file#folder-structure for more details.
- ${DOCKER_VOLUME_STORAGE}/roms/assets:/romm/assets # Uploaded saves, states, etc.
- ${DOCKER_VOLUME_CONFIG}/romm:/romm/config # Path where config.yml is stored
sabnzbdvpn:
cap_add:
- NET_ADMIN
@@ -4441,33 +4455,6 @@ services:
source: /rinoa-storage
target: /storage
type: bind
sablier:
container_name: sablier
depends_on:
swag:
condition: service_started
required: true
environment:
PROVIDER_NAME: docker
SERVER_PORT: 10000
SERVER_BASE_PATH: /
STORAGE_FILE: /opt/sablier/state
SESSIONS_DEFAULT_DURATION: 5m
SESSIONS_EXPIRATION_INTERVAL: 20s
LOGGING_LEVEL: trace
STRATEGY_DYNAMIC_CUSTOM_THEMES_PATH: /opt/sablier/custom_themes
STRATEGY_DYNAMIC_SHOW_DETAILS_BY_DEFAULT: false
STRATEGY_DYNAMIC_DEFAULT_THEME: hacker-terminal
STRATEGY_DYNAMIC_DEFAULT_REFRESH_FREQUENCY: 5s
STRATEGY_BLOCKING_DEFAULT_TIMEOUT: 1m
image: sablierapp/sablier:latest
ports:
- 19311:10000
restart: unless-stopped
volumes:
- ${DOCKER_VOLUME_CONFIG}/sablier/state:/opt/sablier/state
- ${DOCKER_VOLUME_CONFIG}/sablier/custom_themes:/opt/sablier/custom_themes
- /var/run/docker.sock:/var/run/docker.sock
scraperr:
command:
- npm
@@ -4865,7 +4852,6 @@ services:
homepage.icon: /icons/stable-diffusion.png
swag: enable
swag_port: 7860
swag_auth: authelia
swag_proto: http
swag_url: sd.${MY_TLD}
swag_server_custom_directive: |
@@ -5355,82 +5341,9 @@ services:
container_name: whodb
image: clidey/whodb
environment:
WHODB_POSTGRES_1: '{
"host": "authelia-pg",
"user": "authelia",
"password": "${AUTHELIA_STORAGE_POSTGRES_PASSWORD}",
"database": "authelia"
}'
WHODB_POSTGRES_2: '{
"host": "dawarich-pg-db",
"user": "dawarich",
"password": "${DAWARICH_PG_PASSWORD}",
"database": "authelia"
}'
WHODB_POSTGRES_3: '{
"host": "gitea-db",
"user": "gitea",
"password": "${GITEA_PG_DB_PASSWORD}",
"database": "gitea"
}'
WHODB_POSTGRES_4: '{
"host": "immich-pg-db",
"user": "immich",
"password": "${IMMICH_DB_PASSWORD}",
"database": "immich"
}'
WHODB_POSTGRES_5: '{
"host": "invidious-db",
"user": "kemal",
"password": "${INVID_PG_DB_PASSWORD}",
"database": "invidious"
}'
WHODB_POSTGRES_6: '{
"host": "librechat-vectordb",
"user": "librechat",
"password": "${LIBRECHAT_PG_DB_PASSWD}",
"database": "librechat"
}'
WHODB_POSTGRES_7: '{
"host": "mastodon-pg-db",
"user": "mastodon",
"password": "${MASTODON_PG_DB_PASSWORD}",
"database": "mastodon"
}'
WHODB_POSTGRES_8: '{
"host": "reactive-resume-pg",
"user": "reactiveresume",
"password": "${REACTIVE_RESUME_PGSQL_PASSWORD}",
"database": "reactiveresume"
}'
WHODB_POSTGRES_9: '{
"host": "sonarqube-pg-db",
"user": "sonar",
"password": "${SONARQUBE_POSTGRES_PASSWORD}",
"database": "sonar"
}'
WHODB_POSTGRES_10: '{
"host": "tandoor-pg",
"user": "tandoor",
"password": "${TANDOOR_POSTGRES_PASSWORD}",
"database": "tandoor"
}'
WHODB_POSTGRES_11: '{
"host": "zammad-postgresql",
"user": "zammad",
"password": "${ZAMMAD_POSTGRES_PASS}",
"database": "zammad_production"
}'
WHODB_MARIADB_1: '{
"host": "mariadb",
"user": "root",
"password": "${MARIADB_ENVIRONMENT_MYSQL_ROOT_PASSWORD}"
}'
WHODB_MONGODB_1: '{
"host": "mongodb:27017/admin?replicaSet=rinoa",
"user": "root",
"password": "${MONGO_INITDB_ROOT_PASSWORD}"
}'
WHODB_POSTGRES_1: '[{"host":"authelia-pg","user":"authelia","password":"${AUTHELIA_STORAGE_POSTGRES_PASSWORD}","database":"authelia"},{"host":"bitmagnet-pg-db","user":"bitmagnet","password":"${BITMAGNET_POSTGRESQL_PASSWORD}","database":"bitmagnet"},{"host":"dawarich-pg-db","user":"dawarich","password":"${DAWARICH_PG_PASSWORD}","database":"dawarich"},{"host":"gitea-db","user":"gitea","password":"${GITEA_PG_DB_PASSWORD}","database":"gitea"},{"host":"immich-pg-db","user":"immich","password":"${IMMICH_DB_PASSWORD}","database":"immich"},{"host":"invidious-db","user":"kemal","password":"${INVID_PG_DB_PASSWORD}","database":"invidious"},{"host":"librechat-vectordb","user":"librechat","password":"${LIBRECHAT_PG_DB_PASSWD}","database":"librechat"},{"host":"mastodon-pg-db","user":"mastodon","password":"${MASTODON_PG_DB_PASSWORD}","database":"mastodon"},{"host":"reactive-resume-pg","user":"reactiveresume","password":"${REACTIVE_RESUME_PGSQL_PASSWORD}","database":"reactiveresume"},{"host":"sonarqube-pg-db","user":"sonar","password":"${SONARQUBE_POSTGRES_PASSWORD}","database":"sonar"},{"host":"tandoor-pg","user":"tandoor","password":"${TANDOOR_POSTGRES_PASSWORD}","database":"tandoor"},{"host":"zammad-postgresql","user":"zammad","password":"${ZAMMAD_POSTGRES_PASS}","database":"zammad_production"}]'
WHODB_MARIADB_1: '[{"host":"mariadb","user":"root","password":"${MARIADB_ENVIRONMENT_MYSQL_ROOT_PASSWORD}","database":"mysql"}]'
WHODB_MONGODB_1: '{"host":"mongodb:27017/admin?replicaSet=rinoa","user":"root","password":"${MONGO_INITDB_ROOT_PASSWORD}"}'
WHODB_OLLAMA_HOST: ollama
WHODB_OLLAMA_PORT: 11434
WHODB_ANTHROPIC_API_KEY: ${LIBRECHAT_ANTHROPIC_API_KEY}
@@ -5442,9 +5355,8 @@ services:
homepage.name: WhoDB
homepage.href: https://dbs.${MY_TLD}
homepage.icon: whodb.png
homepage.description: Lightweight next-gen database explorer
homepage.description: Database-as-Code CI/CD
swag: enable
swag_auth: authelia
swag_port: 8080
swag_proto: http
swag_url: dbs.${MY_TLD}
@@ -5595,6 +5507,10 @@ services:
volumes:
authelia-pg-db:
name: authelia-pg-db
bitmagnet-pg-db:
name: bitmagnet-pg-db
bunkerweb-storage:
name: bunkerweb-storage
castopod-media:
name: castopod-media
crowdsec-config:
@@ -5609,6 +5525,8 @@ volumes:
name: dawarich_public
dawarich_watched:
name: dawarich_watched
docker-volume-bkup-data:
name: docker-volume-bkup-data
fastenhealth-cache:
name: fastenhealth-cache
fastenhealth-db:
@@ -5695,8 +5613,6 @@ volumes:
name: portnote-db-data
reactive-resume-pg:
name: reactive-resume-pg
romm_resources:
name: romm_resources
semaphore_config:
name: semaphore_config
semaphore_data: