Trimming unused freelancing services. #868
@@ -78,20 +78,27 @@ jobs:
|
||||
- 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 modified services..."
|
||||
echo "Creating list of service changes..."
|
||||
touch service_changes.txt
|
||||
|
||||
# Detect newly added services
|
||||
comm -13 services_main.txt services_head.txt | while read service; do
|
||||
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 | while read service; do
|
||||
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
|
||||
@@ -102,44 +109,58 @@ jobs:
|
||||
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=$(cut -d':' -f1 service_changes.txt | sort | uniq)
|
||||
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"
|
||||
exit 0
|
||||
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
|
||||
|
||||
echo "Modified/added services:"
|
||||
echo "$mod_svcs"
|
||||
|
||||
# Include direct dependencies
|
||||
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)
|
||||
|
||||
echo "Final service list (including direct dependencies):"
|
||||
echo "$all_svcs"
|
||||
|
||||
# Expose to workflow output
|
||||
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
|
||||
echo "$all_svcs" >> "$GITHUB_OUTPUT"
|
||||
# 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"
|
||||
|
||||
- name: List of Services for (Re)Deployment
|
||||
run: |
|
||||
echo -e "${{ steps.detect_services.outputs.docker_svc_list }}"
|
||||
# Always exit cleanly
|
||||
exit 0
|
||||
|
||||
docker-compose-dry-run:
|
||||
name: Docker Compose Dry Run
|
||||
@@ -192,7 +213,18 @@ jobs:
|
||||
HC_VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
|
||||
HC_VAULT_SECRETS_PATH: rinoa-docker/env
|
||||
|
||||
- name: Check services
|
||||
env:
|
||||
DSLIST: ${{ env.DOCKER_SVC_LIST }}
|
||||
run: |
|
||||
if [ -z ${DSLIST} ]; then
|
||||
echo "DOCKER_SVC_LIST=" >> $GITHUB_ENV
|
||||
else
|
||||
echo "${DLIST}"
|
||||
fi
|
||||
|
||||
- name: Pre-pull/build service images in parallel
|
||||
continue-on-error: true
|
||||
uses: https://git.trez.wtf/Trez/docker-select-image-pull@main
|
||||
env:
|
||||
DOCKER_HOST: tcp://dockerproxy:2375
|
||||
|
||||
@@ -43,16 +43,6 @@ x-maxun: &maxun-env
|
||||
CHROMIUM_FLAGS: "--disable-gpu --no-sandbox --headless=new"
|
||||
#DEBUG: pw:api
|
||||
#PWDEBUG: 1
|
||||
x-penpot-flags: &penpot-flags
|
||||
PENPOT_FLAGS: enable-smtp enable-prepl-server login-with-password webhooks
|
||||
x-penpot-uri: &penpot-public-uri
|
||||
PENPOT_PUBLIC_URI: https://penpot.${MY_TLD}
|
||||
x-penpot-body-size: &penpot-http-body-size
|
||||
# Max body size (30MiB); Used for plain requests, should never be
|
||||
# greater than multi-part size
|
||||
PENPOT_HTTP_SERVER_MAX_BODY_SIZE: 31457280
|
||||
# Max multipart body size (350MiB)
|
||||
PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE: 367001600
|
||||
x-signoz-common: &signoz-common
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
@@ -121,66 +111,6 @@ x-valkey-params: &valkey-params
|
||||
- 6379
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
x-zammad:
|
||||
zammad-service: &zammad-service
|
||||
environment: &zammad-environment
|
||||
MEMCACHE_SERVERS: ${ZAMMAD_MEMCACHE_SERVERS:-zammad-memcached:11211}
|
||||
POSTGRESQL_DB: ${ZAMMAD_POSTGRES_DB:-zammad_production}
|
||||
POSTGRESQL_HOST: ${ZAMMAD_POSTGRES_HOST:-zammad-postgresql}
|
||||
POSTGRESQL_USER: ${ZAMMAD_POSTGRES_USER:-zammad}
|
||||
POSTGRESQL_PASS: ${ZAMMAD_POSTGRES_PASS:-zammad}
|
||||
POSTGRESQL_PORT: ${ZAMMAD_POSTGRES_PORT:-5432}
|
||||
POSTGRESQL_OPTIONS: ${ZAMMAD_POSTGRESQL_OPTIONS:-?pool=50}
|
||||
POSTGRESQL_DB_CREATE:
|
||||
REDIS_URL: ${ZAMMAD_REDIS_URL:-redis://zammad-redis:6379}
|
||||
S3_URL: http://${ZAMMAD_S3_ACCESS_KEY}:${ZAMMAD_S3_SECRET_KEY}@minio:9000/zammad-storage-bucket?region=us-east-fh-pln&force_path_style=true
|
||||
# Backup settings
|
||||
BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}"
|
||||
BACKUP_TIME: "${BACKUP_TIME:-03:00}"
|
||||
HOLD_DAYS: "${HOLD_DAYS:-7}"
|
||||
TZ: "${TZ:-Europe/Berlin}"
|
||||
# Allow passing in these variables via .env:
|
||||
AUTOWIZARD_JSON:
|
||||
AUTOWIZARD_RELATIVE_PATH:
|
||||
ELASTICSEARCH_ENABLED: false
|
||||
ELASTICSEARCH_SCHEMA:
|
||||
ELASTICSEARCH_HOST:
|
||||
ELASTICSEARCH_PORT:
|
||||
ELASTICSEARCH_USER: ${ELASTICSEARCH_USER:-elastic}
|
||||
ELASTICSEARCH_PASS: ${ELASTICSEARCH_PASS:-zammad}
|
||||
ELASTICSEARCH_NAMESPACE:
|
||||
ELASTICSEARCH_REINDEX:
|
||||
NGINX_PORT:
|
||||
NGINX_EXPOSE_PORT: 15257
|
||||
NGINX_CLIENT_MAX_BODY_SIZE:
|
||||
NGINX_SERVER_NAME:
|
||||
NGINX_SERVER_SCHEME:
|
||||
RAILS_TRUSTED_PROXIES: 172.18.0.0/16
|
||||
ZAMMAD_HTTP_TYPE:
|
||||
ZAMMAD_FQDN:
|
||||
ZAMMAD_WEB_CONCURRENCY:
|
||||
ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS:
|
||||
ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS:
|
||||
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:
|
||||
# ZAMMAD_SESSION_JOBS_CONCURRENT is deprecated, please use ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS instead.
|
||||
ZAMMAD_SESSION_JOBS_CONCURRENT:
|
||||
# Variables used by ngingx-proxy container for reverse proxy creations
|
||||
# for docs refer to https://github.com/nginx-proxy/nginx-proxy
|
||||
VIRTUAL_HOST:
|
||||
VIRTUAL_PORT:
|
||||
# Variables used by acme-companion for retrieval of LetsEncrypt certificate
|
||||
# for docs refer to https://github.com/nginx-proxy/acme-companion
|
||||
LETSENCRYPT_HOST:
|
||||
LETSENCRYPT_EMAIL:
|
||||
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.0-15}
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: ${RESTART:-always}
|
||||
volumes:
|
||||
- zammad-storage:/opt/zammad/storage
|
||||
depends_on:
|
||||
- zammad-memcached
|
||||
- zammad-postgresql
|
||||
- zammad-redis
|
||||
services:
|
||||
13ft:
|
||||
container_name: 13ft
|
||||
@@ -1770,53 +1700,6 @@ services:
|
||||
source: /home/charish/.config/appdata
|
||||
target: /source
|
||||
type: bind
|
||||
easyappointments:
|
||||
container_name: easyappointments
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
required: true
|
||||
image: alextselegidis/easyappointments:1.5.2@sha256:484f183a7f5bcc9c0486674de4af01c785ab73fc2ee962dc35db7d0ba69d2825
|
||||
environment:
|
||||
BASE_URL: http://localhost
|
||||
DEBUG_MODE: TRUE
|
||||
DB_HOST: mariadb:3306
|
||||
DB_NAME: easyappointments
|
||||
DB_USERNAME: easyappt
|
||||
DB_PASSWORD: ${EASYAPPOINTMENTS_DB_PASSWORD}
|
||||
MAIL_PROTOCOL: mail
|
||||
MAIL_SMTP_DEBUG: 0
|
||||
MAIL_SMTP_AUTH: 0
|
||||
MAIL_SMTP_HOST: postal-smtp
|
||||
MAIL_SMTP_USER: ${POSTAL_SMTP_AUTH_USER}
|
||||
MAIL_SMTP_PASS: ${POSTAL_SMTP_AUTH_PASSWORD}
|
||||
MAIL_SMTP_CRYPTO: tls
|
||||
MAIL_SMTP_PORT: 25
|
||||
MAIL_FROM_ADDRESS: noreply@${MY_TLD}
|
||||
MAIL_FROM_NAME: "Trez"
|
||||
MAIL_REPLY_TO_ADDRESS: it-services@${MY_TLD}
|
||||
labels:
|
||||
homepage.group: Professional Services
|
||||
homepage.name: "Easy!Appointments"
|
||||
homepage.href: https://appt.${MY_TLD}
|
||||
homepage.icon: sh-easy-appointments.png
|
||||
homepage.description: Highly customizable appointment scheduler
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_url: appt.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.parent: Rinoa
|
||||
swag.uptime-kuma.name: "Easy!Appointments"
|
||||
swag.uptime-kuma.monitor.url: https://appt.${MY_TLD}
|
||||
swag.uptime-kuma.monitor.interval: 300
|
||||
swag.uptime-kuma.monitor.retryInterval: 60
|
||||
swag.uptime-kuma.monitor.maxretries: 5
|
||||
ports:
|
||||
- 8362:80
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
# volumes:
|
||||
# - easyappointments:/var/www/html
|
||||
excalidraw:
|
||||
container_name: excalidraw
|
||||
image: "excalidraw/excalidraw:latest@sha256:ddcc677525fd796fa871bdf2b2ffae8f3bc311e19037ab29abfc735b7dc415f7"
|
||||
@@ -2601,112 +2484,6 @@ services:
|
||||
type: bind
|
||||
bind:
|
||||
create_host_path: true
|
||||
invoice-ninja:
|
||||
container_name: invoice-ninja
|
||||
depends_on:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
required: true
|
||||
restart: true
|
||||
environment:
|
||||
APP_DEBUG: true
|
||||
APP_KEY: ${IN_APP_KEY}
|
||||
APP_URL: http://invoice-ninja:8005
|
||||
APP_ENV: production
|
||||
DB_DATABASE: invoice_ninja
|
||||
DB_HOST: mariadb
|
||||
DB_PASSWORD: ${IN_MYSQL_PASSWORD}
|
||||
DB_PORT: 3306
|
||||
DB_USERNAME: ininja
|
||||
IN_PASSWORD: ${IN_PASSWORD}
|
||||
IN_USER_EMAIL: charish.patel@${MY_TLD}
|
||||
IS_DOCKER: true
|
||||
MAIL_ENCRYPTION: null
|
||||
MAIL_FROM_ADDRESS: noreply@${MY_TLD}
|
||||
MAIL_FROM_NAME: null
|
||||
MAIL_HOST: postal-smtp
|
||||
MAIL_MAILER: log
|
||||
MAIL_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD}
|
||||
MAIL_PORT: 25
|
||||
MAIL_USERNAME: ${POSTAL_SMTP_AUTH_USER}
|
||||
MYSQL_DATABASE: invoice_ninja
|
||||
MYSQL_PASSWORD: ${IN_MYSQL_PASSWORD}
|
||||
MYSQL_ROOT_PASSWORD: ${MARIADB_ENVIRONMENT_MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_USER: ininja
|
||||
PDF_GENERATOR: snappdf
|
||||
PHANTOMJS_PDF_GENERATION: false
|
||||
QUEUE_CONNECTION: database
|
||||
REQUIRE_HTTPS: false
|
||||
TRUSTED_PROXIES: 172.18.0.0/16
|
||||
expose:
|
||||
- 9000
|
||||
image: invoiceninja/invoiceninja-debian:5@sha256:2b53df31b3055965c02ecf109ec36ac9edb270e8830f551e237c8c7027369bdd
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- 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:
|
||||
condition: service_started
|
||||
required: true
|
||||
restart: true
|
||||
environment:
|
||||
APP_DEBUG: true
|
||||
APP_KEY: ${IN_APP_KEY}
|
||||
APP_URL: http://invoice-ninja:9000
|
||||
DB_DATABASE: invoice_ninja
|
||||
DB_HOST: mariadb
|
||||
DB_PASSWORD: ${IN_MYSQL_PASSWORD}
|
||||
DB_PORT: 3306
|
||||
DB_USERNAME: ininja
|
||||
IN_PASSWORD: ${IN_PASSWORD}
|
||||
IN_USER_EMAIL: charish.patel@${MY_TLD}
|
||||
MAIL_ENCRYPTION: null
|
||||
MAIL_FROM_ADDRESS: noreply@${MY_TLD}
|
||||
MAIL_FROM_NAME: null
|
||||
MAIL_HOST: postal-smtp
|
||||
MAIL_MAILER: log
|
||||
MAIL_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD}
|
||||
MAIL_PORT: 25
|
||||
MAIL_USERNAME: ${POSTAL_SMTP_AUTH_USER}
|
||||
MYSQL_DATABASE: invoice_ninja
|
||||
MYSQL_PASSWORD: ${IN_MYSQL_PASSWORD}
|
||||
MYSQL_ROOT_PASSWORD: ${MARIADB_ENVIRONMENT_MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_USER: ininja
|
||||
PDF_GENERATOR: snappdf
|
||||
PHANTOMJS_PDF_GENERATION: false
|
||||
QUEUE_CONNECTION: database
|
||||
REQUIRE_HTTPS: false
|
||||
TRUSTED_PROXIES: 172.18.0.0/16
|
||||
image: nginx@sha256:b619c34a163ac12f68c1982568a122c4953dbf3126b8dbf0cc2f6fdbfd85de27
|
||||
labels:
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_url: biz.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.parent: Rinoa
|
||||
swag.uptime-kuma.name: Invoice Ninja
|
||||
swag.uptime-kuma.monitor.url: https://biz.${MY_TLD}
|
||||
swag.uptime-kuma.monitor.interval: 300
|
||||
swag.uptime-kuma.monitor.retryInterval: 60
|
||||
swag.uptime-kuma.monitor.maxretries: 5
|
||||
homepage.group: Professional Services
|
||||
homepage.name: Invoice Ninja
|
||||
homepage.href: https://biz.${MY_TLD}
|
||||
homepage.icon: invoice-ninja.svg
|
||||
homepage.description: Simple invoicing, multiple payment options, expense and vendor management, and more!
|
||||
ports:
|
||||
- 8005:80
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: always
|
||||
volumes:
|
||||
- ${DOCKER_VOLUME_CONFIG}/invoice-ninja/nginx:/etc/nginx/conf.d:ro
|
||||
- invoice-ninja_public:/var/www/html/public
|
||||
- invoice-ninja_storage:/var/www/html/storage
|
||||
it-tools:
|
||||
container_name: it-tools
|
||||
image: ghcr.io/corentinth/it-tools:latest@sha256:8b8128748339583ca951af03dfe02a9a4d7363f61a216226fc28030731a5a61f
|
||||
@@ -4764,112 +4541,6 @@ services:
|
||||
<<: *valkey-params
|
||||
volumes:
|
||||
- paperless-valkey-data:/data/valkey
|
||||
penpot-frontend:
|
||||
container_name: penpot-frontend
|
||||
depends_on:
|
||||
- penpot-backend
|
||||
- penpot-exporter
|
||||
image: penpotapp/frontend:latest@sha256:c016a77555da6f004cf16d0640b71f1ffdde11908fa6037562a977b83d24c3da
|
||||
environment:
|
||||
<<: [*penpot-flags, *penpot-http-body-size]
|
||||
labels:
|
||||
homepage.group: Professional Services
|
||||
homepage.name: Penpot
|
||||
homepage.href: https://penpot.${MY_TLD}
|
||||
homepage.icon: penpot.svg
|
||||
homepage.description: Open-source design and prototyping platform
|
||||
swag: enable
|
||||
swag_port: 8080
|
||||
swag_proto: http
|
||||
swag_url: penpot.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.parent: Rinoa
|
||||
swag.uptime-kuma.name: Penpot
|
||||
swag.uptime-kuma.monitor.url: https://penpot.${MY_TLD}
|
||||
swag.uptime-kuma.monitor.interval: 300
|
||||
swag.uptime-kuma.monitor.retryInterval: 60
|
||||
swag.uptime-kuma.monitor.maxretries: 5
|
||||
ports:
|
||||
- 17503:8080
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: always
|
||||
volumes:
|
||||
- penpot-assets:/opt/data/assets
|
||||
penpot-backend:
|
||||
container_name: penpot-backend
|
||||
depends_on:
|
||||
penpot-pg-db:
|
||||
condition: service_healthy
|
||||
penpot-redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
<<: [*penpot-flags, *penpot-public-uri, *penpot-http-body-size]
|
||||
PENPOT_SECRET_KEY: ${PENPOT_SECRET_KEY}
|
||||
PENPOT_PREPL_HOST: 0.0.0.0
|
||||
PENPOT_DATABASE_URI: postgresql://penpot-pg-db/penpot
|
||||
PENPOT_DATABASE_USERNAME: penpot
|
||||
PENPOT_DATABASE_PASSWORD: ${PENPOT_PG_DB_PASSWORD}
|
||||
PENPOT_REDIS_URI: redis://penpot-redis/0
|
||||
PENPOT_ASSETS_STORAGE_BACKEND: assets-fs
|
||||
PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets
|
||||
PENPOT_TELEMETRY_ENABLED: true
|
||||
PENPOT_TELEMETRY_REFERER: compose
|
||||
PENPOT_SMTP_DEFAULT_FROM: noreply@${MY_TLD}
|
||||
PENPOT_SMTP_DEFAULT_REPLY_TO: noreply@${MY_TLD}
|
||||
PENPOT_SMTP_HOST: postal-smtp
|
||||
PENPOT_SMTP_PORT: 25
|
||||
PENPOT_SMTP_USERNAME: ${POSTAL_SMTP_AUTH_USER}
|
||||
PENPOT_SMTP_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD}
|
||||
PENPOT_SMTP_TLS: false
|
||||
PENPOT_SMTP_SSL: false
|
||||
image: penpotapp/backend:latest@sha256:48d13681ebc76672c6e7715ea03229fe77512037fde26072f8b93f57849ca598
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: always
|
||||
volumes:
|
||||
- penpot-assets:/opt/data/assets
|
||||
penpot-exporter:
|
||||
container_name: penpot-exporter
|
||||
depends_on:
|
||||
penpot-redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
PENPOT_PUBLIC_URI: http://penpot-frontend:8080
|
||||
PENPOT_REDIS_URI: redis://penpot-redis/0
|
||||
image: penpotapp/exporter:latest@sha256:79d8f979764f3cf73da16e6b65f5a3113a6936343a5146d650cdebf070474a7a
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
penpot-pg-db:
|
||||
container_name: penpot-pg-db
|
||||
environment:
|
||||
POSTGRES_INITDB_ARGS: --data-checksums
|
||||
POSTGRES_DB: penpot
|
||||
POSTGRES_USER: penpot
|
||||
POSTGRES_PASSWORD: ${PENPOT_PG_DB_PASSWORD}
|
||||
expose:
|
||||
- 5432
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U penpot"]
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 2s
|
||||
image: postgres:15-alpine@sha256:64583b3cb4f2010277bdd9749456de78e5c36f8956466ba14b0b96922e510950
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: always
|
||||
stop_signal: SIGINT
|
||||
volumes:
|
||||
- penpot-pg-data:/var/lib/postgresql/data
|
||||
penpot-redis:
|
||||
container_name: penpot-redis
|
||||
image: redis:8.2@sha256:4521b581dbddea6e7d81f8fe95ede93f5648aaa66a9dacd581611bf6fe7527bd
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
start_period: 3s
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: always
|
||||
pgbackweb:
|
||||
container_name: pgbackweb
|
||||
depends_on:
|
||||
@@ -6726,62 +6397,6 @@ services:
|
||||
target: /var/lib/postgresql/data
|
||||
type: volume
|
||||
volume: {}
|
||||
umami:
|
||||
container_name: umami
|
||||
depends_on:
|
||||
umami-pg-db:
|
||||
required: true
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DATABASE_URL: postgresql://umami:${UMAMI_PG_DB_PASSWORD}@umami-pg-db:5432/umami
|
||||
DATABASE_TYPE: postgresql
|
||||
APP_SECRET: ${UMAMI_APP_SECRET}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
image: ghcr.io/umami-software/umami:postgresql-latest@sha256:77264ce6951c6b131a91d99f1cfd720d9efac1eaaa12e104f21cf49408dd77e0
|
||||
init: true
|
||||
labels:
|
||||
homepage.group: Professional Services
|
||||
homepage.name: Umami
|
||||
homepage.href: https://analytics.${MY_TLD}
|
||||
homepage.icon: umami.svg
|
||||
homepage.description: Simple, fast, privacy-focused alternative to Google Analytics
|
||||
swag: enable
|
||||
swag_port: 3000
|
||||
swag_proto: http
|
||||
swag_url: analytics.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.parent: Rinoa
|
||||
swag.uptime-kuma.name: Umami
|
||||
swag.uptime-kuma.monitor.url: https://analytics.${MY_TLD}
|
||||
swag.uptime-kuma.monitor.interval: 300
|
||||
swag.uptime-kuma.monitor.retryInterval: 60
|
||||
swag.uptime-kuma.monitor.maxretries: 5
|
||||
ports:
|
||||
- 17382:3000
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
umami-pg-db:
|
||||
container_name: umami-pg-db
|
||||
environment:
|
||||
POSTGRES_DB: umami
|
||||
POSTGRES_USER: umami
|
||||
POSTGRES_PASSWORD: ${UMAMI_PG_DB_PASSWORD}
|
||||
expose:
|
||||
- 5432
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
image: postgres:15-alpine@sha256:64583b3cb4f2010277bdd9749456de78e5c36f8956466ba14b0b96922e510950
|
||||
volumes:
|
||||
- umami-db-data:/var/lib/postgresql/data
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: unless-stopped
|
||||
unmanic:
|
||||
container_name: unmanic
|
||||
environment:
|
||||
@@ -7221,101 +6836,6 @@ services:
|
||||
source: /rinoa-storage
|
||||
target: /storage
|
||||
type: bind
|
||||
zammad-backup:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-backup"]
|
||||
container_name: zammad-backup
|
||||
volumes:
|
||||
- zammad-backup:/var/tmp/zammad
|
||||
- zammad-storage:/opt/zammad/storage:ro
|
||||
user: 0:0
|
||||
zammad-elasticsearch:
|
||||
container_name: zammad-elasticsearch
|
||||
image: elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0}
|
||||
restart: ${RESTART:-always}
|
||||
profiles:
|
||||
- do-not-start
|
||||
volumes:
|
||||
- zammad-elasticsearch-data:/usr/share/elasticsearch/data
|
||||
environment:
|
||||
# Enable authorization without HTTPS. For external access with
|
||||
# SSL termination, use solutions like nginx-proxy-manager.
|
||||
ELASTICSEARCH_ENABLE_SECURITY: "true"
|
||||
ELASTICSEARCH_SKIP_TRANSPORT_TLS: "true"
|
||||
ELASTICSEARCH_ENABLE_REST_TLS: "false"
|
||||
# ELASTICSEARCH_USER is hardcoded to 'elastic' in the container.
|
||||
ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASS:-zammad}
|
||||
zammad-init:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-init"]
|
||||
container_name: zammad-init
|
||||
depends_on:
|
||||
- zammad-postgresql
|
||||
restart: on-failure
|
||||
user: 0:0
|
||||
zammad-memcached:
|
||||
command: memcached -m 256M
|
||||
container_name: zammad-memcached
|
||||
image: memcached:${MEMCACHE_VERSION:-1.6.38-alpine}
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: ${RESTART:-always}
|
||||
zammad-nginx:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-nginx"]
|
||||
container_name: zammad-nginx
|
||||
expose:
|
||||
- 8080
|
||||
ports:
|
||||
- 15257:8080
|
||||
labels:
|
||||
swag: enable
|
||||
swag_proto: http
|
||||
swag_port: 8080
|
||||
swag_url: support.${MY_TLD}
|
||||
swag.uptime-kuma.enabled: true
|
||||
swag.uptime-kuma.monitor.parent: Rinoa
|
||||
swag.uptime-kuma.name: Zammad
|
||||
swag.uptime-kuma.monitor.url: https://support.${MY_TLD}
|
||||
swag.uptime-kuma.monitor.interval: 300
|
||||
swag.uptime-kuma.monitor.retryInterval: 60
|
||||
swag.uptime-kuma.monitor.maxretries: 5
|
||||
homepage.group: Professional Services
|
||||
homepage.name: Zammad
|
||||
homepage.href: https://support.${MY_TLD}
|
||||
homepage.icon: zammad.svg
|
||||
homepage.description: Open-source helpdesk/customer support system
|
||||
depends_on:
|
||||
- zammad-railsserver
|
||||
zammad-postgresql:
|
||||
container_name: zammad-postgresql
|
||||
environment:
|
||||
POSTGRES_DB: ${ZAMMAD_POSTGRES_DB:-zammad_production}
|
||||
POSTGRES_USER: ${ZAMMAD_POSTGRES_USER:-zammad}
|
||||
POSTGRES_PASSWORD: ${ZAMMAD_POSTGRES_PASS:-zammad}
|
||||
image: postgres:${ZAMMAD_POSTGRES_VERSION:-17.5-alpine}
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: ${RESTART:-always}
|
||||
volumes:
|
||||
- zammad-postgresql-data:/var/lib/postgresql/data
|
||||
zammad-railsserver:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-railsserver"]
|
||||
container_name: zammad-railsserver
|
||||
zammad-redis:
|
||||
container_name: zammad-redis
|
||||
image: redis:${REDIS_VERSION:-7.4.2-alpine}
|
||||
profiles: ["rinoa-apps"]
|
||||
restart: ${RESTART:-always}
|
||||
volumes:
|
||||
- zammad-redis-data:/data
|
||||
zammad-scheduler:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-scheduler"]
|
||||
container_name: zammad-scheduler
|
||||
zammad-websocket:
|
||||
<<: *zammad-service
|
||||
command: ["zammad-websocket"]
|
||||
container_name: zammad-websocket
|
||||
volumes:
|
||||
asciinema-data:
|
||||
name: asciinema-data
|
||||
@@ -7357,8 +6877,6 @@ volumes:
|
||||
name: dawarich_watched
|
||||
dockflare_data:
|
||||
name: dockflare_data
|
||||
easyappointments:
|
||||
name: easyappointments
|
||||
fastenhealth-cache:
|
||||
name: fastenhealth-cache
|
||||
fastenhealth-db:
|
||||
@@ -7377,12 +6895,6 @@ volumes:
|
||||
name: invidious-companion-cache
|
||||
invidious-postgres:
|
||||
name: invidious-postgres
|
||||
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,12 +6959,6 @@ volumes:
|
||||
name: paperless-ngx-pg
|
||||
paperless-valkey-data:
|
||||
name: paperless-valkey-data
|
||||
patchman-valkey-data:
|
||||
name: patchman-valkey-data
|
||||
penpot-assets:
|
||||
name: penpot-assets
|
||||
penpot-pg-data:
|
||||
name: penpot-pg-data
|
||||
pgbackweb-data:
|
||||
name: pgbackweb-data
|
||||
planka-favicons:
|
||||
@@ -7505,21 +7011,9 @@ volumes:
|
||||
name: sonarqube-temp
|
||||
tandoor-pg:
|
||||
name: tandoor-pg
|
||||
umami-db-data:
|
||||
name: umami-db-data
|
||||
unmanic-cache:
|
||||
name: unmanic-cache
|
||||
wallos-db:
|
||||
name: wallos-db
|
||||
wallos-logos:
|
||||
name: wallos-logos
|
||||
zammad-backup:
|
||||
name: zammad-backup
|
||||
zammad-storage:
|
||||
name: zammad-storage
|
||||
zammad-elasticsearch-data:
|
||||
name: zammad-elasticsearch-data
|
||||
zammad-postgresql-data:
|
||||
name: zammad-postgresql-data
|
||||
zammad-redis-data:
|
||||
name: zammad-redis-data
|
||||
|
||||
Reference in New Issue
Block a user