Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a5d27466fc | |||
| ae10b7a19e | |||
| 3f83290ab0 | |||
| 2c9cd867b0 | |||
| 8146d51f37 | |||
| 35b35cb840 | |||
| 5a5becea56 | |||
| 1641e877ad | |||
| 432e14e5dd | |||
| 617dea13b0 | |||
| 11353334b5 | |||
| 700f10fc92 | |||
| cc0dcfdd3c | |||
| 57b1293156 | |||
| 9e706a20a7 | |||
| 210375d17b | |||
| 02b2ab6116 | |||
| 439cc4136d | |||
| 809560f8ca | |||
| 15bdf96d76 | |||
| f08a4f9cb7 | |||
| 701a4fbde3 | |||
| 4fe9bbecb3 | |||
| a96beafe21 | |||
| 9500d5f39b | |||
| 1216beee88 | |||
| 94e793e1ad | |||
| 96e15c9786 | |||
| 9b18d386e8 | |||
| db2130a634 | |||
| 1e27a9817b | |||
| 3ac23e5d5c | |||
| 245670e37f | |||
| 03b0ca68db | |||
| 2108450ab0 | |||
| f8c39e324a | |||
| db2057c8ef | |||
| 049c21f538 | |||
| d8810273b7 | |||
| 06655add2b | |||
| e784655300 | |||
| fa42b8b7cc | |||
| 5ad020ab80 | |||
| c9858ef7ba | |||
| a94057d1ae | |||
| 42a0928b7f |
@@ -33,6 +33,7 @@ jobs:
|
||||
continue-on-error: true
|
||||
run: |
|
||||
tea login add --name gitea-rinoa --url "${{ secrets.RINOA_GITEA_URL }}" --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }}
|
||||
tea pr list --repo ${{ github.repository }} --state all
|
||||
pr_exists=$(tea pr list --repo ${{ github.repository }} --state open --fields index,title,head | egrep ${{ github.ref_name }} | tail -1 | wc -l)
|
||||
echo ${pr_exists}
|
||||
echo "exists=$pr_exists" >> $GITHUB_OUTPUT
|
||||
@@ -180,17 +181,32 @@ jobs:
|
||||
gotify_app_token: '${{ secrets.RINOA_RUNNER_GOTIFY_TOKEN }}'
|
||||
notification_title: 'GITEA: Cloudflare Setup @ Rinoa'
|
||||
notification_message: 'Cloudflare DNS setup completed successfully.'
|
||||
regenerate-readme:
|
||||
name: Update README
|
||||
regenerate-readme-modified-services:
|
||||
name: Update README & Generate List of Modified Services
|
||||
runs-on: ubuntu-latest
|
||||
needs: [cloudflare-dns-setup]
|
||||
outputs:
|
||||
pr-pushed: ${{ steps.commit-readme.outputs.pushed }}
|
||||
modified_services: ${{ steps.compare-services.outputs.modified_services }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install yq
|
||||
uses: dcarbone/install-yq-action@v1
|
||||
# - name: Fetch main branch for comparison
|
||||
# run: |
|
||||
# git fetch origin main:main
|
||||
# - name: Compare services using yq
|
||||
# continue-on-error: true
|
||||
# id: compare-services
|
||||
# run: |
|
||||
# current_services=$(yq '.services | to_entries' docker-compose.yml)
|
||||
# git show main:docker-compose.yml > main_compose.yml
|
||||
# main_services=$(yq '.services | to_entries' main_compose.yml)
|
||||
# modified_services_file=$(comm -13 <(echo "$main_services") <(echo "$current_services") > changes_compose.yml)
|
||||
# modified_services=${egrep '^ [a-z]' changes.yml | sed -e 's|^ ||g' -e 's|:||g' | sed ':a;N;$!ba;s/\n/ /g'}
|
||||
# echo "Modified services: $modified_services"
|
||||
# echo "modified_services=$modified_services" >> $GITHUB_OUTPUT
|
||||
- name: Generate service list
|
||||
run: |
|
||||
yq '.services | to_entries | map({"service": .key, "image": .value.image})' docker-compose.yml > services.yml
|
||||
@@ -286,25 +302,13 @@ jobs:
|
||||
- name: Generate .env file for deployment
|
||||
run: |
|
||||
vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env
|
||||
- name: Detect modified services
|
||||
id: detect-modified-services
|
||||
run: |
|
||||
git diff --name-only HEAD^ HEAD | grep docker-compose.yml > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
modified_services=$(git diff HEAD^ HEAD -- docker-compose.yml | grep -E '^\+[[:space:]]+[a-zA-Z0-9_-]+:' | sed -E 's/^\+[[:space:]]+([a-zA-Z0-9_-]+):.*/\1/')
|
||||
echo "Modified services: $modified_services"
|
||||
echo "modified_services=$modified_services" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "No changes in docker-compose.yml"
|
||||
echo "modified_services=" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
- name: Docker Compose Deployment
|
||||
if: ${{ steps.detect-modified-services.outputs.modified_services != '' }}
|
||||
if: ${{ steps.regenerate-readme-modified-services.outputs.modified_services != '' }}
|
||||
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 --parallel -1
|
||||
docker_args: -d --remove-orphans --pull missing --parallel -1 ${{ steps.regenerate-readme-modified-services.outputs.modified_services }}
|
||||
ssh_user: gitea-deploy
|
||||
ssh_host: 192.168.1.254
|
||||
ssh_host_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }}
|
||||
|
||||
+160
-591
@@ -335,6 +335,36 @@ services:
|
||||
source: /rinoa-storage
|
||||
target: /storage
|
||||
type: bind
|
||||
beszel:
|
||||
container_name: beszel
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
image: henrygd/beszel:latest
|
||||
ports:
|
||||
- 22220:8090
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/beszel:/beszel_data
|
||||
beszel-agent:
|
||||
container_name: beszel-agent
|
||||
depends_on:
|
||||
- beszel
|
||||
environment:
|
||||
DOCKER_HOST: tcp://dockerproxy:2375
|
||||
PORT: 45876
|
||||
# Do not remove quotes around the key
|
||||
KEY: 'UPDATE WITH YOUR PUBLIC KEY (copy from "Add system" dialog)'
|
||||
image: henrygd/beszel-agent:latest
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /dev/sda:/extra-filesystems/sda:ro
|
||||
- /dev/sdb:/extra-filesystems/sdb:ro
|
||||
- /dev/sdc:/extra-filesystems/sdc:ro
|
||||
- /dev/sdd:/extra-filesystems/sdd:ro
|
||||
- /dev/sde:/extra-filesystems/sde:ro
|
||||
- /dev/sdf:/extra-filesystems/sdf:ro
|
||||
- /dev/nvme0n1:/extra-filesystems/nvme0n1:ro
|
||||
bitmagnet:
|
||||
command:
|
||||
- worker
|
||||
@@ -400,7 +430,6 @@ services:
|
||||
networks:
|
||||
bitmagnet:
|
||||
ipv4_address: 192.168.55.8
|
||||
default: null
|
||||
restart: unless-stopped
|
||||
shm_size: 1g
|
||||
volumes:
|
||||
@@ -741,58 +770,6 @@ services:
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
dagu-scheduler:
|
||||
command: dagu scheduler
|
||||
container_name: dagu-scheduler
|
||||
image: ghcr.io/dagu-org/dagu:latest
|
||||
networks:
|
||||
default: null
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- source: dagu_config
|
||||
target: /home/dagu/.config/dagu
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: dagu_data
|
||||
target: /home/dagu/.local/share
|
||||
type: volume
|
||||
volume: {}
|
||||
dagu-server:
|
||||
container_name: dagu-server
|
||||
environment:
|
||||
DAGU_PORT: 8080
|
||||
image: ghcr.io/dagu-org/dagu:latest
|
||||
labels:
|
||||
homepage.group: System Administration
|
||||
homepage.name: Dagu
|
||||
homepage.href: https://cron.${MY_TLD}
|
||||
homepage.icon: sh-dagu.png
|
||||
homepage.description: Cron alternative using DAGs (Directed Acyclic Graphs)
|
||||
swag: enable
|
||||
swag_port: 8080
|
||||
swag_proto: http
|
||||
swag_url: cron.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://cron.${MY_TLD}
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "8108"
|
||||
target: 8080
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- source: dagu_config
|
||||
target: /home/dagu/.config/dagu
|
||||
type: volume
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: dagu_data
|
||||
target: /home/dagu/.local/share
|
||||
type: volume
|
||||
bind:
|
||||
create_host_path: true
|
||||
dbgate:
|
||||
container_name: dbgate
|
||||
environment:
|
||||
@@ -1846,11 +1823,11 @@ services:
|
||||
DB_USERNAME: hortusfox
|
||||
image: ghcr.io/danielbrendel/hortusfox-web:latest
|
||||
labels:
|
||||
homepage: enable
|
||||
homepage_proto: http
|
||||
homepage_url: plants.${MY_TLD}
|
||||
homepage.uptime-kuma.enabled: true
|
||||
homepage.uptime-kuma.monitor.url: https://plants.${MY_TLD}
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_url: plants.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://plants.${MY_TLD}
|
||||
homepage.group: Lifestyle
|
||||
homepage.name: HortusFox
|
||||
homepage.href: https://plants.${MY_TLD}
|
||||
@@ -1935,10 +1912,34 @@ services:
|
||||
DB_PORT: 5432
|
||||
DB_USERNAME: immich
|
||||
DB_PASSWORD: ${IMMICH_DB_PASSWORD}
|
||||
IMMICH_LOG_LEVEL: error
|
||||
IMMICH_TELEMETRY_INCLUDE: all
|
||||
healthcheck:
|
||||
disable: false
|
||||
image: ghcr.io/immich-app/immich-server:release
|
||||
labels:
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 2283
|
||||
swag_url: pics.${MY_TLD}
|
||||
swag_server_custom_directive: |
|
||||
location /share {
|
||||
proxy_pass http://immich-public-proxy:3000;
|
||||
}
|
||||
location /tools {
|
||||
proxy_pass http://immich-power-tools:3000;
|
||||
}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://pics.${MY_TLD}
|
||||
homepage.group: Media Library
|
||||
homepage.name: Immich
|
||||
homepage.href: https://pics.${MY_TLD}
|
||||
homepage.icon: immich.svg
|
||||
homepage.description: High performance self-hosted photo and video management solution
|
||||
homepage.widget.type: immich
|
||||
homepage.widget.url: http://immich-server:2283
|
||||
homepage.widget.key: ${IMMICH_POWER_TOOLS_KEY}
|
||||
homepage.widget.version: 2
|
||||
ports:
|
||||
- 2283:2283
|
||||
restart: always
|
||||
@@ -1992,7 +1993,7 @@ services:
|
||||
container_name: immich-public-proxy
|
||||
depends_on:
|
||||
immich-server:
|
||||
condition: service_started
|
||||
condition: service_healthy
|
||||
required: true
|
||||
environment:
|
||||
IMMICH_URL: http://immich-server:2283
|
||||
@@ -2004,27 +2005,37 @@ services:
|
||||
timeout: 5s
|
||||
image: alangrainger/immich-public-proxy:latest
|
||||
labels:
|
||||
homepage: enable
|
||||
homepage_proto: http
|
||||
homepage_port: 3000
|
||||
homepage_url: pics.${MY_TLD}
|
||||
homepage.uptime-kuma.enabled: true
|
||||
homepage.uptime-kuma.monitor.url: https://pics.${MY_TLD}
|
||||
homepage.group: Lifestyle
|
||||
homepage.name: Immich
|
||||
homepage.href: https://pics.${MY_TLD}
|
||||
homepage.icon: immich.svg
|
||||
homepage.description: High performance self-hosted photo and video management solution
|
||||
homepage.name: Immich Public Proxy
|
||||
homepage.href: https://pics.${MY_TLD}/share
|
||||
homepage.icon: sh-immich-public-proxy.svg
|
||||
homepage.description: Immich Proxy for public sharing
|
||||
homepage.widget.type: immich
|
||||
homepage.widget.url: http://immich-server:2283
|
||||
homepage.widget.key: ${IMMICH_POWER_TOOLS_KEY}
|
||||
homepage.widget.version: 2
|
||||
restart: always
|
||||
immich-power-tools:
|
||||
container_name: immich-power-tools
|
||||
environment:
|
||||
DB_DATABASE_NAME: immich
|
||||
DB_HOSTNAME: immich-pg-db
|
||||
DB_PORT: 5432
|
||||
DB_USERNAME: immich
|
||||
DB_PASSWORD: ${IMMICH_DB_PASSWORD}
|
||||
EXTERNAL_IMMICH_URL: https://pics.trez.wtf
|
||||
IMMICH_API_KEY: ${IMMICH_POWER_TOOLS_KEY}
|
||||
IMMICH_URL: http://immich-server:2283
|
||||
EXTERNAL_IMMICH_URL: https://pics.trez.wtf
|
||||
image: ghcr.io/varun-raj/immich-power-tools:latest
|
||||
labels:
|
||||
homepage.group: Lifestyle
|
||||
homepage.name: Immich Power Tools
|
||||
homepage.href: https://pics.${MY_TLD}/tools
|
||||
homepage.icon: sh-immich-power-tools.png
|
||||
homepage.description: Tools for Immich
|
||||
ports:
|
||||
- 54018:3000
|
||||
restart: unless-stopped
|
||||
influxdb2:
|
||||
container_name: influxdb2
|
||||
environment:
|
||||
@@ -2036,19 +2047,20 @@ services:
|
||||
DOCKER_INFLUXDB_INIT_BUCKET: rinoa
|
||||
image: influxdb:2-alpine
|
||||
labels:
|
||||
homepage: enable
|
||||
homepage_proto: http
|
||||
homepage_port: 8086
|
||||
homepage_url: influxdb.${MY_TLD}
|
||||
homepage.uptime-kuma.enabled: true
|
||||
homepage.uptime-kuma.monitor.url: https://influxdb.${MY_TLD}
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 8086
|
||||
swag_url: influxdb.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://influxdb.${MY_TLD}
|
||||
homepage.group: System Administration
|
||||
homepage.name: InfluxDBv2
|
||||
homepage.href: https://invid.${MY_TLD}
|
||||
homepage.href: https://influxdb.${MY_TLD}
|
||||
homepage.icon: influxdb.svg
|
||||
homepage.description: Scalable datastore for metrics, events, and real-time analytics
|
||||
ports:
|
||||
- 8086:8086
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- influxdb2-data:/var/lib/influxdb2
|
||||
- influxdb2-config:/etc/influxdb2
|
||||
@@ -2079,12 +2091,12 @@ services:
|
||||
timeout: 5s
|
||||
image: quay.io/invidious/invidious:latest
|
||||
labels:
|
||||
homepage: enable
|
||||
homepage_proto: http
|
||||
homepage_port: 3000
|
||||
homepage_url: invid.${MY_TLD}
|
||||
homepage.uptime-kuma.enabled: true
|
||||
homepage.uptime-kuma.monitor.url: https://invid.${MY_TLD}
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 3000
|
||||
swag_url: invid.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://invid.${MY_TLD}
|
||||
homepage.group: Social
|
||||
homepage.name: Invidious
|
||||
homepage.href: https://invid.${MY_TLD}
|
||||
@@ -2127,8 +2139,8 @@ services:
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
invoice_ninja:
|
||||
container_name: invoice_ninja
|
||||
invoice-ninja:
|
||||
container_name: invoice-ninja
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_started
|
||||
@@ -2164,7 +2176,7 @@ services:
|
||||
TRUSTED_PROXIES: 172.18.0.0/16
|
||||
expose:
|
||||
- 9000
|
||||
image: invoiceninja/invoiceninja:5
|
||||
image: invoiceninja/invoiceninja-debian:5
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
@@ -2174,32 +2186,17 @@ services:
|
||||
target: 8003
|
||||
restart: always
|
||||
volumes:
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/invoice-ninja/app/public
|
||||
target: /var/www/app/public
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/invoice-ninja/app/storage
|
||||
target: /var/www/app/storage
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/invoice-ninja/php/php.ini
|
||||
target: /usr/local/etc/php/php.ini
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/invoice-ninja/php/php-cli.ini
|
||||
target: /usr/local/etc/php/php-cli.ini
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
invoice_ninja_proxy:
|
||||
container_name: invoice_ninja_proxy
|
||||
- ${DOCKER_VOLUME_CONFIG}/invoice-ninja/invoice-ninja.env:/var/www/html/.env
|
||||
- invoice-ninja_cache:/var/www/html/bootstrap/cache
|
||||
- invoice-ninja_public:/var/www/html/public
|
||||
- invoice-ninja_storage:/var/www/html/storage
|
||||
invoice-ninja_proxy:
|
||||
container_name: invoice-ninja_proxy
|
||||
depends_on:
|
||||
invoice_ninja:
|
||||
invoice-ninja:
|
||||
condition: service_started
|
||||
required: true
|
||||
restart: true
|
||||
environment:
|
||||
APP_DEBUG: true
|
||||
APP_KEY: ${IN_APP_KEY}
|
||||
@@ -3079,66 +3076,6 @@ services:
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
lobe-chat:
|
||||
container_name: lobe-chat
|
||||
depends_on:
|
||||
lobe-chat-pg-db:
|
||||
condition: service_started
|
||||
required: true
|
||||
minio:
|
||||
condition: service_started
|
||||
required: true
|
||||
zitadel:
|
||||
condition: service_started
|
||||
required: true
|
||||
environment:
|
||||
APP_URL: https://ai.trez.wtf/
|
||||
KEY_VAULTS_SECRET: ${LOBECHAT_KEY_VAULT_SECRET}
|
||||
DATABASE_URL: postgresql://lobe:${LOBECHAT_PG_DB_PASSWD}@lobe-chat-pg-db:5432/lobe
|
||||
NEXTAUTH_URL: https://lobe.example.com/api/auth
|
||||
NEXT_AUTH_SECRET: ${LOBECHAT_NEXT_AUTH_SECRET}
|
||||
NEXT_AUTH_SSO_PROVIDERS: zitadel
|
||||
AUTH_ZITADEL_ID: ${LOBECHAT_ZITADEL_CLIENT_ID}
|
||||
AUTH_ZITADEL_SECRET: ${LOBECHAT_ZITADEL_CLIENT_SECRET}
|
||||
AUTH_ZITADEL_ISSUER: https://id.trez.wtf
|
||||
S3_ACCESS_KEY_ID: ${LOBECHAT_S3_ACCESS_KEY_ID}
|
||||
S3_SECRET_ACCESS_KEY: ${LOBECHAT_S3_SECRET_ACCESS_KEY}
|
||||
S3_ENDPOINT: http://minio:9000
|
||||
S3_BUCKET: lobechat
|
||||
S3_PUBLIC_DOMAIN: https://s3.trez.wtf
|
||||
S3_ENABLE_PATH_STYLE: 1+
|
||||
OPENAI_API_KEY: ${LOBECHAT_OPENAI_API_KEY}
|
||||
ANTHROPIC_API_KEY: ${LOBECHAT_ANTHROPIC_API_KEY}
|
||||
GITHUB_TOKEN: ${LOBECHAT_GITHUB_TOKEN}
|
||||
OLLAMA_MODEL_LIST: +llama3.1:8b,+nomic-embed-text:latest,+starcoder2:3b,+llama3.1:latest,+llama2:7B
|
||||
MISTRAL_API_KEY: ${LOBECHAT_MISTRAL_API_KEY}
|
||||
GROQ_API_KEY: ${LOBECHAT_GROQAI_API_KEY}
|
||||
image: lobehub/lobe-chat-database
|
||||
labels:
|
||||
homepage.group: Personal Services
|
||||
homepage.name: LobeChat
|
||||
homepage.href: https://ai.${MY_TLD}
|
||||
homepage.icon: lobe-chat.png
|
||||
homepage.description: An open-source, modern-design ChatGPT/LLMs UI/Framework
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 3210
|
||||
swag_url: ai.${MY_TLD}
|
||||
ports:
|
||||
- 3210:3210
|
||||
restart: unless-stopped
|
||||
lobe-chat-pg-db:
|
||||
container_name: lobe-chat-pg-db
|
||||
environment:
|
||||
POSTGRES_DB: lobe
|
||||
POSTGRES_USER: lobe
|
||||
POSTGRES_PASSWORD: ${LOBECHAT_PG_DB_PASSWD}
|
||||
expose:
|
||||
- 5432
|
||||
image: pgvector/pgvector:pg16
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/lobechat/db:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
maloja:
|
||||
container_name: maloja
|
||||
environment:
|
||||
@@ -3584,7 +3521,7 @@ services:
|
||||
- netbird-letsencrypt:/etc/letsencrypt:ro
|
||||
- ${DOCKER_VOLUME_CONFIG}/netbird/management.json:/etc/netbird/management.json
|
||||
ports:
|
||||
- 33073:443 #API port
|
||||
- 23833:443 #API port
|
||||
netbird-coturn:
|
||||
command:
|
||||
- -c /etc/turnserver.conf
|
||||
@@ -3597,69 +3534,6 @@ services:
|
||||
# - ${DOCKER_VOLUME_CONFIG}/netbird/privkey.pem:/etc/coturn/private/privkey.pem:ro
|
||||
# - ${DOCKER_VOLUME_CONFIG}/netbird/cert.pem:/etc/coturn/certs/cert.pem:ro
|
||||
network_mode: host
|
||||
netbox:
|
||||
container_name: netbox
|
||||
depends_on:
|
||||
netbox-db:
|
||||
condition: service_healthy
|
||||
required: true
|
||||
redis:
|
||||
condition: service_started
|
||||
required: true
|
||||
environment:
|
||||
PUID: ${PUID}
|
||||
PGID: ${PGID}
|
||||
TZ: ${TZ}
|
||||
SUPERUSER_EMAIL: charish.patel@pm.me
|
||||
SUPERUSER_PASSWORD: ${NETBOX_SUPERUSER_PASSWORD}
|
||||
ALLOWED_HOST: net.trez.wtf
|
||||
DB_NAME: netbox
|
||||
DB_USER: netbox
|
||||
DB_PASSWORD: ${NETBOX_PG_DB_PASSWORD}
|
||||
DB_HOST: netbox-db
|
||||
DB_PORT: 5432
|
||||
DEBUG: false
|
||||
DOCKER_MODS: linuxserver/mods:netbox-slurpit
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REMOTE_AUTH_ENABLED:
|
||||
image: lscr.io/linuxserver/netbox:latest
|
||||
labels:
|
||||
homepage.group: Infrastructure/App Performance Monitoring
|
||||
homepage.name: Netbox
|
||||
homepage.href: https://net.${MY_TLD}
|
||||
homepage.icon: netbox.svg
|
||||
homepage.description: Network modeling/documentation
|
||||
swag: enable
|
||||
swag_url: net.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://net.${MY_TLD}
|
||||
ports:
|
||||
- 8007:8000
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/netbox/:/config
|
||||
netbox-db:
|
||||
container_name: netbox-db
|
||||
environment:
|
||||
POSTGRES_USER: netbox
|
||||
POSTGRES_PASSWORD: ${NETBOX_PG_DB_PASSWORD}
|
||||
POSTGRES_DB: netbox
|
||||
expose:
|
||||
- 5432
|
||||
healthcheck:
|
||||
test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER
|
||||
start_period: 20s
|
||||
timeout: 30s
|
||||
interval: 10s
|
||||
retries: 5
|
||||
image: postgres:17-alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- source: netbox-pg-db
|
||||
target: /var/lib/postgresql/data
|
||||
type: volume
|
||||
volume: {}
|
||||
nextcloud:
|
||||
container_name: nextcloud-aio-mastercontainer
|
||||
environment:
|
||||
@@ -3692,19 +3566,11 @@ services:
|
||||
ollama:
|
||||
container_name: ollama
|
||||
image: ollama/ollama
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "11434"
|
||||
target: 11434
|
||||
restart: always
|
||||
- 11434:11434
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- source: ollama
|
||||
target: /root/.ollama
|
||||
type: volume
|
||||
volume: {}
|
||||
- ollama:/root/.ollama
|
||||
ombi:
|
||||
container_name: ombi
|
||||
environment:
|
||||
@@ -3749,6 +3615,36 @@ services:
|
||||
source: /rinoa-storage
|
||||
target: /storage
|
||||
type: bind
|
||||
open-webui:
|
||||
container_name: open-webui
|
||||
depends_on:
|
||||
ollama:
|
||||
condition: service_started
|
||||
required: true
|
||||
restart: true
|
||||
environment:
|
||||
ENABLE_SIGNUP: true
|
||||
ENABLE_LOGIN_FORM: true
|
||||
ENABLE_OLLAMA_API: true
|
||||
OLLAMA_BASE_URLS: http://ollama:11434
|
||||
image: ghcr.io/open-webui/open-webui:main
|
||||
labels:
|
||||
homepage.group: Personal Services
|
||||
homepage.name: Open-WebUI
|
||||
homepage.href: https://ai.${MY_TLD}
|
||||
homepage.icon: open-webui.png
|
||||
homepage.description: Local AI chat using Ollama-downloaded models
|
||||
swag: enable
|
||||
swag_port: 8080
|
||||
swag_proto: http
|
||||
swag_url: ai.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://ai.${MY_TLD}
|
||||
ports:
|
||||
- 10863:8080
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- open-webui:/app/backend/data
|
||||
paperless-ngx:
|
||||
container_name: paperless-ngx
|
||||
depends_on:
|
||||
@@ -3957,6 +3853,10 @@ services:
|
||||
homepage.href: https://portainer.${MY_TLD}
|
||||
homepage.icon: portainer.svg
|
||||
homepage.description: Service delivery platform for containerized applications
|
||||
homepage.widget.type: portainer
|
||||
homepage.widget.url: http://portainer:9000
|
||||
homepage.widget.env: 20
|
||||
homepage.widget.key: ${PORTAINER_HOMEPAGE_TOKEN}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- portainer-data:/data
|
||||
@@ -4481,6 +4381,10 @@ services:
|
||||
swag_proto: http
|
||||
swag_port: 3000
|
||||
swag_url: scrape.${MY_TLD}
|
||||
swag_server_custom_directive: |
|
||||
location /api {
|
||||
proxy_pass http://scraperr-api:8000;
|
||||
}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://scrape.${MY_TLD}
|
||||
networks:
|
||||
@@ -4500,11 +4404,6 @@ services:
|
||||
expose:
|
||||
- 8000
|
||||
image: jpyles0524/scraperr_api:latest
|
||||
labels:
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 3000
|
||||
swag_server_custom_directive: "location /api/ { rewrite ^/api(/.*)$ /$1 break ; proxy_pass http://scraperr:3000; }"
|
||||
networks:
|
||||
default: null
|
||||
restart: unless-stopped
|
||||
@@ -4601,83 +4500,6 @@ services:
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
slurpit-portal:
|
||||
container_name: slurpit-portal
|
||||
environment:
|
||||
TZ: ${TZ}
|
||||
PORTAL_BASE_URL: https://slurpit.trez.wtf
|
||||
PORTAL_WAREHOUSE_URL: http://slurpit-warehouse
|
||||
image: slurpit/portal:latest
|
||||
labels:
|
||||
homepage.group: Infrastructure/App Performance Monitoring
|
||||
homepage.name: Slurp'it
|
||||
homepage.href: https://slurpit.${MY_TLD}
|
||||
homepage.icon: /icons/slurpit.png
|
||||
homepage.description: Network discovery
|
||||
swag: enable
|
||||
swag_port: 80
|
||||
swag_url: slurpit.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://slurpit.${MY_TLD}
|
||||
ports:
|
||||
- 8110:80
|
||||
- 5443:443
|
||||
restart: always
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/nginx:/var/log/nginx/
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/mysql:/var/log/mysql/
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/php:/var/log/php/
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/certs:/etc/nginx/certs/
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/db/portal:/var/lib/mysql
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/backup/portal:/backup/files
|
||||
slurpit-scanner:
|
||||
container_name: slurpit-scanner
|
||||
depends_on:
|
||||
slurpit-warehouse:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
TZ: ${TZ}
|
||||
SCANNER_POOLSIZE: 4
|
||||
SCANNER_TIMEOUT: 10
|
||||
SCANNER_WAREHOUSE_URL: http://slurpit-warehouse
|
||||
image: slurpit/scanner:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/scanner:/logs
|
||||
slurpit-scraper:
|
||||
container_name: slurpit-scraper
|
||||
depends_on:
|
||||
slurpit-warehouse:
|
||||
condition: service_healthy
|
||||
image: slurpit/scraper:latest
|
||||
environment:
|
||||
TZ: ${TZ}
|
||||
SCRAPER_TIMEOUT: 20
|
||||
SCRAPER_POOLSIZE: 4
|
||||
SCRAPER_WAREHOUSE_URL: http://slurpit-warehouse
|
||||
restart: always
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/scraper:/logs
|
||||
slurpit-warehouse:
|
||||
container_name: slurpit-warehouse
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost/services"]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 360
|
||||
image: slurpit/warehouse:latest
|
||||
environment:
|
||||
TZ: ${TZ}
|
||||
WAREHOUSE_CALLBACK_SCANNER_URL: http://slurpit-portal/callback/scanner
|
||||
WAREHOUSE_CALLBACK_SCANNER_TOKEN:
|
||||
WAREHOUSE_CALLBACK_SCRAPER_URL: http://slurpit-portal/callback/scraper
|
||||
WAREHOUSE_CALLBACK_SCRAPER_TOKEN:
|
||||
restart: always
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/backup/warehouse:/backup/files
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/db/warehouse:/var/lib/mongodb
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/warehouse/mongodb:/var/log/mongodb
|
||||
- ${DOCKER_VOLUME_CONFIG}/slurpit/logs/warehouse:/logs
|
||||
sonarqube:
|
||||
container_name: sonarqube
|
||||
depends_on:
|
||||
@@ -6621,267 +6443,6 @@ services:
|
||||
source: /var/run/docker.sock
|
||||
target: /var/run/docker.sock
|
||||
type: bind
|
||||
wazuh-agent:
|
||||
container_name: wazuh.agent
|
||||
environment:
|
||||
JOIN_MANAGER_PROTOCOL: https
|
||||
JOIN_MANAGER_MASTER_HOST: wazuh.manager
|
||||
JOIN_MANAGER_WORKER_HOST: wazuh.manager
|
||||
JOIN_MANAGER_USER: wazuh-wui
|
||||
JOIN_MANAGER_PASSWORD: ${WAZUH_API_PASSWORD}
|
||||
JOIN_MANAGER_API_PORT: 55000
|
||||
JOIN_MANAGER_PORT: 1514
|
||||
VIRUS_TOTAL_KEY: ${VIRUS_TOTAL_API_KEY}
|
||||
DOCKER_HOST: tcp://dockerproxy:2375
|
||||
hostname: wazuh.agent
|
||||
image: kennyopennix/wazuh-agent:latest
|
||||
networks:
|
||||
default: null
|
||||
restart: unless-stopped
|
||||
wazuh-dashboard:
|
||||
container_name: wazuh-dashboard
|
||||
depends_on:
|
||||
wazuh-indexer:
|
||||
condition: service_started
|
||||
required: true
|
||||
wazuh-manager:
|
||||
condition: service_started
|
||||
required: true
|
||||
restart: true
|
||||
environment:
|
||||
INDEXER_USERNAME: admin
|
||||
INDEXER_PASSWORD: ${WAZUH_INDEXER_PASSWORD}
|
||||
WAZUH_API_URL: https://wazuh.manager
|
||||
DASHBOARD_USERNAME: kibanaserver
|
||||
DASHBOARD_PASSWORD: ${WAZUH_KIBANA_PASSWORD}
|
||||
API_USERNAME: wazuh-wui
|
||||
API_PASSWORD: ${WAZUH_API_PASSWORD}
|
||||
hostname: wazuh-dashboard
|
||||
image: wazuh/wazuh-dashboard:${WAZUH_VERSION}
|
||||
labels:
|
||||
swag: enable
|
||||
swag_proto: https
|
||||
swag_port: 5601
|
||||
swag_url: wsec.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.url: https://wsec.${MY_TLD}
|
||||
homepage.group: Privacy/Security
|
||||
homepage.name: Wazuh
|
||||
homepage.href: https://wsec.${MY_TLD}
|
||||
homepage.icon: wazuh.svg
|
||||
homepage.description: OSS Security Platform for XDR/SIEM
|
||||
links:
|
||||
- wazuh-indexer:wazuh-indexer
|
||||
- wazuh-manager:wazuh-manager
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "5601"
|
||||
target: 5601
|
||||
restart: always
|
||||
volumes:
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.dashboard.pem
|
||||
target: /usr/share/wazuh-dashboard/certs/wazuh-dashboard.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.dashboard-key.pem
|
||||
target: /usr/share/wazuh-dashboard/certs/wazuh-dashboard-key.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/root-ca.pem
|
||||
target: /usr/share/wazuh-dashboard/certs/root-ca.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/dashboard/opensearch_dashboards.yml
|
||||
target: /usr/share/wazuh-dashboard/config/opensearch_dashboards.yml
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/dashboard/wazuh.yml
|
||||
target: /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: wazuh-dashboard-config
|
||||
target: /usr/share/wazuh-dashboard/data/wazuh/config
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh-dashboard-custom
|
||||
target: /usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom
|
||||
type: volume
|
||||
volume: {}
|
||||
wazuh-indexer:
|
||||
container_name: wazuh-indexer
|
||||
environment:
|
||||
OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m
|
||||
hostname: wazuh-indexer
|
||||
image: wazuh/wazuh-indexer:${WAZUH_VERSION}
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "9200"
|
||||
target: 9200
|
||||
restart: always
|
||||
ulimits:
|
||||
memlock:
|
||||
hard: -1
|
||||
soft: -1
|
||||
nofile:
|
||||
hard: 65536
|
||||
soft: 65536
|
||||
volumes:
|
||||
- source: wazuh-indexer-data
|
||||
target: /var/lib/wazuh-indexer
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/root-ca.pem
|
||||
target: /usr/share/wazuh-indexer/certs/root-ca.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.indexer-key.pem
|
||||
target: /usr/share/wazuh-indexer/certs/wazuh.indexer.key
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.indexer.pem
|
||||
target: /usr/share/wazuh-indexer/certs/wazuh.indexer.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/admin.pem
|
||||
target: /usr/share/wazuh-indexer/certs/admin.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/admin-key.pem
|
||||
target: /usr/share/wazuh-indexer/certs/admin-key.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/indexer/wazuh.indexer.yml
|
||||
target: /usr/share/wazuh-indexer/opensearch.yml
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/indexer/internal_users.yml
|
||||
target: /usr/share/wazuh-indexer/opensearch-security/internal_users.yml
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
wazuh-manager:
|
||||
container_name: wazuh-manager
|
||||
environment:
|
||||
INDEXER_URL: https://wazuh.indexer:9200
|
||||
INDEXER_USERNAME: admin
|
||||
INDEXER_PASSWORD: ${WAZUH_INDEXER_PASSWORD}
|
||||
FILEBEAT_SSL_VERIFICATION_MODE: full
|
||||
SSL_CERTIFICATE_AUTHORITIES: /etc/ssl/root-ca.pem
|
||||
SSL_CERTIFICATE: /etc/ssl/filebeat.pem
|
||||
SSL_KEY: /etc/ssl/filebeat.key
|
||||
API_USERNAME: wazuh-wui
|
||||
API_PASSWORD: ${WAZUH_API_PASSWORD}
|
||||
hostname: wazuh-manager
|
||||
image: wazuh/wazuh-manager:${WAZUH_VERSION}
|
||||
networks:
|
||||
default: null
|
||||
ports:
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "1514"
|
||||
target: 1514
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "1515"
|
||||
target: 1515
|
||||
- mode: ingress
|
||||
protocol: udp
|
||||
published: "514"
|
||||
target: 514
|
||||
- mode: ingress
|
||||
protocol: tcp
|
||||
published: "55000"
|
||||
target: 55000
|
||||
restart: always
|
||||
ulimits:
|
||||
memlock:
|
||||
hard: -1
|
||||
soft: -1
|
||||
nofile:
|
||||
hard: 655360
|
||||
soft: 655360
|
||||
volumes:
|
||||
- source: wazuh_api_configuration
|
||||
target: /var/ossec/api/configuration
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_etc
|
||||
target: /var/ossec/etc
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_logs
|
||||
target: /var/ossec/logs
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_queue
|
||||
target: /var/ossec/queue
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_var_multigroups
|
||||
target: /var/ossec/var/multigroups
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_integrations
|
||||
target: /var/ossec/integrations
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_active_response
|
||||
target: /var/ossec/active-response/bin
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_agentless
|
||||
target: /var/ossec/agentless
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: wazuh_wodles
|
||||
target: /var/ossec/wodles
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: filebeat_etc
|
||||
target: /etc/filebeat
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: filebeat_var
|
||||
target: /var/lib/filebeat
|
||||
type: volume
|
||||
volume: {}
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/root-ca.pem
|
||||
target: /etc/ssl/root-ca.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.manager.pem
|
||||
target: /etc/ssl/filebeat.pem
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/generator/wazuh.manager-key.pem
|
||||
target: /etc/ssl/filebeat.key
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
- source: ${DOCKER_VOLUME_CONFIG}/wazuh/manager/wazuh_manager.conf
|
||||
target: /wazuh-config-mount/etc/ossec.conf
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
web-check:
|
||||
container_name: web-check
|
||||
image: lissy93/web-check
|
||||
@@ -7437,8 +6998,12 @@ volumes:
|
||||
name: influxdb2-config
|
||||
invidious-postgres:
|
||||
name: invidious-postgres
|
||||
invoice_ninja_public:
|
||||
name: invoice_ninja_public
|
||||
invoice-ninja_cache:
|
||||
name: invoice-ninja_cache
|
||||
invoice-ninja_public:
|
||||
name: invoice-ninja_public
|
||||
invoice-ninja_storage:
|
||||
name: invoice-ninja_storage
|
||||
jitsi-web-admin-theme:
|
||||
name: jitsi-web-admin-theme
|
||||
jitsi-web-admin-upload:
|
||||
@@ -7447,8 +7012,6 @@ volumes:
|
||||
name: joplin_data
|
||||
lldap_data:
|
||||
name: lldap_data
|
||||
localai_data:
|
||||
name: localai_data
|
||||
mastodon-pg-db:
|
||||
name: mastodon-pg-db
|
||||
mongodb_config:
|
||||
@@ -7465,10 +7028,16 @@ volumes:
|
||||
name: netbird-letsencrypt
|
||||
netbox-pg-db:
|
||||
name: netbox-pg-db
|
||||
netdata-cache:
|
||||
name: netdata-cache
|
||||
netdata-lib:
|
||||
name: netdata-lib
|
||||
nextcloud_aio_mastercontainer:
|
||||
name: nextcloud_aio_mastercontainer
|
||||
ollama:
|
||||
name: ollama
|
||||
open-webui:
|
||||
name: open-webui
|
||||
paperless-ngx-data:
|
||||
name: paperless-ngx-data
|
||||
paperless-ngx-media:
|
||||
|
||||
Reference in New Issue
Block a user