From c188116813da4aaeb5c54bf01cc6228e175bda9e Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Wed, 25 Jun 2025 15:34:52 -0400 Subject: [PATCH 1/6] Removing Librechat.env; moving values into docker-compose file. --- .../app-configs/librechat/librechat.env.j2 | 550 ------------------ 1 file changed, 550 deletions(-) delete mode 100644 ansible/app-configs/librechat/librechat.env.j2 diff --git a/ansible/app-configs/librechat/librechat.env.j2 b/ansible/app-configs/librechat/librechat.env.j2 deleted file mode 100644 index 456f9bbc..00000000 --- a/ansible/app-configs/librechat/librechat.env.j2 +++ /dev/null @@ -1,550 +0,0 @@ -{% set vault_addr = 'https://vault.trez.wtf' %} -{% set secrets_path = 'rinoa-docker/env' %} - -#=====================================================================# -# LibreChat Configuration # -#=====================================================================# -# Please refer to the reference documentation for assistance # -# with configuring your LibreChat environment. # -# # -# https://www.librechat.ai/docs/configuration/dotenv # -#=====================================================================# - -#==================================================# -# Server Configuration # -#==================================================# - -HOST=localhost -PORT=3080 - -MONGO_URI=mongodb://librechat:{{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_MONGODB_PASSWORD'] }}@mongodb:27017/librechat?replicaSet=rinoa - -DOMAIN_CLIENT=https://ai.trez.wtf -DOMAIN_SERVER=https://ai.trez.wtf - -NO_INDEX=true -# Use the address that is at most n number of hops away from the Express application. -# req.socket.remoteAddress is the first hop, and the rest are looked for in the X-Forwarded-For header from right to left. -# A value of 0 means that the first untrusted address would be req.socket.remoteAddress, i.e. there is no reverse proxy. -# Defaulted to 1. -TRUST_PROXY=1 - -#===============# -# JSON Logging # -#===============# - -# Use when process console logs in cloud deployment like GCP/AWS -CONSOLE_JSON=true - -#===============# -# Debug Logging # -#===============# - -DEBUG_LOGGING=true -DEBUG_CONSOLE=false - -#=============# -# Permissions # -#=============# - -# UID=1000 -# GID=1000 - -#===============# -# Configuration # -#===============# -# Use an absolute path, a relative path, or a URL - -# CONFIG_PATH="/alternative/path/to/librechat.yaml" - -#===================================================# -# Endpoints # -#===================================================# - -# ENDPOINTS=openAI,assistants,azureOpenAI,google,gptPlugins,anthropic - -PROXY= - -#===================================# -# Known Endpoints - librechat.yaml # -#===================================# -# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints - -# ANYSCALE_API_KEY= -# APIPIE_API_KEY= -# COHERE_API_KEY= -DEEPSEEK_API_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_DEEPSEEK_API_KEY'] }} -# DATABRICKS_API_KEY= -# FIREWORKS_API_KEY= -# GROQ_API_KEY= -# HUGGINGFACE_TOKEN= -MISTRAL_API_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_MISTRAL_API_KEY'] }} -# OPENROUTER_KEY= -# PERPLEXITY_API_KEY= -# SHUTTLEAI_API_KEY= -# TOGETHERAI_API_KEY= -# UNIFY_API_KEY= -# XAI_API_KEY= - -#============# -# Anthropic # -#============# - -ANTHROPIC_API_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_ANTHROPIC_API_KEY'] }} -ANTHROPIC_MODELS=claude-3-7-sonnet-latest,claude-3-7-sonnet-20250219,claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-5-sonnet-latest,claude-3-5-sonnet-20240620,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307,claude-2.1,claude-2,claude-1.2,claude-1,claude-1-100k,claude-instant-1,claude-instant-1-100k -# ANTHROPIC_REVERSE_PROXY= - -#============# -# Azure # -#============# - -# Note: these variables are DEPRECATED -# Use the `librechat.yaml` configuration for `azureOpenAI` instead -# You may also continue to use them if you opt out of using the `librechat.yaml` configuration - -# AZURE_OPENAI_DEFAULT_MODEL=gpt-3.5-turbo # Deprecated -# AZURE_OPENAI_MODELS=gpt-3.5-turbo,gpt-4 # Deprecated -# AZURE_USE_MODEL_AS_DEPLOYMENT_NAME=TRUE # Deprecated -# AZURE_API_KEY= # Deprecated -# AZURE_OPENAI_API_INSTANCE_NAME= # Deprecated -# AZURE_OPENAI_API_DEPLOYMENT_NAME= # Deprecated -# AZURE_OPENAI_API_VERSION= # Deprecated -# AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME= # Deprecated -# AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME= # Deprecated -# PLUGINS_USE_AZURE="true" # Deprecated - -#=================# -# AWS Bedrock # -#=================# - -# BEDROCK_AWS_DEFAULT_REGION=us-east-1 # A default region must be provided -# BEDROCK_AWS_ACCESS_KEY_ID=someAccessKey -# BEDROCK_AWS_SECRET_ACCESS_KEY=someSecretAccessKey -# BEDROCK_AWS_SESSION_TOKEN=someSessionToken - -# Note: This example list is not meant to be exhaustive. If omitted, all known, supported model IDs will be included for you. -# BEDROCK_AWS_MODELS=anthropic.claude-3-5-sonnet-20240620-v1:0,meta.llama3-1-8b-instruct-v1:0 - -# See all Bedrock model IDs here: https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html#model-ids-arns - -# Notes on specific models: -# The following models are not support due to not supporting streaming: -# ai21.j2-mid-v1 - -# The following models are not support due to not supporting conversation history: -# ai21.j2-ultra-v1, cohere.command-text-v14, cohere.command-light-text-v14 - -#============# -# Google # -#============# - -{# GOOGLE_KEY=user_provided #} - -# GOOGLE_REVERSE_PROXY= -# Some reverse proxies do not support the X-goog-api-key header, uncomment to pass the API key in Authorization header instead. -# GOOGLE_AUTH_HEADER=true - -# Gemini API (AI Studio) -# GOOGLE_MODELS=gemini-2.0-flash-exp,gemini-2.0-flash-thinking-exp-1219,gemini-exp-1121,gemini-exp-1114,gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision - -# Vertex AI -# GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0514,gemini-1.0-pro-vision-001,gemini-1.0-pro-002,gemini-1.0-pro-001,gemini-pro-vision,gemini-1.0-pro - -# GOOGLE_TITLE_MODEL=gemini-pro - -# GOOGLE_LOC=us-central1 - -# Google Safety Settings -# NOTE: These settings apply to both Vertex AI and Gemini API (AI Studio) -# -# For Vertex AI: -# To use the BLOCK_NONE setting, you need either: -# (a) Access through an allowlist via your Google account team, or -# (b) Switch to monthly invoiced billing: https://cloud.google.com/billing/docs/how-to/invoiced-billing -# -# For Gemini API (AI Studio): -# BLOCK_NONE is available by default, no special account requirements. -# -# Available options: BLOCK_NONE, BLOCK_ONLY_HIGH, BLOCK_MEDIUM_AND_ABOVE, BLOCK_LOW_AND_ABOVE -# -# GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH -# GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH -# GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH -# GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH -# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH - -#============# -# OpenAI # -#============# - -OPENAI_API_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_OPENAI_API_KEY'] }} -OPENAI_MODELS=o1,o1-mini,o1-preview,gpt-4o,chatgpt-4o-latest,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-0301,gpt-3.5-turbo,gpt-4,gpt-4-0613,gpt-4-vision-preview,gpt-3.5-turbo-0613,gpt-3.5-turbo-16k-0613,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-instruct-0914,gpt-3.5-turbo-16k - -DEBUG_OPENAI=false - -# TITLE_CONVO=false -# OPENAI_TITLE_MODEL=gpt-4o-mini - -# OPENAI_SUMMARIZE=true -# OPENAI_SUMMARY_MODEL=gpt-4o-mini - -# OPENAI_FORCE_PROMPT=true - -# OPENAI_REVERSE_PROXY= - -# OPENAI_ORGANIZATION= - -#====================# -# Assistants API # -#====================# - -# ASSISTANTS_API_KEY=user_provided -# ASSISTANTS_BASE_URL= -# ASSISTANTS_MODELS=gpt-4o,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview - -#==========================# -# Azure Assistants API # -#==========================# - -# Note: You should map your credentials with custom variables according to your Azure OpenAI Configuration -# The models for Azure Assistants are also determined by your Azure OpenAI configuration. - -# More info, including how to enable use of Assistants with Azure here: -# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints/azure#using-assistants-with-azure - -#============# -# OpenRouter # -#============# -# !!!Warning: Use the variable above instead of this one. Using this one will override the OpenAI endpoint -# OPENROUTER_API_KEY= - -#============# -# Plugins # -#============# - -# PLUGIN_MODELS=gpt-4o,gpt-4o-mini,gpt-4,gpt-4-turbo-preview,gpt-4-0125-preview,gpt-4-1106-preview,gpt-4-0613,gpt-3.5-turbo,gpt-3.5-turbo-0125,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613 - -# DEBUG_PLUGINS= - -CREDS_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_CREDS_KEY'] }} -CREDS_IV={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_CREDS_IV'] }} - -# Azure AI Search -#----------------- -# AZURE_AI_SEARCH_SERVICE_ENDPOINT= -# AZURE_AI_SEARCH_INDEX_NAME= -# AZURE_AI_SEARCH_API_KEY= - -# AZURE_AI_SEARCH_API_VERSION= -# AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE= -# AZURE_AI_SEARCH_SEARCH_OPTION_TOP= -# AZURE_AI_SEARCH_SEARCH_OPTION_SELECT= - -# DALL·E -#---------------- -# DALLE_API_KEY= -# DALLE3_API_KEY= -# DALLE2_API_KEY= -# DALLE3_SYSTEM_PROMPT= -# DALLE2_SYSTEM_PROMPT= -# DALLE_REVERSE_PROXY= -# DALLE3_BASEURL= -# DALLE2_BASEURL= - -# DALL·E (via Azure OpenAI) -# Note: requires some of the variables above to be set -#---------------- -# DALLE3_AZURE_API_VERSION= -# DALLE2_AZURE_API_VERSION= - - -# Google -#----------------- -GOOGLE_SEARCH_API_KEY= -GOOGLE_CSE_ID= - -# YOUTUBE -#----------------- -YOUTUBE_API_KEY= - -# SerpAPI -#----------------- -SERPAPI_API_KEY= - -# Stable Diffusion -#----------------- -SD_WEBUI_URL=http://stable-diffusion-webui:7860 - -# Tavily -#----------------- -TAVILY_API_KEY= - -# Traversaal -#----------------- -TRAVERSAAL_API_KEY= - -# WolframAlpha -#----------------- -WOLFRAM_APP_ID= - -# Zapier -#----------------- -ZAPIER_NLA_API_KEY= - -#==================================================# -# Search # -#==================================================# - -SEARCH=true -MEILI_NO_ANALYTICS=true -MEILI_HOST=http://meilisearch:7700 -MEILI_MASTER_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['MEILISEARCH_MASTER_KEY'] }} - -# Optional: Disable indexing, useful in a multi-node setup -# where only one instance should perform an index sync. -# MEILI_NO_SYNC=true - -#==================================================# -# Speech to Text & Text to Speech # -#==================================================# - -STT_API_KEY= -TTS_API_KEY= - -#==================================================# -# RAG # -#==================================================# -# More info: https://www.librechat.ai/docs/configuration/rag_api - -# RAG_OPENAI_BASEURL= -# RAG_OPENAI_API_KEY= -# RAG_USE_FULL_CONTEXT= -# EMBEDDINGS_PROVIDER=openai -# EMBEDDINGS_MODEL=text-embedding-3-small - -#===================================================# -# User System # -#===================================================# - -#========================# -# Moderation # -#========================# - -OPENAI_MODERATION=false -OPENAI_MODERATION_API_KEY= -# OPENAI_MODERATION_REVERSE_PROXY= - -BAN_VIOLATIONS=true -BAN_DURATION=1000 * 60 * 60 * 2 -BAN_INTERVAL=20 - -LOGIN_VIOLATION_SCORE=1 -REGISTRATION_VIOLATION_SCORE=1 -CONCURRENT_VIOLATION_SCORE=1 -MESSAGE_VIOLATION_SCORE=1 -NON_BROWSER_VIOLATION_SCORE=20 - -LOGIN_MAX=7 -LOGIN_WINDOW=5 -REGISTER_MAX=5 -REGISTER_WINDOW=60 - -LIMIT_CONCURRENT_MESSAGES=true -CONCURRENT_MESSAGE_MAX=2 - -LIMIT_MESSAGE_IP=true -MESSAGE_IP_MAX=40 -MESSAGE_IP_WINDOW=1 - -LIMIT_MESSAGE_USER=false -MESSAGE_USER_MAX=40 -MESSAGE_USER_WINDOW=1 - -ILLEGAL_MODEL_REQ_SCORE=5 - -#========================# -# Balance # -#========================# - -CHECK_BALANCE=false -# START_BALANCE=20000 # note: the number of tokens that will be credited after registration. - -#========================# -# Registration and Login # -#========================# - -ALLOW_EMAIL_LOGIN=true -ALLOW_REGISTRATION=true -ALLOW_SOCIAL_LOGIN=false -ALLOW_SOCIAL_REGISTRATION=false -ALLOW_PASSWORD_RESET=false -# ALLOW_ACCOUNT_DELETION=true # note: enabled by default if omitted/commented out -ALLOW_UNVERIFIED_EMAIL_LOGIN=true - -SESSION_EXPIRY=1000 * 60 * 15 -REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 - -JWT_SECRET={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_JWT_SECRET'] }} -JWT_REFRESH_SECRET={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['LIBRECHAT_JWT_REFRESH_SECRET'] }} - - -# Discord -DISCORD_CLIENT_ID= -DISCORD_CLIENT_SECRET= -DISCORD_CALLBACK_URL=/oauth/discord/callback - -# Facebook -FACEBOOK_CLIENT_ID= -FACEBOOK_CLIENT_SECRET= -FACEBOOK_CALLBACK_URL=/oauth/facebook/callback - -# GitHub -GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= -GITHUB_CALLBACK_URL=/oauth/github/callback -# GitHub Enterprise -# GITHUB_ENTERPRISE_BASE_URL= -# GITHUB_ENTERPRISE_USER_AGENT= - -# Google -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -GOOGLE_CALLBACK_URL=/oauth/google/callback - -# Apple -APPLE_CLIENT_ID= -APPLE_TEAM_ID= -APPLE_KEY_ID= -APPLE_PRIVATE_KEY_PATH= -APPLE_CALLBACK_URL=/oauth/apple/callback - -# OpenID -OPENID_CLIENT_ID= -OPENID_CLIENT_SECRET= -OPENID_ISSUER= -OPENID_SESSION_SECRET= -OPENID_SCOPE="openid profile email" -OPENID_CALLBACK_URL=/oauth/openid/callback -OPENID_REQUIRED_ROLE= -OPENID_REQUIRED_ROLE_TOKEN_KIND= -OPENID_REQUIRED_ROLE_PARAMETER_PATH= -# Set to determine which user info property returned from OpenID Provider to store as the User's username -OPENID_USERNAME_CLAIM= -# Set to determine which user info property returned from OpenID Provider to store as the User's name -OPENID_NAME_CLAIM= - -OPENID_BUTTON_LABEL= -OPENID_IMAGE_URL= - -# LDAP -# LDAP_URL= -# LDAP_BIND_DN= -# LDAP_BIND_CREDENTIALS= -# LDAP_USER_SEARCH_BASE= -# LDAP_SEARCH_FILTER=mail= -# LDAP_CA_CERT_PATH= -# LDAP_TLS_REJECT_UNAUTHORIZED= -# LDAP_LOGIN_USES_USERNAME=true -# LDAP_ID= -# LDAP_USERNAME= -# LDAP_EMAIL= -# LDAP_FULL_NAME= - -#========================# -# Email Password Reset # -#========================# - -EMAIL_SERVICE= -EMAIL_HOST=postal-smtp -EMAIL_PORT=25 -EMAIL_ENCRYPTION= -EMAIL_ENCRYPTION_HOSTNAME= -EMAIL_ALLOW_SELFSIGNED= -EMAIL_USERNAME= -EMAIL_PASSWORD= -EMAIL_FROM_NAME= -EMAIL_FROM=noreply@librechat.ai - -#========================# -# Firebase CDN # -#========================# - -# FIREBASE_API_KEY= -# FIREBASE_AUTH_DOMAIN= -# FIREBASE_PROJECT_ID= -# FIREBASE_STORAGE_BUCKET= -# FIREBASE_MESSAGING_SENDER_ID= -# FIREBASE_APP_ID= - -#========================# -# Shared Links # -#========================# - -ALLOW_SHARED_LINKS=true -ALLOW_SHARED_LINKS_PUBLIC=true - -#==============================# -# Static File Cache Control # -#==============================# - -# Leave commented out to use defaults: 1 day (86400 seconds) for s-maxage and 2 days (172800 seconds) for max-age -# NODE_ENV must be set to production for these to take effect -# STATIC_CACHE_MAX_AGE=172800 -# STATIC_CACHE_S_MAX_AGE=86400 - -# If you have another service in front of your LibreChat doing compression, disable express based compression here -# DISABLE_COMPRESSION=true - -#===================================================# -# UI # -#===================================================# - -APP_TITLE=LibreChat -# CUSTOM_FOOTER="My custom footer" -HELP_AND_FAQ_URL=https://librechat.ai - -# SHOW_BIRTHDAY_ICON=true - -# Google tag manager id -#ANALYTICS_GTM_ID=user provided google tag manager id - -#===============# -# REDIS Options # -#===============# - -REDIS_URI=redis:6379 -USE_REDIS=true - -# USE_REDIS_CLUSTER=true -# REDIS_CA=/path/to/ca.crt - -#==================================================# -# Others # -#==================================================# -# You should leave the following commented out # - -# NODE_ENV= - -# E2E_USER_EMAIL= -# E2E_USER_PASSWORD= - -#=====================================================# -# Cache Headers # -#=====================================================# -# Headers that control caching of the index.html # -# Default configuration prevents caching to ensure # -# users always get the latest version. Customize # -# only if you understand caching implications. # - -# INDEX_HTML_CACHE_CONTROL=no-cache, no-store, must-revalidate -# INDEX_HTML_PRAGMA=no-cache -# INDEX_HTML_EXPIRES=0 - -# no-cache: Forces validation with server before using cached version -# no-store: Prevents storing the response entirely -# must-revalidate: Prevents using stale content when offline - -#=====================================================# -# OpenWeather # -#=====================================================# -OPENWEATHER_API_KEY={{ lookup('community.hashi_vault.vault_kv2_get', 'env', engine_mount_point='rinoa-docker', url=vault_addr, token=vault_token_cleaned)['secret']['HOMEPAGE_OPENWEATHERMAP_API_KEY'] }} \ No newline at end of file -- 2.52.0 From 2a8065c3f193b8d41d2fa6d23df80c9282ac63e4 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Wed, 25 Jun 2025 15:35:22 -0400 Subject: [PATCH 2/6] Adding individual Valkey/Redis per service. --- docker-compose.yml | 433 +++++++++++++++++++++++++++++++++------------ 1 file changed, 316 insertions(+), 117 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 62ff8f1d..e5fa3d40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,87 @@ x-app-common: &jitsi_admin_app PHP_INI_MEMORY_LIMIT: "1G" PHP_EXTENSION_LDAP: 1 PHP_EXTENSION_INTL: 1 +x-librechat: &librechat-env + ALLOW_EMAIL_LOGIN: true + ALLOW_PASSWORD_RESET: false + ALLOW_REGISTRATION: true + ALLOW_SHARED_LINKS_PUBLIC: true + ALLOW_SHARED_LINKS: true + ALLOW_SOCIAL_LOGIN: false + ALLOW_SOCIAL_REGISTRATION: false + ALLOW_UNVERIFIED_EMAIL_LOGIN: true + ANTHROPIC_API_KEY: ${LIBRECHAT_ANTHROPIC_API_KEY} + ANTHROPIC_MODELS: claude-3-7-sonnet-latest,claude-3-7-sonnet-20250219,claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-5-sonnet-latest,claude-3-5-sonnet-20240620,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307,claude-2.1,claude-2,claude-1.2,claude-1,claude-1-100k,claude-instant-1,claude-instant-1-100k + APPLE_CALLBACK_URL: /oauth/apple/callback + APP_TITLE: LibreChat + BAN_DURATION: 1000 * 60 * 60 * 2 + BAN_INTERVAL: 20 + BAN_VIOLATIONS: true + CHECK_BALANCE: false + CONCURRENT_MESSAGE_MAX: 2 + CONCURRENT_VIOLATION_SCORE: 1 + CONSOLE_JSON: true + CREDS_IV: ${LIBRECHAT_CREDS_IV} + CREDS_KEY: ${LIBRECHAT_CREDS_KEY} + DB_HOST: librechat-vectordb + DEBUG_CONSOLE: false + DEBUG_LOGGING: true + DEBUG_OPENAI: false + DEEPSEEK_API_KEY: ${LIBRECHAT_DEEPSEEK_API_KEY} + DISCORD_CALLBACK_URL: /oauth/discord/callback + DOMAIN_CLIENT: https://ai.${MY_TLD} + DOMAIN_SERVER: https://ai.${MY_TLD} + EMAIL_FROM: noreply@librechat.ai + EMAIL_HOST: postal-smtp + EMAIL_PORT: 25 + FACEBOOK_CALLBACK_URL: /oauth/facebook/callback + GITHUB_CALLBACK_URL: /oauth/github/callback + GOOGLE_CALLBACK_URL: /oauth/google/callback + HELP_AND_FAQ_URL: https://librechat.ai + HOST: localhost + ILLEGAL_MODEL_REQ_SCORE: 5 + JWT_REFRESH_SECRET: ${LIBRECHAT_JWT_REFRESH_SECRET} + JWT_SECRET: ${LIBRECHAT_JWT_SECRET} + LIMIT_CONCURRENT_MESSAGES: true + LIMIT_MESSAGE_IP: true + LIMIT_MESSAGE_USER: false + LOGIN_MAX: 7 + LOGIN_VIOLATION_SCORE: 1 + LOGIN_WINDOW: 5 + MEILI_HOST: http://meilisearch:7700 + MEILI_MASTER_KEY: ${MEILISEARCH_MASTER_KEY} + MEILI_NO_ANALYTICS: true + MESSAGE_IP_MAX: 40 + MESSAGE_IP_WINDOW: 1 + MESSAGE_USER_MAX: 40 + MESSAGE_USER_WINDOW: 1 + MESSAGE_VIOLATION_SCORE: 1 + MISTRAL_API_KEY: ${LIBRECHAT_MISTRAL_API_KEY} + MONGO_URI: mongodb://librechat:${LIBRECHAT_MONGODB_PASSWORD}@mongodb:27017/librechat?replicaSet=rinoa + NO_INDEX: true + NON_BROWSER_VIOLATION_SCORE: 20 + OPENAI_API_KEY: ${LIBRECHAT_OPENAI_API_KEY} + OPENAI_MODELS: o1,o1-mini,o1-preview,gpt-4o,chatgpt-4o-latest,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-0301,gpt-3.5-turbo,gpt-4,gpt-4-0613,gpt-4-vision-preview,gpt-3.5-turbo-0613,gpt-3.5-turbo-16k-0613,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-instruct-0914,gpt-3.5-turbo-16k + OPENAI_MODERATION: false + OPENID_CALLBACK_URL: /oauth/openid/callback + OPENID_SCOPE: "openid profile email" + OPENWEATHER_API_KEY: ${HOMEPAGE_OPENWEATHERMAP_API_KEY} + PORT: 3080 + POSTGRES_DB: librechat + POSTGRES_PASSWORD: ${LIBRECHAT_PG_DB_PASSWD} + POSTGRES_USER: librechat + RAG_PORT: 8000 + REDIS_PREFIX: librechat_ + REDIS_URI: librechat-valkey:6379 + REFRESH_TOKEN_EXPIRY: (1000 * 60 * 60 * 24) * 7 + REGISTER_MAX: 5 + REGISTER_WINDOW: 60 + REGISTRATION_VIOLATION_SCORE: 1 + SD_WEBUI_URL: http://stable-diffusion-webui:7860 + SEARCH: true + SESSION_EXPIRY: 1000 * 60 * 15 + TRUST_PROXY: 1 + USE_REDIS: true x-maxun: &maxun-env environment: NODE_ENV: production @@ -29,14 +110,14 @@ x-maxun: &maxun-env MINIO_CONSOLE_PORT: 9001 MINIO_ACCESS_KEY: ${MAXUN_MINIO_ACCESS_KEY} MINIO_SECRET_KEY: ${MAXUN_MINIO_SECRET_KEY} - REDIS_HOST: redis + REDIS_HOST: maxun-valkey REDIS_PORT: 6379 BACKEND_PORT: 8080 FRONTEND_PORT: 5173 - BACKEND_URL: https://scrape.trez.wtf/api - PUBLIC_URL: https://scrape.trez.wtf - VITE_BACKEND_URL: https://scrape.trez.wtf/api - VITE_PUBLIC_URL: https://scrape.trez.wtf + BACKEND_URL: https://scrape.${MY_TLD}/api + PUBLIC_URL: https://scrape.${MY_TLD} + VITE_BACKEND_URL: https://scrape.${MY_TLD}/api + VITE_PUBLIC_URL: https://scrape.${MY_TLD} MAXUN_TELEMETRY: true PLAYWRIGHT_BROWSERS_PATH: /ms-playwright PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 0 @@ -184,9 +265,9 @@ services: image: lscr.io/linuxserver/apprise-api:latest labels: cloudflare.tunnel.enable: true - cloudflare.tunnel.hostname: apprise.trez.wtf + cloudflare.tunnel.hostname: apprise.${MY_TLD} cloudflare.tunnel.service: http://apprise:8000 - cloudflare.tunnel.zonename: trez.wtf + cloudflare.tunnel.zonename: ${MY_TLD} cloudflare.tunnel.no_tls_verify: true homepage.group: Infrastructure/App Performance Monitoring homepage.name: Apprise @@ -522,14 +603,14 @@ services: bluesky-pds: container_name: bluesky-pds environment: - PDS_ADMIN_EMAIL: charish.patel@trez.wtf - PDS_HOSTNAME: bsky.trez.wtf + PDS_ADMIN_EMAIL: charish.patel@${MY_TLD} + PDS_HOSTNAME: bsky.${MY_TLD} PDS_JWT_SECRET: ${BLUESKY_PDS_JWT_SECRET} PDS_ADMIN_PASSWORD: ${BLUESKY_PDS_ADMIN_PASSWORD} PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX: ${BLUESKY_PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} PDS_DATA_DIRECTORY: /pds PDS_EMAIL_SMTP_URL: smtp://${POSTAL_SMTP_AUTH_USER}:${POSTAL_SMTP_AUTH_PASSWORD}@postal-smtp:25 - PDS_EMAIL_FROM_ADDRESS: noreply@trez.wtf + PDS_EMAIL_FROM_ADDRESS: noreply@${MY_TLD} PDS_BLOBSTORE_DISK_LOCATION: /pds/blocks PDS_BLOB_UPLOAD_LIMIT: 52428800 PDS_DID_PLC_URL: ${PDS_DID_PLC_URL} @@ -594,15 +675,15 @@ services: labels: homepage.description: Code Gists/Snippets homepage.group: Code/DevOps - homepage.href: https://gist.trez.wtf + homepage.href: https://gist.${MY_TLD} homepage.icon: bytestash.svg homepage.name: Bytestash swag: enable swag_port: 5000 swag_proto: http - swag_url: gist.trez.wtf + swag_url: gist.${MY_TLD} swag.uptime-kuma.enabled: true - swag.uptime-kuma.monitor.url: https://gist.trez.wtf + swag.uptime-kuma.monitor.url: https://gist.${MY_TLD} swag.uptime-kuma.monitor.interval: 300 ports: - 62139:5000 @@ -616,6 +697,9 @@ services: condition: service_started required: true restart: true + castopod-valkey: + condition: service_healthy + required: true environment: MYSQL_DATABASE: castopod MYSQL_USER: castopod @@ -624,13 +708,13 @@ services: CP_DATABASE_NAME: castopod CP_DATABASE_USERNAME: castopod CP_DATABASE_PASSWORD: ${CASTOPOD_MYSQL_PASSWORD} - CP_BASEURL: "https://pod.trez.wtf" + CP_BASEURL: "https://pod.${MY_TLD}" CP_ANALYTICS_SALT: ${CASTOPOD_ANALYTICS_SALT} CP_CACHE_HANDLER: redis CP_DISABLE_HTTPS: 0 - CP_REDIS_HOST: redis + CP_REDIS_HOST: castopod-valkey CP_EMAIL_SMTP_HOST: postal-smtp - CP_EMAIL_FROM: noreply@trez.wtf + CP_EMAIL_FROM: noreply@${MY_TLD} CP_EMAIL_SMTP_USERNAME: ${POSTAL_SMTP_AUTH_USER} CP_EMAIL_SMTP_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD} expose: @@ -652,6 +736,19 @@ services: restart: unless-stopped volumes: - castopod-media:/var/www/castopod/public/media + castopod-valkey: + container_name: castopod-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - castopod-valkey-data:/data/valkey chrome: container_name: chrome command: @@ -669,10 +766,10 @@ services: ARGS: --dns-cloudflare-propagation-seconds 60 CF_APIKEY: ${CLOUDFLAREDDNS_ENVIRONMENT_APIKEY} CF_APITOKEN: ${CLOUDFLAREDDNS_ENVIRONMENT_APITOKEN} - CF_HOSTS: trez.wtf + CF_HOSTS: ${MY_TLD} CF_RECORDTYPES: A - CF_USER: charish.patel@trez.wtf - CF_ZONES: trez.wtf + CF_USER: charish.patel@${MY_TLD} + CF_ZONES: ${MY_TLD} DETECTION_MODE: dig-google.com INTERVAL: "300" LOG_LEVEL: "3" @@ -843,15 +940,15 @@ services: labels: homepage.description: Web app for encryption, encoding, compression, and data analysis homepage.group: Privacy/Security - homepage.href: https://cchef.trez.wtf + homepage.href: https://cchef.${MY_TLD} homepage.icon: cyberchef.svg homepage.name: CyberChef swag: enable swag_port: 8000 swag_proto: http - swag_url: cchef.trez.wtf + swag_url: cchef.${MY_TLD} swag.uptime-kuma.enabled: true - swag.uptime-kuma.monitor.url: https://cchef.trez.wtf + swag.uptime-kuma.monitor.url: https://cchef.${MY_TLD} swag.uptime-kuma.monitor.interval: 300 ports: - 20992:8000 @@ -903,7 +1000,7 @@ services: dawarich-pg-db: condition: service_healthy restart: true - redis: + dawarich-valkey: condition: service_started restart: true deploy: @@ -914,13 +1011,13 @@ services: entrypoint: web-entrypoint.sh environment: RAILS_ENV: development - REDIS_URL: redis://redis:6379 + REDIS_URL: redis://dawarich-valkey:6379 DATABASE_HOST: dawarich-pg-db DATABASE_USERNAME: dawarich DATABASE_PASSWORD: ${DAWARICH_PG_PASSWORD} DATABASE_NAME: dawarich MIN_MINUTES_SPENT_IN_CITY: 60 - APPLICATION_HOSTS: localhost,loc.trez.wtf,192.168.1.254 + APPLICATION_HOSTS: localhost,loc.${MY_TLD},192.168.1.254 TIME_ZONE: ${TZ} APPLICATION_PROTOCOL: http DISTANCE_UNIT: km @@ -987,8 +1084,8 @@ services: dawarich-pg-db: condition: service_healthy restart: true - redis: - condition: service_started + dawarich-valkey: + condition: service_healthy restart: true deploy: resources: @@ -998,12 +1095,12 @@ services: entrypoint: sidekiq-entrypoint.sh environment: RAILS_ENV: development - REDIS_URL: redis://redis:6379 + REDIS_URL: redis://dawarich-valkey:6379 DATABASE_HOST: dawarich-pg-db DATABASE_USERNAME: dawarich DATABASE_PASSWORD: ${DAWARICH_PG_PASSWORD} DATABASE_NAME: dawarich - APPLICATION_HOSTS: localhost,loc.trez.wtf + APPLICATION_HOSTS: localhost,loc.${MY_TLD} BACKGROUND_PROCESSING_CONCURRENCY: 10 APPLICATION_PROTOCOL: http DISTANCE_UNIT: km @@ -1026,6 +1123,19 @@ services: - dawarich_public:/var/app/public - dawarich_watched:/var/app/tmp/imports/watched - ${DOCKER_VOLUME_CONFIG}/dawarich/sidekiq-entrypoint.sh:/usr/local/bin/sidekiq-entrypoint.sh + dawarich-valkey: + container_name: dawarich-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - dawarich-valkey-data:/bitnami/valkey/data dead-man-hand: container_name: dead-man-hand image: ghcr.io/bkupidura/dead-man-hand:latest @@ -1372,7 +1482,7 @@ services: mail__options__secure: false mail__options__auth__user: ${POSTAL_SMTP_AUTH_USER} mail__options__auth__pass: ${POSTAL_SMTP_AUTH_PASSWORD} - mail__from: "'Ghost @ Rinoa' " + mail__from: "'Ghost @ Rinoa' " url: https://blog.${MY_TLD} image: ghost:latest labels: @@ -1408,7 +1518,7 @@ services: GITEA__database__USER: gitea GITEA__database__PASSWD: ${GITEA_PG_DB_PASSWORD} GITEA__mailer__ENABLED: true - GITEA__mailer__FROM: '"Gitea" ' + GITEA__mailer__FROM: '"Gitea" ' GITEA__mailer__PROTOCOL: smtp GITEA__mailer__SMTP_ADDR: postal-smtp GITEA__mailer__SMTP_PORT: 25 @@ -1417,7 +1527,7 @@ services: image: gitea/gitea:1.24.0 labels: cloudflare.tunnel.enable: true - cloudflare.tunnel.hostname: git-ssh.trez.wtf + cloudflare.tunnel.hostname: git-ssh.${MY_TLD} cloudflare.tunnel.service: http://gitea:22 cloudflare.tunnel.no_tls_verify: true homepage.group: Code/DevOps @@ -1678,7 +1788,7 @@ services: homepage.group: System Administration homepage.name: Guacamole homepage.description: Client-less remote desktop gateway - homepage.href: https://guac.trez.wtf + homepage.href: https://guac.${MY_TLD} homepage.icon: guacamole.svg swag: enable swag_proto: http @@ -1726,7 +1836,7 @@ services: bind: create_host_path: true hugo: - command: hugo server --baseURL "it-services.trez.wtf" --bind 0.0.0.0 --appendPort=false --source=/src/it-services --configDir=/src/it-services/config/ -e production --logLevel debug + command: hugo server --baseURL "it-services.${MY_TLD}" --bind 0.0.0.0 --appendPort=false --source=/src/it-services --configDir=/src/it-services/config/ -e production --logLevel debug container_name: hugo image: hugomods/hugo:exts-0.145.0 labels: @@ -1751,8 +1861,8 @@ services: immich-server: container_name: immich-server depends_on: - redis: - condition: service_started + immich-valkey: + condition: service_healthy required: true immich-pg-db: condition: service_healthy @@ -1876,13 +1986,26 @@ services: DB_PORT: 5432 DB_USERNAME: immich DB_PASSWORD: ${IMMICH_DB_PASSWORD} - EXTERNAL_IMMICH_URL: https://pics.trez.wtf + EXTERNAL_IMMICH_URL: https://pics.${MY_TLD} IMMICH_API_KEY: ${IMMICH_POWER_TOOLS_KEY} IMMICH_URL: http://immich-server:2283 image: ghcr.io/varun-raj/immich-power-tools:latest ports: - 54018:3000 restart: unless-stopped + immich-valkey: + container_name: immich-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - immich-valkey-data:/data/valkey influxdb2: container_name: influxdb2 environment: @@ -2052,9 +2175,9 @@ services: DB_PORT: 3306 DB_USERNAME: ininja IN_PASSWORD: ${IN_PASSWORD} - IN_USER_EMAIL: charish.patel@trez.wtf + IN_USER_EMAIL: charish.patel@${MY_TLD} MAIL_ENCRYPTION: null - MAIL_FROM_ADDRESS: noreply@trez.wtf + MAIL_FROM_ADDRESS: noreply@${MY_TLD} MAIL_FROM_NAME: null MAIL_HOST: postal-smtp MAIL_MAILER: log @@ -2112,7 +2235,7 @@ services: jellyfin: container_name: jellyfin environment: - JELLYFIN_PublishedServerUrl: https://jf.trez.wtf + JELLYFIN_PublishedServerUrl: https://jf.${MY_TLD} image: jellyfin/jellyfin labels: homepage.group: Media Library @@ -2749,7 +2872,7 @@ services: MAILER_AUTH_USER: ${POSTAL_SMTP_AUTH_USER} MAILER_AUTH_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD} MAILER_NOREPLY_NAME: Joplin @ Rinoa - MAILER_NOREPLY_EMAIL: noreply@trez.wtf + MAILER_NOREPLY_EMAIL: noreply@${MY_TLD} POSTGRES_PASSWORD: ${JOPLIN_POSTGRES_PASSWORD} POSTGRES_DATABASE: ${JOPLIN_POSTGRES_DATABASE} POSTGRES_USER: ${JOPLIN_POSTGRES_USER} @@ -2823,10 +2946,7 @@ services: - mongodb - librechat-rag-api environment: - CONFIG_PATH: /app/librechat.yaml - HOST: 0.0.0.0 - MONGO_URI: mongodb://librechat:${LIBRECHAT_MONGODB_PASSWORD}@mongodb:27017/librechat?replicaSet=rinoa - MEILI_HOST: http://meilisearch:7700 + << : *librechat-env RAG_PORT: 8000 RAG_API_URL: http://librechat-rag-api:8000 image: ghcr.io/danny-avila/librechat-dev:latest @@ -2853,6 +2973,28 @@ services: - ${DOCKER_VOLUME_CONFIG}/librechat/images:/app/client/public/images - ${DOCKER_VOLUME_CONFIG}/librechat/uploads:/app/uploads - ${DOCKER_VOLUME_CONFIG}/librechat/logs:/app/api/logs + librechat-rag-api: + container_name: librechat-rag-api + depends_on: + - librechat-vectordb + environment: + << : *librechat-env + RAG_PORT: 8000 + image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest + restart: always + librechat-valkey: + container_name: librechat-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - librechat-valkey-data:/data/valkey librechat-vectordb: container_name: librechat-vectordb environment: @@ -2865,24 +3007,6 @@ services: restart: always volumes: - librechat-pg-data:/var/lib/postgresql/data - librechat-rag-api: - container_name: librechat-rag-api - depends_on: - - librechat-vectordb - # env_file: - # - ${DOCKER_VOLUME_CONFIG}/librechat/librechat.env - environment: - DB_HOST: librechat-vectordb - OPENAI_API_KEY: ${LIBRECHAT_OPENAI_API_KEY} - DEEPSEEK_API_KEY: ${LIBRECHAT_DEEPSEEK_API_KEY} - MISTRAL_API_KEY: ${LIBRECHAT_MISTRAL_API_KEY} - ANTHROPIC_API_KEY: ${LIBRECHAT_ANTHROPIC_API_KEY} - POSTGRES_DB: librechat - POSTGRES_USER: librechat - POSTGRES_PASSWORD: ${LIBRECHAT_PG_DB_PASSWD} - RAG_PORT: 8000 - image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest - restart: always libretranslate: container_name: libretranslate # command: --ssl --ga-id MY-GA-ID --req-limit 100 --char-limit 500 @@ -3116,7 +3240,7 @@ services: PGID: ${PGID} TZ: ${TZ} DATABASE_URL: sqlite3:/config/manyfold.sqlite3 - REDIS_URL: redis://redis:6379/2 + REDIS_URL: redis://manyfold-valkey:6379/2 SECRET_KEY_BASE: ${MANYFOLD_SECRET_KEY_BASE} MUTLIUSER: enabled image: lscr.io/linuxserver/manyfold:latest @@ -3139,6 +3263,19 @@ services: volumes: - ${DOCKER_VOLUME_CONFIG}/manyfold/config:/config - ${DOCKER_VOLUME_CONFIG}/manyfold/library:/libraries #optional + manyfold-valkey: + container_name: manyfold-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - manyfold-valkey-data:/data/valkey mariadb: container_name: mariadb environment: @@ -3187,7 +3324,7 @@ services: TZ: ${TZ} LOCAL_DOMAIN: mastodon.${MY_TLD} WEB_DOMAIN: mastodon.${MY_TLD} - REDIS_HOST: redis + REDIS_HOST: mastodon-valkey REDIS_PORT: 6379 DB_HOST: mastodon-pg-db DB_USER: mastodon @@ -3206,11 +3343,11 @@ services: SMTP_PORT: 25 SMTP_LOGIN: ${POSTAL_SMTP_AUTH_USER} SMTP_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD} - SMTP_FROM_ADDRESS: noreply@trez.wtf + SMTP_FROM_ADDRESS: noreply@${MY_TLD} S3_ENABLED: true S3_ENDPOINT: http://minio:9000 S3_REGION: us-east-fh-pln - S3_HOST: s3.trez.wtf + S3_HOST: s3.${MY_TLD} S3_PROTOCOL: https S3_BUCKET: mastodon AWS_ACCESS_KEY_ID: ${MASTODON_MINIO_ACCESS_KEY} @@ -3257,6 +3394,19 @@ services: restart: always volumes: - mastodon-pg-db:/var/lib/postgresql/data + mastodon-valkey: + container_name: mastodon-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - mastodon-valkey-data:/data/valkey maxun-backend: container_name: maxun-backend depends_on: @@ -3318,6 +3468,19 @@ services: restart: unless-stopped volumes: - maxun-pg-data:/var/lib/postgresql/data + maxun-valkey: + container_name: maxun-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - maxun-valkey-data:/data/valkey meilisearch: container_name: meilisearch environment: @@ -3434,19 +3597,21 @@ services: container_name: mixpost image: inovector/mixpost:latest depends_on: - - mariadb - - redis + mariadb: + condition: service_started + mixpost-valkey: + condition: service_healthy environment: APP_NAME: Mixpost APP_KEY: ${MIXPOST_APP_KEY} APP_DEBUG: true - APP_DOMAIN: social.trez.wtf - APP_URL: https://social.trez.wtf + APP_DOMAIN: social.${MY_TLD} + APP_URL: https://social.${MY_TLD} DB_HOST: mariadb DB_DATABASE: mixpost DB_USERNAME: mixpost DB_PASSWORD: ${MIXPOST_DB_PASSWORD} - REDIS_HOST: redis + REDIS_HOST: mixpost-valkey REDIS_PORT: 6379 labels: swag: enable @@ -3467,6 +3632,19 @@ services: volumes: - mixpost-storage:/var/www/html/storage/app - mixpost-logs:/var/www/html/storage/logs + mixpost-valkey: + container_name: mixpost-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - mixpost-valkey-data:/data/valkey mongodb: container_name: mongodb environment: @@ -3489,7 +3667,7 @@ services: multi-scrobbler: container_name: multi-scrobbler environment: - BASE_URL: https://scrobble.trez.wtf + BASE_URL: https://scrobble.${MY_TLD} TZ: ${TZ} PUID: ${PUID} PGID: ${PGID} @@ -3505,7 +3683,7 @@ services: labels: homepage.group: Media Library homepage.name: Multi-Scrobbler - homepage.href: https://scrobble.trez.wtf + homepage.href: https://scrobble.${MY_TLD} homepage.icon: sh-multi-scrobbler.svg homepage.description: JS App for scrobbling/recording play history from/to multiple sources swag: enable @@ -3615,9 +3793,9 @@ services: image: jokobsk/netalertx:latest labels: cloudflare.tunnel.enable: true - cloudflare.tunnel.hostname: net.trez.wtf + cloudflare.tunnel.hostname: net.${MY_TLD} cloudflare.tunnel.service: http://192.168.1.254:20211 - cloudflare.tunnel.zonename: trez.wtf + cloudflare.tunnel.zonename: ${MY_TLD} cloudflare.tunnel.no_tls_verify: true homepage.group: Infrastructure/App Performance Monitoring homepage.name: NetAlertX @@ -3786,7 +3964,7 @@ services: PAPERLESS_DBUSER: paperless PAPERLESS_OCR_LANGUAGE: eng PAPERLESS_OCR_LANGUAGES: all - PAPERLESS_REDIS: redis://redis:6379 + PAPERLESS_REDIS: redis://paperless-valkey:6379 PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY} PAPERLESS_TIME_ZONE: ${TZ} PAPERLESS_URL: https://docs.${MY_TLD} @@ -3830,6 +4008,19 @@ services: type: bind bind: create_host_path: true + paperless-valkey: + container_name: paperless-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - paperless-valkey-data:/data/valkey penpot-frontend: container_name: penpot-frontend depends_on: @@ -4069,7 +4260,7 @@ services: GOTIFY_ENABLED: true # if "false" ntfy service won't be available as notification dispatcher CACHE_TYPE: redis # Cache type. By default, it's "redis" but can also be "none" CACHE_TTL: 86400 - CACHE_HOST: redis + CACHE_HOST: plant-it-valkey CACHE_PORT: 6379 SMTP_HOST: postal-smtp SMTP_PORT: 25 @@ -4101,6 +4292,19 @@ services: restart: unless-stopped volumes: - ${DOCKER_VOLUME_CONFIG}/plant-it:/upload-dir + plant-it-valkey: + container_name: plant-it-valkey + healthcheck: + test: redis-cli ping || exit 1 + image: docker.io/bitnami/valkey:latest + environment: + VALKEY_DATA_DIR: /data/valkey + VALKEY_DATABASE: 0 + expose: + - 6379 + restart: unless-stopped + volumes: + - plant-it-valkey-data:/data/valkey plantuml-server: container_name: plantuml-server expose: @@ -4205,7 +4409,7 @@ services: restart: unless-stopped volumes: - ${DOCKER_VOLUME_CONFIG}/postal:/config - - ${DOCKER_VOLUME_CONFIG}/swag/etc/letsencrypt/live/trez.wtf:/config/certs + - ${DOCKER_VOLUME_CONFIG}/swag/etc/letsencrypt/live/${MY_TLD}:/config/certs postal-web: command: postal web-server container_name: postal-web @@ -4257,7 +4461,7 @@ services: PUID: ${PUID} TZ: America/New_York DOCKER_MODS: ghcr.io/gilbn/theme.park:sonarr - TP_DOMAIN: trez.wtf\/themepark + TP_DOMAIN: ${MY_TLD}\/themepark TP_COMMUNITY_THEME: false TP_THEME: space-gray hostname: Rinoa @@ -4498,7 +4702,7 @@ services: CHROME_TOKEN: ${CHROMIUM_TOKEN} CHROME_URL: wss://browserless:3000 DATABASE_URL: postgresql://reactiveresume:${REACTIVE_RESUME_PGSQL_PASSWORD}@reactive-resume-pg:5432/reactiveresume - MAIL_FROM: noreply@trez.wtf + MAIL_FROM: noreply@${MY_TLD} NODE_ENV: production PORT: 3000 PUBLIC_URL: http://reactive-resume:3000 @@ -4510,7 +4714,7 @@ services: STORAGE_PORT: 9000 STORAGE_REGION: us-east-fh-pln STORAGE_SECRET_KEY: ${REACTIVE_RESUME_S3_SECRET_KEY} - STORAGE_URL: https://s3.trez.wtf/reactive-resume + STORAGE_URL: https://s3.${MY_TLD}/reactive-resume STORAGE_USE_SSL: false TZ: ${TZ} image: amruthpillai/reactive-resume:latest @@ -4579,29 +4783,6 @@ services: - ${DOCKER_VOLUME_CONFIG}/readarr:/config - /rinoa-storage:/storage - ${DOCKER_VOLUME_STORAGE}/downloads/:/downloads - redis: - cap_add: - - SETGID - - SETUID - - DAC_OVERRIDE - cap_drop: - - ALL - command: redis-server --save "" --appendonly "no" - container_name: redis - expose: - - 6379 - # healthcheck: - # test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] - # interval: 10s - # retries: 5 - # start_period: 30s - # timeout: 10s - image: redis:alpine - networks: - default: null - restart: unless-stopped - tmpfs: - - /var/lib/redis redlib: cap_drop: - ALL @@ -4661,10 +4842,10 @@ services: ADMIN_USERNAME: Trez.One ADMIN_NAME: Charish Patel ADMIN_PASS: ${ROCKETCHAT_ADMIN_PASSWORD} - ADMIN_EMAIL: charish.patel@trez.wtf + ADMIN_EMAIL: charish.patel@${MY_TLD} MONGO_URL: mongodb://rocketchat:${ROCKETCHAT_MONGODB_PASSWORD}@mongodb:27017/rocketchat?replicaSet=rinoa MONGO_OPLOG_URL: mongodb://rocketchat:${ROCKETCHAT_MONGODB_PASSWORD}@mongodb:27017/local?replicaSet=rinoa - ROOT_URL: https://chat.trez.wtf + ROOT_URL: https://chat.${MY_TLD} PORT: 3000 DEPLOY_METHOD: docker DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-} @@ -4856,13 +5037,13 @@ services: image: ghcr.io/analogj/scrutiny:master-omnibus labels: cloudflare.tunnel.enable: true - cloudflare.tunnel.hostname: smartd.trez.wtf + cloudflare.tunnel.hostname: smartd.${MY_TLD} cloudflare.tunnel.service: http://scrutiny:8080 - cloudflare.tunnel.zonename: trez.wtf + cloudflare.tunnel.zonename: ${MY_TLD} cloudflare.tunnel.no_tls_verify: true homepage.group: Infrastructure/App Performance Monitoring homepage.name: Scrutiny - homepage.href: https://smartd.trez.wtf + homepage.href: https://smartd.${MY_TLD} homepage.icon: scrutiny.png homepage.description: WebUI for smartd S.M.A.R.T monitoring homepage.widget.type: scrutiny @@ -4937,11 +5118,11 @@ services: ANSIBLE_HOST_KEY_CHECKING: false SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD} SEMAPHORE_ADMIN_NAME: admin - SEMAPHORE_ADMIN_EMAIL: charish.patel@trez.wtf + SEMAPHORE_ADMIN_EMAIL: charish.patel@${MY_TLD} SEMAPHORE_ADMIN: admin SEMAPHORE_DB_DIALECT: bolt SEMAPHORE_EMAIL_ALERT: true - SEMAPHORE_EMAIL_SENDER: noreply@trez.wtf + SEMAPHORE_EMAIL_SENDER: noreply@${MY_TLD} SEMAPHORE_EMAIL_HOST: postal-smtp SEMAPHORE_EMAIL_PORT: 25 SEMAPHORE_EMAIL_USERNAME: ${POSTAL_SMTP_AUTH_USER} @@ -5146,7 +5327,7 @@ services: labels: homepage.group: Code/DevOps homepage.name: Sonarqube - homepage.href: https://sqube.trez.wtf + homepage.href: https://sqube.${MY_TLD} homepage.icon: sonarqube.svg homepage.description: Code/DevOps quality/security swag: enable @@ -5299,13 +5480,13 @@ services: - ${DOCKER_VOLUME_CONFIG}/speedtest-tracker:/config stable-diffusion-download: container_name: stable-diffusion-download - image: git.trez.wtf/trez.one/stable-diffusion-download:v9.0.0 + image: git.${MY_TLD}/trez.one/stable-diffusion-download:v9.0.0 restart: unless-stopped volumes: - ${DOCKER_VOLUME_CONFIG}/stable-diffusion-webui/data:/data stable-diffusion-webui: container_name: stable-diffusion-webui - image: git.trez.wtf/trez.one/stable-diffusion-ui:v9.0.1 + image: git.${MY_TLD}/trez.one/stable-diffusion-ui:v9.0.1 environment: - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api labels: @@ -5366,14 +5547,14 @@ services: container_name: swag environment: DNSPLUGIN: cloudflare - EMAIL: charish.patel@trez.wtf + EMAIL: charish.patel@${MY_TLD} EXTRA_DOMAINS: ONLY_SUBDOMAINS: false PGID: 1000 PUID: 1000 SUBDOMAINS: etherpad,ha,www TZ: America/New_York - URL: trez.wtf + URL: ${MY_TLD} VALIDATION: dns CROWDSEC_API_KEY: ${CROWDSEC_SWAG_API_KEY} CROWDSEC_LAPI_URL: http://crowdsec:8080 @@ -5856,6 +6037,8 @@ volumes: name: authelia-pg-db castopod-media: name: castopod-media + castopod-valkey-data: + name: castopod-valkey-data crowdsec-config: name: crowdsec-config crowdsec-db: @@ -5866,6 +6049,8 @@ volumes: name: dawarich_shared dawarich_public: name: dawarich_public + dawarich-valkey-data: + name: dawarich-valkey-data dawarich_watched: name: dawarich_watched dockflare_data: @@ -5882,6 +6067,8 @@ volumes: name: graylog-datanode immich-model-cache: name: immich-model-cache + immich-valkey-data: + name: immich-valkey-data influxdb2-data: name: influxdb2-data influxdb2-config: @@ -5906,14 +6093,22 @@ volumes: name: linkstack_data librechat-pg-data: name: librechat-pg-data + librechat-valkey-data: + name: librechat-valkey-data libretranslate_models: name: libretranslate_models lldap_data: name: lldap_data + manyfold-valkey-data: + name: manyfold-valkey-data mastodon-pg-db: name: mastodon-pg-db + mastodon-valkey-data: + name: mastodon-valkey-data maxun-pg-data: name: maxun-pg-data + maxun-valkey-data: + name: maxun-valkey-data mixpost-storage: name: mixpost-storage mixpost-logs: @@ -5934,6 +6129,8 @@ volumes: name: paperless-ngx-media paperless-ngx-pg: name: paperless-ngx-pg + paperless-valkey-data: + name: paperless-valkey-data penpot-assets: name: penpot-assets penpot-pg-data: @@ -5950,6 +6147,8 @@ volumes: name: planka-attachments planka-db-data: name: planka-db-data + plant-it-valkey-data: + name: plant-it-valkey-data portainer-data: name: portainer-data portnote-db-data: -- 2.52.0 From f88bec0ab91e55ad6561bc776fac1645ee184002 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Wed, 25 Jun 2025 16:13:12 -0400 Subject: [PATCH 3/6] Plant-It dependency fix. --- docker-compose.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e5fa3d40..2966954a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4235,8 +4235,12 @@ services: plant-it: container_name: plant-it depends_on: - - mariadb - - redis + mariadb: + condition: service_started + required: true + plant-it-valkey: + condition: service_healthy + required: true environment: MYSQL_HOST: mariadb MYSQL_PORT: 3306 -- 2.52.0 From 28f3489f2d94781e63451177841a415b332ddd2a Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Wed, 25 Jun 2025 18:49:52 -0400 Subject: [PATCH 4/6] Forgot to add Valkey volume for Mixpost. --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 2966954a..0283a6d8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6117,6 +6117,8 @@ volumes: name: mixpost-storage mixpost-logs: name: mixpost-logs + mixpost-valkey-data: + name: mixpost-valkey-data mongodb_config: name: mongodb_config mongodb_data: -- 2.52.0 From 2f8c0f66e993eeadfb0f6dfab15b326ce565aa34 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Thu, 26 Jun 2025 08:30:03 -0400 Subject: [PATCH 5/6] Adding DBs to WhoDB. --- docker-compose.yml | 89 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 70 insertions(+), 19 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0283a6d8..4f9b2e40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5894,6 +5894,19 @@ services: container_name: whodb image: clidey/whodb environment: + WHODB_CLICKHOUSE_1: '{ + "host": "signoz-clickhouse" + }' + 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", @@ -5925,51 +5938,89 @@ services: "database": "invidious" }' WHODB_POSTGRES_6: '{ + "host": "joplin-db", + "user": "joplin", + "password": "${JOPLIN_POSTGRES_PASSWORD}", + "database": "librechat" + }' + WHODB_POSTGRES_7: '{ "host": "librechat-vectordb", "user": "librechat", "password": "${LIBRECHAT_PG_DB_PASSWD}", "database": "librechat" }' - WHODB_POSTGRES_7: '{ + WHODB_POSTGRES_8: '{ "host": "mastodon-pg-db", "user": "mastodon", "password": "${MASTODON_PG_DB_PASSWORD}", "database": "mastodon" }' - WHODB_POSTGRES_8: '{ + WHODB_POSTGRES_9: '{ + "host": "penpot-pg-db", + "user": "penpot", + "password": "${PENPOT_PG_DB_PASSWORD}", + "database": "penpot" + }' + WHODB_POSTGRES_10: '{ + "host": "planka-pg-db", + "user": "planka", + "password": "${PLANKA_PG_PASSWORD}", + "database": "planka" + }' + WHODB_POSTGRES_11: '{ + "host": "portnote-pg-db", + "user": "portnote", + "password": "${PORTNOTE_POSTGRES_PASSWORD}", + "database": "planka" + }' + WHODB_POSTGRES_12: '{ "host": "reactive-resume-pg", "user": "reactiveresume", "password": "${REACTIVE_RESUME_PGSQL_PASSWORD}", "database": "reactiveresume" }' - WHODB_POSTGRES_9: '{ + WHODB_POSTGRES_13: '{ "host": "sonarqube-pg-db", "user": "sonar", "password": "${SONARQUBE_POSTGRES_PASSWORD}", "database": "sonar" }' - WHODB_POSTGRES_10: '{ + WHODB_POSTGRES_14: '{ "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_REDIS_1: '{ + "host": "castopod-valkey" + }' + WHODB_REDIS_2: '{ + "host": "dawarich-valkey" + }' + WHODB_REDIS_3: '{ + "host": "immich-valkey" + }' + WHODB_REDIS_4: '{ + "host": "librechat-valkey" + }' + WHODB_REDIS_5: '{ + "host": "manyfold-valkey" + }' + WHODB_REDIS_6: '{ + "host": "mastodon-valkey" + }' + WHODB_REDIS_7: '{ + "host": "maxun-valkey" + }' + WHODB_REDIS_8: '{ + "host": "mixpost-valkey" + }' + WHODB_REDIS_9: '{ + "host": "paperless-valkey" + }' + WHODB_REDIS_10: '{ + "host": "plant-it-valkey" }' - 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_OLLAMA_HOST: ollama WHODB_OLLAMA_PORT: 11434 WHODB_ANTHROPIC_API_KEY: ${LIBRECHAT_ANTHROPIC_API_KEY} -- 2.52.0 From 617f07785af1b98b645565ebcbeda5d6bb102a57 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Thu, 26 Jun 2025 13:07:17 +0000 Subject: [PATCH 6/6] chore: Update README --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dadfa5c2..df678bb4 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ | browserless | ghcr.io/browserless/chromium:latest | | bytestash | ghcr.io/jordan-dalby/bytestash:latest | | castopod | castopod/castopod:latest | +| castopod-valkey | docker.io/bitnami/valkey:latest | | chrome | gcr.io/zenika-hub/alpine-chrome:123 | | cloudflareddns | ghcr.io/hotio/cloudflareddns:latest | | convertx | ghcr.io/c4illin/convertx | @@ -31,6 +32,7 @@ | dawarich-app | freikin/dawarich:latest | | dawarich-pg-db | postgis/postgis:17-3.5-alpine | | dawarich-sidekiq | freikin/dawarich:latest | +| dawarich-valkey | docker.io/bitnami/valkey:latest | | dead-man-hand | ghcr.io/bkupidura/dead-man-hand:latest | | docker-socket-proxy | ghcr.io/tecnativa/docker-socket-proxy:latest | | dockflare | alplat/dockflare:stable | @@ -57,6 +59,7 @@ | immich-pg-db | tensorchord/pgvecto-rs:pg14-v0.2.1 | | immich-public-proxy | alangrainger/immich-public-proxy:latest | | immich-power-tools | ghcr.io/varun-raj/immich-power-tools:latest | +| immich-valkey | docker.io/bitnami/valkey:latest | | influxdb2 | influxdb:2-alpine | | invidious | quay.io/invidious/invidious:latest | | invidious-sig-helper | quay.io/invidious/inv-sig-helper:latest | @@ -77,8 +80,9 @@ | karakeep | ghcr.io/karakeep-app/karakeep:release | | languagetool | elestio/languagetool:latest | | librechat-api | ghcr.io/danny-avila/librechat-dev:latest | -| librechat-vectordb | ankane/pgvector:latest | | librechat-rag-api | ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest | +| librechat-valkey | docker.io/bitnami/valkey:latest | +| librechat-vectordb | ankane/pgvector:latest | | libretranslate | libretranslate/libretranslate | | lidarr | lscr.io/linuxserver/lidarr:latest | | lidify | thewicklowwolf/lidify:latest | @@ -87,18 +91,22 @@ | loggifly | ghcr.io/clemcer/loggifly:latest | | maloja | krateng/maloja:latest | | manyfold | lscr.io/linuxserver/manyfold:latest | +| manyfold-valkey | docker.io/bitnami/valkey:latest | | mariadb | linuxserver/mariadb | | mastodon | lscr.io/linuxserver/mastodon:latest | | mastodon-pg-db | postgres:17-alpine | +| mastodon-valkey | docker.io/bitnami/valkey:latest | | maxun-backend | getmaxun/maxun-backend:latest | | maxun-frontend | getmaxun/maxun-frontend:latest | | maxun-pg-db | postgres:13-alpine | +| maxun-valkey | docker.io/bitnami/valkey:latest | | meilisearch | getmeili/meilisearch:v1.13.3 | | meme-search-pro | ghcr.io/neonwatty/meme_search_pro:latest | | meme-search-pro-img2txt-gen | ghcr.io/neonwatty/image_to_text_generator:latest | | meme-search-db | pgvector/pgvector:pg17 | | minio | minio/minio:RELEASE.2025-04-22T22-12-26Z | | mixpost | inovector/mixpost:latest | +| mixpost-valkey | docker.io/bitnami/valkey:latest | | mongodb | bitnami/mongodb:7.0 | | multi-scrobbler | foxxmd/multi-scrobbler | | n8n | docker.n8n.io/n8nio/n8n | @@ -110,6 +118,7 @@ | omni-tools | iib0011/omni-tools:latest | | omnipoly | kweg/omnipoly:latest | | paperless-ngx | ghcr.io/paperless-ngx/paperless-ngx:latest | +| paperless-valkey | docker.io/bitnami/valkey:latest | | penpot-frontend | penpotapp/frontend:latest | | penpot-backend | penpotapp/backend:latest | | penpot-exporter | penpotapp/exporter:latest | @@ -120,6 +129,7 @@ | planka | ghcr.io/plankanban/planka:2.0.0-rc.3 | | planka-pg-db | postgres:16-alpine | | plant-it | msdeluise/plant-it-server:latest | +| plant-it-valkey | docker.io/bitnami/valkey:latest | | plantuml-server | plantuml/plantuml-server:jetty | | portainer | portainer/portainer-ce:alpine | | portnote-web | haedlessdev/portnote:latest | @@ -136,7 +146,6 @@ | reactive-resume | amruthpillai/reactive-resume:latest | | reactive-resume-pg | postgres:16-alpine | | readarr | lscr.io/linuxserver/readarr:develop | -| redis | redis:alpine | | redlib | quay.io/redlib/redlib:latest | | rocketchat | registry.rocket.chat/rocketchat/rocket.chat:latest | | romm | rommapp/romm:latest | @@ -158,8 +167,8 @@ | sonarr | lscr.io/linuxserver/sonarr:latest | | sonashow | thewicklowwolf/sonashow:latest | | speedtest-tracker | lscr.io/linuxserver/speedtest-tracker:latest | -| stable-diffusion-download | git.trez.wtf/trez.one/stable-diffusion-download:v9.0.0 | -| stable-diffusion-webui | git.trez.wtf/trez.one/stable-diffusion-ui:v9.0.1 | +| stable-diffusion-download | git./trez.one/stable-diffusion-download:v9.0.0 | +| stable-diffusion-webui | git./trez.one/stable-diffusion-ui:v9.0.1 | | stirling-pdf | docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest | | swag | lscr.io/linuxserver/swag:latest | | tandoor | vabene1111/recipes | -- 2.52.0