Merge branch 'next' into next
This commit is contained in:
32
templates/compose/anythingllm.yaml
Normal file
32
templates/compose/anythingllm.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
# documentation: https://docs.anythingllm.com/installation-docker/overview
|
||||
# slogan: AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI Agents, and much more with no code or infrastructure headaches.
|
||||
# tags: lowcode, nocode, ai, llm, openai, anthropic, machine-learning, rag, agents, chatbot, api, team, bot
|
||||
# logo: svgs/anythingllm.svg
|
||||
# port: 3001
|
||||
|
||||
services:
|
||||
anything-llm:
|
||||
image: mintplexlabs/anythingllm
|
||||
environment:
|
||||
- SERVICE_FQDN_ANYTHINGLLM_3001
|
||||
- STORAGE_DIR=/app/server/storage
|
||||
- DISABLE_TELEMETRY=${DISABLE_TELEMETRY:-true}
|
||||
- PASSWORDLOWERCASE=${PASSWORDLOWERCASE:-1}
|
||||
- PASSWORDMAXCHAR=${PASSWORDMAXCHAR:-250}
|
||||
- PASSWORDMINCHAR=${PASSWORDMINCHAR:-6}
|
||||
- PASSWORDNUMERIC=${PASSWORDNUMERIC:-1}
|
||||
- PASSWORDREQUIREMENTS=${PASSWORDREQUIREMENTS:-1}
|
||||
- PASSWORDSYMBOL=${PASSWORDSYMBOL:-1}
|
||||
- PASSWORDUPPERCASE=${PASSWORDUPPERCASE:-1}
|
||||
- SIG_KEY=${SERVICE_PASSWORD_SIGKEY}
|
||||
- SIG_SALT=${SERVICE_PASSWORD_SIGSALT}
|
||||
- JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET}
|
||||
- AUTH_TOKEN=${SERVICE_PASSWORD_AUTHTOKEN}
|
||||
- SERVER_PORT=${SERVER_PORT:-3001}
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
volumes:
|
||||
- "anythingllm-storage:/app/server/storage"
|
||||
- "anythingllm-hot:/app/collector/hotdir"
|
||||
- "anythingllm-outputs:/app/collector/outputs"
|
||||
user: "${UID:-1000}:${GID:-1000}"
|
||||
126
templates/compose/argilla.yaml
Normal file
126
templates/compose/argilla.yaml
Normal file
@@ -0,0 +1,126 @@
|
||||
# documentation: https://docs.argilla.io/latest/
|
||||
# slogan: Argilla is a collaboration tool for AI engineers and domain experts who need to build high-quality datasets for their projects.
|
||||
# tags: workflow, orchestration, data-pipeline, python, argilla, ai, elasticsearch, datasets, data, machine-learning, data-science, nlp
|
||||
# logo: svgs/argilla.png
|
||||
# port: 6900
|
||||
|
||||
services:
|
||||
argilla:
|
||||
image: "argilla/argilla-server:v2.2.0"
|
||||
environment:
|
||||
- SERVICE_FQDN_ARGILLA_6900
|
||||
- ARGILLA_HOME_PATH=/var/lib/argilla
|
||||
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
|
||||
- ARGILLA_DATABASE_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}
|
||||
- ARGILLA_REDIS_URL=redis://redis:6379/0
|
||||
- ARGILLA_AUTH_SECRET_KEY=${SERVICE_PASSWORD_AUTHSECRET}
|
||||
- ARGILLA_ENABLE_TELEMETRY=${ARGILLA_ENABLE_TELEMETRY:-0}
|
||||
- HF_HUB_DISABLE_TELEMETRY=${HF_HUB_DISABLE_TELEMETRY:-1}
|
||||
- REINDEX_DATASETS=${REINDEX_DATASETS:-1}
|
||||
- DEFAULT_USER_ENABLED=${DEFAULT_USER_ENABLED:-true}
|
||||
- USERNAME=${ARGILLA_USERNAME:-argilla}
|
||||
- PASSWORD=${SERVICE_PASSWORD_ARGILLA}
|
||||
- API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- DEFAULT_USER_PASSWORD=${SERVICE_PASSWORD_ARGILLA}
|
||||
- DEFAULT_USER_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- WORKSPACE=${WORKSPACE:-default}
|
||||
depends_on:
|
||||
elasticsearch:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- "argilla-data:/var/lib/argilla"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- 'python -c "import requests as r;r.get(\"http://localhost:6900/api/_status\").raise_for_status()"'
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
worker:
|
||||
image: "argilla/argilla-server:v2.2.0"
|
||||
environment:
|
||||
- ARGILLA_HOME_PATH=/var/lib/argilla
|
||||
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
|
||||
- ARGILLA_DATABASE_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}
|
||||
- ARGILLA_REDIS_URL=redis://redis:6379/0
|
||||
- ARGILLA_AUTH_SECRET_KEY=${SERVICE_PASSWORD_AUTHSECRET}
|
||||
- ARGILLA_ENABLE_TELEMETRY=${ARGILLA_ENABLE_TELEMETRY:-0}
|
||||
- HF_HUB_DISABLE_TELEMETRY=${HF_HUB_DISABLE_TELEMETRY:-1}
|
||||
- REINDEX_DATASETS=${REINDEX_DATASETS:-1}
|
||||
- DEFAULT_USER_ENABLED=${DEFAULT_USER_ENABLED:-true}
|
||||
- USERNAME=${ARGILLA_USERNAME:-argilla}
|
||||
- PASSWORD=${SERVICE_PASSWORD_ARGILLA}
|
||||
- API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- DEFAULT_USER_PASSWORD=${SERVICE_PASSWORD_ARGILLA}
|
||||
- DEFAULT_USER_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- BACKGROUND_NUM_WORKERS=${BACKGROUND_NUM_WORKERS:-1}
|
||||
- WORKSPACE=${WORKSPACE:-default}
|
||||
depends_on:
|
||||
elasticsearch:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- "argilla-data:/var/lib/argilla"
|
||||
command: "sh -c 'python -m argilla_server worker --num-workers $${BACKGROUND_NUM_WORKERS}'"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- pwd
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
postgres:
|
||||
image: "postgres:14"
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-argilla}
|
||||
volumes:
|
||||
- "pg-data:/var/lib/postgresql/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
redis:
|
||||
image: "redis:7"
|
||||
volumes:
|
||||
- "redis-data:/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "redis-cli -h localhost -p 6379 ping"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
elasticsearch:
|
||||
image: "docker.elastic.co/elasticsearch/elasticsearch:8.12.2"
|
||||
environment:
|
||||
- node.name=${NODE_NAME:-elasticsearch}
|
||||
- cluster.name=${CLUSTER_NAME:-es-argilla-local}
|
||||
- discovery.type=${DISCOVERY_TYPE:-single-node}
|
||||
- "ES_JAVA_OPTS=${ES_JAVA_OPTS:-\"-Xms512m -Xmx512m\"}"
|
||||
- cluster.routing.allocation.disk.threshold_enabled=${CLUSTER_ROUTING_ALLOCATION_DISK_THRESHOLD_ENABLED:-false}
|
||||
- xpack.security.enabled=${XPACK_SECURITY_ENABLED:-false}
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
volumes:
|
||||
- "elasticsearch-data:/usr/share/elasticsearch/data/"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "curl --silent --fail http://elasticsearch:9200"
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
17
templates/compose/bitcoin-core.yaml
Normal file
17
templates/compose/bitcoin-core.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
# documentation: https://hub.docker.com/r/ruimarinho/bitcoin-core/
|
||||
# slogan: A self-hosted Bitcoin Core full node.
|
||||
# tags: cryptocurrency,node,blockchain,bitcoin
|
||||
# logo: svgs/bitcoin.svg
|
||||
|
||||
services:
|
||||
bitcoin-core:
|
||||
image: ruimarinho/bitcoin-core:latest
|
||||
environment:
|
||||
- BITCOIN_RPCUSER=${BITCOIN_RPCUSER:-bitcoinuser}
|
||||
- BITCOIN_RPCPASSWORD=${SERVICE_PASSWORD_PASSWORD64}
|
||||
- BITCOIN_NETWORK=${BITCOIN_NETWORK:-mainnet}
|
||||
- BITCOIN_PRINTTOCONSOLE=${BITCOIN_PRINTTOCONSOLE:-1}
|
||||
- BITCOIN_TXINDEX=${BITCOIN_TXINDEX:-1}
|
||||
volumes:
|
||||
- bitcoin_data:/home/bitcoin/.bitcoin
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# documentation: https://docs.docker.com/registry/
|
||||
# slogan: The Docker Registry is lets you distribute Docker images.
|
||||
# slogan: The Docker Registry lets you distribute Docker images.
|
||||
# tags: registry,images,docker
|
||||
# logo: svgs/docker-registry.png
|
||||
# port: 5000
|
||||
|
||||
@@ -2,23 +2,32 @@
|
||||
# slogan: FileBrowser is a web-based file manager and file explorer with a user-friendly interface.
|
||||
# tags: file-management, storage-access, data-organization, file-utilization, administration-tool
|
||||
# logo: svgs/filebrowser.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
filebrowser:
|
||||
image: filebrowser/filebrowser:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_FILEBROWSER
|
||||
- SERVICE_FQDN_FILEBROWSER_80
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./srv
|
||||
target: /srv
|
||||
isDirectory: true
|
||||
- ./database.db:/database.db
|
||||
- type: bind
|
||||
source: ./database.db
|
||||
target: /database.db
|
||||
isDirectory: false
|
||||
content: ""
|
||||
- type: bind
|
||||
source: ./filebrowser.json
|
||||
target: /.filebrowser.json
|
||||
read_only: true
|
||||
content: "{}"
|
||||
content: |
|
||||
{
|
||||
"address": "0.0.0.0",
|
||||
"port": 80
|
||||
}
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
|
||||
interval: 2s
|
||||
|
||||
21
templates/compose/homarr.yaml
Normal file
21
templates/compose/homarr.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
# documentation: https://homarr.dev
|
||||
# slogan: Homarr is a self-hosted homepage for your services.
|
||||
# tags: homarr,self-hosted,homepage
|
||||
# logo: svgs/homarr.svg
|
||||
# port: 7575
|
||||
|
||||
services:
|
||||
homarr:
|
||||
image: ghcr.io/ajnart/homarr:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_HOMARR_7575
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./homarr/configs:/app/data/configs
|
||||
- ./homarr/icons:/app/public/icons
|
||||
- ./homarr/data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:7575"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
69
templates/compose/infisical.yaml
Normal file
69
templates/compose/infisical.yaml
Normal file
@@ -0,0 +1,69 @@
|
||||
# documentation: https://infisical.com/docs/documentation/getting-started/introduction
|
||||
# slogan: Infisical is the open source secret management platform that developers use to centralize their application configuration and secrets like API keys and database credentials.
|
||||
# tags: security, environment, secrets, infisical, database, configuration, secret, api, keys, auth, encryption
|
||||
# logo: svgs/infisical.png
|
||||
# port: 8080
|
||||
|
||||
|
||||
services:
|
||||
backend:
|
||||
image: "infisical/infisical:latest-postgres"
|
||||
environment:
|
||||
- SERVICE_FQDN_BACKEND_8080
|
||||
- SITE_URL=${SERVICE_FQDN_BACKEND_8080}
|
||||
- NODE_ENV=${NODE_ENV:-production}
|
||||
- ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTIONKEY}
|
||||
- AUTH_SECRET=${SERVICE_REALBASE64_64_AUTHSECRET}
|
||||
- DB_CONNECTION_URI=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db:5432/${POSTGRES_DB}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/api/status || exit 1"
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
db-migration:
|
||||
condition: service_completed_successfully
|
||||
redis:
|
||||
image: "redis:7"
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
environment:
|
||||
- ALLOW_EMPTY_PASSWORD=${ALLOW_EMPTY_PASSWORD:-yes}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "redis-cli -h localhost -p 6379 ping"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
db:
|
||||
image: "postgres:14-alpine"
|
||||
volumes:
|
||||
- pg_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-infisical}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
db-migration:
|
||||
exclude_from_hc: true
|
||||
image: "infisical/infisical:latest-postgres"
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
command: "npm run migration:latest"
|
||||
restart: on-failure
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-infisical}
|
||||
- DB_CONNECTION_URI=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db:5432/${POSTGRES_DB:-infisical}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
@@ -1,35 +1,83 @@
|
||||
# ignore: true
|
||||
# documentation: https://invoiceninja.github.io/selfhost.html
|
||||
# slogan: The leading open-source invoicing platform
|
||||
# tags: invoicing, billing, accounting, finance, self-hosted
|
||||
# port: 9000
|
||||
|
||||
services:
|
||||
invoice-ninja:
|
||||
image: invoiceninja/invoiceninja:5
|
||||
environment:
|
||||
- SERVICE_FQDN_INVOICENINJA
|
||||
- APP_ENV=production
|
||||
- APP_ENV=${APP_ENV:-production}
|
||||
- APP_URL=${SERVICE_FQDN_INVOICENINJA}
|
||||
- APP_KEY=${SERVICE_BASE64_INVOICENINJA}
|
||||
- APP_DEBUG=false
|
||||
- REQUIRE_HTTPS=false
|
||||
- PHANTOMJS_PDF_GENERATION=false
|
||||
- PDF_GENERATOR=snappdf
|
||||
- TRUSTED_PROXIES=*
|
||||
- QUEUE_CONNECTION=database
|
||||
- DB_HOST=mysql
|
||||
- DB_PORT=3306
|
||||
- DB_DATABASE=${MYSQL_DATABASE:-invoice_ninja}
|
||||
- DB_USERNAME=${SERVICE_USER_MYSQL}
|
||||
- DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- APP_KEY=base64:${SERVICE_REALBASE64_INVOICENINJA}
|
||||
- APP_DEBUG=${APP_DEBUG:-false}
|
||||
- REQUIRE_HTTPS=${REQUIRE_HTTPS:-false}
|
||||
- PHANTOMJS_PDF_GENERATION=${PHANTOMJS_PDF_GENERATION:-false}
|
||||
- PDF_GENERATOR=${PDF_GENERATOR:-snappdf}
|
||||
- TRUSTED_PROXIES=${TRUSTED_PROXIES:-*}
|
||||
- QUEUE_CONNECTION=${QUEUE_CONNECTION:-database}
|
||||
- IN_USER_EMAIL=${IN_USER_EMAIL:-admin@example.com}
|
||||
- IN_PASSWORD=${SERVICE_PASSWORD_INVOICENINJAUSER}
|
||||
- DB_HOST=${DB_HOST:-mariadb}
|
||||
- DB_PORT=${DB_PORT:-3306}
|
||||
- DB_DATABASE=${DB_DATABASE:-invoiceninja}
|
||||
- DB_USERNAME=$SERVICE_USER_MARIADB
|
||||
- DB_PASSWORD=$SERVICE_PASSWORD_MARIADB
|
||||
healthcheck:
|
||||
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:9000']
|
||||
test: ['CMD', 'echo', 'ok']
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
volumes:
|
||||
- invoice-ninja-public:/var/www/app/public
|
||||
- invoice-ninja-storage:/var/www/app/storage
|
||||
- type: bind
|
||||
source: ./supervisord.conf
|
||||
target: /etc/supervisord.conf
|
||||
content: |
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
pidfile=/tmp/supervisord.pid
|
||||
logfile=/dev/null ; nodaemon will cause logs to go to stdout
|
||||
logfile_maxbytes=0
|
||||
loglevel=info
|
||||
|
||||
[program:php-fpm]
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=php artisan serve --host 0.0.0.0 --port 9000
|
||||
|
||||
[program:scheduler]
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
command=php artisan schedule:work
|
||||
|
||||
[program:queue-worker]
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
autorestart=true
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
numprocs=2
|
||||
command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600
|
||||
|
||||
[eventlistener:shutdown]
|
||||
command=shutdown.sh
|
||||
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
- type: bind
|
||||
source: ./php.ini
|
||||
target: /usr/local/etc/php/php.ini
|
||||
@@ -51,7 +99,6 @@ services:
|
||||
; opcache.jit=1205
|
||||
; opcache.memory_consumption=1024M
|
||||
|
||||
|
||||
post_max_size = 60M
|
||||
upload_max_filesize = 50M
|
||||
memory_limit=512M
|
||||
@@ -78,28 +125,19 @@ services:
|
||||
post_max_size = 60M
|
||||
upload_max_filesize = 50M
|
||||
depends_on:
|
||||
mysql:
|
||||
mariadb:
|
||||
condition: service_healthy
|
||||
mysql:
|
||||
image: mariadb:lts
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
volumes:
|
||||
- mariadb-data:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-invoice_ninja}
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MARIADBROOT
|
||||
- MYSQL_DATABASE=${DB_DATABASE:-invoiceninja}
|
||||
- MYSQL_USER=$SERVICE_USER_MARIADB
|
||||
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MARIADB
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"mysqladmin",
|
||||
"ping",
|
||||
"-h",
|
||||
"127.0.0.1",
|
||||
"-uroot",
|
||||
"-p${SERVICE_PASSWORD_MYSQLROOT}",
|
||||
]
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
volumes:
|
||||
- invoice-ninja-mysql-data:/var/lib/mysql
|
||||
|
||||
18
templates/compose/it-tools.yaml
Normal file
18
templates/compose/it-tools.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
# documentation: https://github.com/corentinth/it-tools
|
||||
# slogan: IT Tools is a self-hosted solution for managing various IT tasks.
|
||||
# tags: it-tools,management,self-hosted
|
||||
# logo: svgs/it-tools.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
it-tools:
|
||||
image: corentinth/it-tools:latest
|
||||
environment:
|
||||
- SERVICE_FQDN_ITTOOLS_80
|
||||
volumes:
|
||||
- it-tools-data:/app/data
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
54
templates/compose/langfuse.yaml
Normal file
54
templates/compose/langfuse.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
# documentation: https://langfuse.com/docs
|
||||
# slogan: Langfuse is an open-source LLM engineering platform that helps teams collaboratively debug, analyze, and iterate on their LLM applications.
|
||||
# tags: ai, qdrant, weaviate, langchain, openai, gpt, llm, lmops, langfuse, llmops, tracing, observation, metrics
|
||||
# logo: svgs/langfuse.png
|
||||
# port: 3000
|
||||
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
pg_data: null
|
||||
|
||||
services:
|
||||
langfuse:
|
||||
image: langfuse/langfuse:2
|
||||
restart: always
|
||||
environment:
|
||||
- SERVICE_FQDN_LANGFUSE_3000
|
||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
||||
- DIRECT_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
||||
- SALT=$SERVICE_PASSWORD_SALT
|
||||
- AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false}
|
||||
- NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000
|
||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
||||
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
|
||||
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
|
||||
- HOSTNAME=0.0.0.0
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- "-q"
|
||||
- "--spider"
|
||||
- "http://127.0.0.1:3000/api/public/health"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
postgres:
|
||||
image: "postgres:16-alpine"
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-langfuse}
|
||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||
volumes:
|
||||
- "pg_data:/var/lib/postgresql/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
174
templates/compose/litellm.yaml
Normal file
174
templates/compose/litellm.yaml
Normal file
@@ -0,0 +1,174 @@
|
||||
# documentation: https://docs.litellm.ai
|
||||
# slogan: Call all LLM APIs using the OpenAI format. Use Bedrock, Azure, OpenAI, Cohere, Anthropic, Ollama, Sagemaker, HuggingFace, Replicate, Groq (100+ LLMs)
|
||||
# tags: ai, qdrant, weaviate, langchain, openai, gpt, llm, lmops, anthropic, cohere, ollama, sagemaker, huggingface, replicate, groq
|
||||
# logo: svgs/litellm.svg
|
||||
# port: 4000
|
||||
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
pg_data: null
|
||||
redis_data: null
|
||||
|
||||
services:
|
||||
litellm:
|
||||
image: "ghcr.io/berriai/litellm-database:main-stable"
|
||||
restart: always
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- SERVICE_FQDN_LITELLM_4000
|
||||
- LITELLM_LOG=ERROR
|
||||
- LITELLM_MODE=PRODUCTION
|
||||
- "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_MASTERKEY}"
|
||||
- "UI_USERNAME=${SERVICE_USER_UI}"
|
||||
- "UI_PASSWORD=${SERVICE_PASSWORD_UI}"
|
||||
- "DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-litellm}"
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- "POSTGRES_USER=${SERVICE_USER_POSTGRES}"
|
||||
- "POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}"
|
||||
- "POSTGRES_DB=${POSTGRES_DB:-litellm}"
|
||||
- "OPENAI_API_KEY=${OPENAI_API_KEY}"
|
||||
- "OPENAI_API_BASE=${OPENAI_API_BASE}"
|
||||
- "ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}"
|
||||
- "ANTHROPIC_API_BASE=${ANTHROPIC_API_BASE}"
|
||||
- "VOYAGE_API_KEY=${VOYAGE_API_KEY}"
|
||||
- "VOYAGE_API_BASE=${VOYAGE_API_BASE}"
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./litellm-config.yaml
|
||||
target: /app/config.yaml
|
||||
content: |
|
||||
general_settings:
|
||||
proxy_batch_write_at: 60
|
||||
|
||||
router_settings:
|
||||
redis_host: os.environ/REDIS_HOST
|
||||
redis_port: os.environ/REDIS_PORT
|
||||
redis_password: os.environ/REDIS_PASSWORD
|
||||
enable_pre_call_check: true
|
||||
|
||||
litellm_settings:
|
||||
set_verbose: false
|
||||
json_logs: true
|
||||
log_raw_request_response: true
|
||||
# turn_off_message_logging: false
|
||||
# redact_user_api_key_info: false
|
||||
service_callback: ["prometheus_system"]
|
||||
drop_params: true
|
||||
# max_budget: 100
|
||||
# budget_duration: 30d
|
||||
num_retries: 3
|
||||
request_timeout: 600
|
||||
telemetry: false
|
||||
cache: true
|
||||
cache_params:
|
||||
type: redis
|
||||
host: os.environ/REDIS_HOST
|
||||
port: os.environ/REDIS_PORT
|
||||
password: os.environ/REDIS_PASSWORD
|
||||
namespace: "litellm_cache"
|
||||
ttl: 600
|
||||
success_callback:
|
||||
# - "langfuse"
|
||||
- "prometheus"
|
||||
failure_callback:
|
||||
# - "langfuse"
|
||||
- "prometheus"
|
||||
model_list:
|
||||
# OpenAI
|
||||
- model_name: gpt-4
|
||||
litellm_params:
|
||||
model: openai/gpt-4
|
||||
api_key: os.environ/OPENAI_API_KEY
|
||||
api_base: os.environ/OPENAI_API_BASE
|
||||
- model_name: gpt-4o
|
||||
litellm_params:
|
||||
model: openai/gpt-4o
|
||||
api_key: os.environ/OPENAI_API_KEY
|
||||
api_base: os.environ/OPENAI_API_BASE
|
||||
- model_name: gpt-4o-mini
|
||||
litellm_params:
|
||||
model: openai/gpt-4o-mini
|
||||
api_key: os.environ/OPENAI_API_KEY
|
||||
api_base: os.environ/OPENAI_API_BASE
|
||||
# Anthropic
|
||||
- model_name: claude-3-haiku
|
||||
litellm_params:
|
||||
model: claude-3-haiku-20240307
|
||||
api_key: "os.environ/ANTHROPIC_API_KEY"
|
||||
api_base: "os.environ/ANTHROPIC_API_BASE"
|
||||
- model_name: claude-3.5-sonnet
|
||||
litellm_params:
|
||||
model: claude-3-5-sonnet-20240620
|
||||
api_key: "os.environ/ANTHROPIC_API_KEY"
|
||||
api_base: "os.environ/ANTHROPIC_API_BASE"
|
||||
# VoyageAI
|
||||
- model_name: voyage-law-2
|
||||
model_info:
|
||||
output_vector_size: 1024
|
||||
litellm_params:
|
||||
model: voyage/voyage-law-2
|
||||
api_key: "os.environ/VOYAGE_API_KEY"
|
||||
api_base: "os.environ/VOYAGE_API_BASE"
|
||||
# rpm: 300
|
||||
# tpm: 1000000
|
||||
- model_name: voyage-multilingual-2
|
||||
model_info:
|
||||
mode: embedding
|
||||
max_tokens: 32000
|
||||
max_input_tokens: 32000
|
||||
output_vector_size: 1024
|
||||
litellm_params:
|
||||
model: voyage/voyage-multilingual-2
|
||||
api_key: "os.environ/VOYAGE_API_KEY"
|
||||
api_base: "os.environ/VOYAGE_API_BASE"
|
||||
input_cost_per_token: 0.00000012
|
||||
output_cost_per_token: 0
|
||||
# rpm: 300
|
||||
# tpm: 1000000
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- python
|
||||
- "-c"
|
||||
- "import requests as r;r.get('http://127.0.0.1:4000/health/liveliness').raise_for_status()"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
command:
|
||||
- "--config"
|
||||
- /app/config.yaml
|
||||
- "--port"
|
||||
- "4000"
|
||||
- "--num_workers"
|
||||
- "8"
|
||||
postgres:
|
||||
image: "postgres:16-alpine"
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-litellm}
|
||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||
volumes:
|
||||
- "pg_data:/var/lib/postgresql/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
33
templates/compose/mailpit.yaml
Normal file
33
templates/compose/mailpit.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
# documentation: https://mailpit.axllent.org/docs/
|
||||
# slogan: Email & SMTP testing tool with API for developers
|
||||
# tags: mailpit,email,testing,smtp
|
||||
# logo: svgs/mailpit.svg
|
||||
# port: 8025
|
||||
|
||||
services:
|
||||
mailpit:
|
||||
image: axllent/mailpit
|
||||
volumes:
|
||||
- "mailpit-data:/data"
|
||||
- type: bind
|
||||
source: ./htpasswd
|
||||
target: /data/htpasswd
|
||||
isDirectory: false
|
||||
content: ""
|
||||
environment:
|
||||
- SERVICE_FQDN_MAILPIT_8025
|
||||
- MP_MAX_MESSAGES=5000
|
||||
- MP_DATABASE=/data/mailpit.db
|
||||
- MP_SMTP_AUTH_ACCEPT_ANY=1
|
||||
- MP_SMTP_AUTH_ALLOW_INSECURE=1
|
||||
- MP_UI_AUTH_FILE=/data/htpasswd
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"/mailpit",
|
||||
"readyz",
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
56
templates/compose/mixpost.yaml
Normal file
56
templates/compose/mixpost.yaml
Normal file
@@ -0,0 +1,56 @@
|
||||
# documentation: https://docs.mixpost.app/lite
|
||||
# slogan: Mixpost is a robust and versatile social media management software, designed to streamline social media operations and enhance content marketing strategies.
|
||||
# tags: social media, marketing, content, management, automation, self-hosted
|
||||
# logo: svgs/mixpost.svg
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
mixpost:
|
||||
image: 'inovector/mixpost:latest'
|
||||
environment:
|
||||
- SERVICE_FQDN_MIXPOST
|
||||
- APP_NAME=Mixpost
|
||||
- APP_KEY=${SERVICE_BASE64_MIXPOST}
|
||||
- APP_DEBUG=false
|
||||
- APP_DOMAIN=${SERVICE_URL_MIXPOST}
|
||||
- APP_URL=${SERVICE_FQDN_MIXPOST}
|
||||
- DB_DATABASE=${MYSQL_DATABASE:-mixpost_db}
|
||||
- DB_USERNAME=${SERVICE_USER_MYSQL}
|
||||
- DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- SSL_EMAIL=${SSL_EMAIL:-user@example.com}
|
||||
volumes:
|
||||
- mixpost-storage:/var/www/html/storage/app
|
||||
- mixpost-logs:/var/www/html/storage/logs
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
mysql:
|
||||
image: 'mysql/mysql-server:8.0'
|
||||
environment:
|
||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-mixpost_db}
|
||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||
volumes:
|
||||
- mixpost-mysql:/var/lib/mysql
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- mysqladmin
|
||||
- ping
|
||||
- '-h'
|
||||
- 127.0.0.1
|
||||
- '-uroot'
|
||||
- '-p${SERVICE_PASSWORD_MYSQLROOT}'
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
redis:
|
||||
image: 'redis:alpine'
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- '--raw'
|
||||
- incr
|
||||
- ping
|
||||
87
templates/compose/prefect.yaml
Normal file
87
templates/compose/prefect.yaml
Normal file
@@ -0,0 +1,87 @@
|
||||
# documentation: https://www.prefect.io/
|
||||
# slogan: Prefect is an orchestration and observability platform that empowers developers to build and scale workflows quickly.
|
||||
# tags: workflow, orchestration, data-pipeline, python, automation, data-processing, data-integration, etl
|
||||
# logo: svgs/prefect.png
|
||||
# port: 4200
|
||||
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
pg_data:
|
||||
|
||||
services:
|
||||
prefect:
|
||||
image: "prefecthq/prefect:3-latest"
|
||||
restart: always
|
||||
depends_on:
|
||||
postgresql:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- SERVICE_FQDN_PREFECT_4200
|
||||
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
|
||||
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- PREFECT_EXPERIMENTAL_WARN=true
|
||||
- PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=true
|
||||
- PREFECT_RUNNER_SERVER_ENABLE=true
|
||||
- PREFECT_DEFAULT_WORK_POOL_NAME=${DEFAULT_POOL_NAME:-default}
|
||||
command:
|
||||
- prefect
|
||||
- server
|
||||
- start
|
||||
- "--host"
|
||||
- 0.0.0.0
|
||||
- "--port"
|
||||
- "4200"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- python
|
||||
- "-c"
|
||||
- "import requests as r;r.get('http://127.0.0.1:4200/api/health').raise_for_status()"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
postgresql:
|
||||
image: "postgres:16-alpine"
|
||||
restart: always
|
||||
volumes:
|
||||
- "pg_data:/var/lib/postgresql/data"
|
||||
environment:
|
||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||
- POSTGRES_DB=${POSTGRES_DB:-prefect}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
agent:
|
||||
image: "prefecthq/prefect:3-python3.12"
|
||||
restart: always
|
||||
depends_on:
|
||||
prefect:
|
||||
condition: service_healthy
|
||||
entrypoint:
|
||||
- /opt/prefect/entrypoint.sh
|
||||
- prefect
|
||||
- worker
|
||||
- start
|
||||
- "--pool=$${DEFAULT_POOL_NAME}"
|
||||
- "--with-healthcheck"
|
||||
- "--name=$${DEFAULT_WORKER_NAME}"
|
||||
- "--limit=$${DEFAULT_POOL_LIMIT}"
|
||||
environment:
|
||||
- PREFECT_API_URL=http://prefect:4200/api
|
||||
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||
- DEFAULT_POOL_NAME=${DEFAULT_POOL_NAME:-default}
|
||||
- DEFAULT_POOL_LIMIT=${DEFAULT_POOL_LIMIT:-1}
|
||||
- DEFAULT_WORKER_NAME=${DEFAULT_WORKER_NAME:-worker1}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- pwd
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
27
templates/compose/qdrant.yaml
Normal file
27
templates/compose/qdrant.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
# documentation: https://qdrant.tech/documentation/
|
||||
# slogan: Qdrant is a vector similarity search engine that provides a production-ready service with a convenient API to store, search, and manage points (i.e. vectors) with an additional payload.
|
||||
# tags: ai, vector-database, semantic-search, machine-learning, bm25, embeddings, llm
|
||||
# logo: svgs/qdrant.png
|
||||
# port: 6333
|
||||
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
qdrant_storage: null
|
||||
|
||||
services:
|
||||
qdrant:
|
||||
image: "qdrant/qdrant:latest"
|
||||
restart: always
|
||||
environment:
|
||||
- SERVICE_FQDN_QDRANT_6333
|
||||
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
|
||||
volumes:
|
||||
- "qdrant_storage:/qdrant/storage"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- bash -c ':> /dev/tcp/127.0.0.1/6333' || exit 1
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
78
templates/compose/searxng.yaml
Normal file
78
templates/compose/searxng.yaml
Normal file
@@ -0,0 +1,78 @@
|
||||
# documentation: https://docs.searxng.org
|
||||
# slogan: SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services.
|
||||
# tags: search, google, engine, images, documents, rss, proxy, news, web, api
|
||||
# logo: svgs/searxng.svg
|
||||
# port: 8080
|
||||
|
||||
version: "3"
|
||||
|
||||
volumes:
|
||||
redis_data: null
|
||||
|
||||
services:
|
||||
searxng:
|
||||
image: searxng/searxng
|
||||
restart: always
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- SERVICE_FQDN_SEARXNG_8080
|
||||
- INSTANCE_NAME=coolify
|
||||
- BASE_URL=${SERVICE_FQDN_SEARXNG_8080}
|
||||
- SEARXNG_URL=${SERVICE_FQDN_SEARXNG_8080}
|
||||
- SEARXNG_BIND_ADDRESS=0.0.0.0
|
||||
- SEARXNG_SECRET=${SERVICE_PASSWORD_SEARXNGSECRET}
|
||||
- SEARXNG_REDIS_URL=redis://redis:6379/0
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- "-q"
|
||||
- "--spider"
|
||||
- "http://127.0.0.1:8080/healthz"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./settings.yml
|
||||
target: /etc/searxng/settings.yml
|
||||
content: |
|
||||
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
|
||||
use_default_settings: true
|
||||
server:
|
||||
limiter: false
|
||||
image_proxy: true
|
||||
search:
|
||||
formats:
|
||||
- html
|
||||
- csv
|
||||
- json
|
||||
- rss
|
||||
ui:
|
||||
static_use_hash: true
|
||||
- type: bind
|
||||
source: ./limiter.toml
|
||||
target: /etc/searxng/limiter.toml
|
||||
content: |
|
||||
# This configuration file updates the default configuration file
|
||||
# See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml
|
||||
|
||||
[botdetection.ip_limit]
|
||||
# activate link_token method in the ip_limit method
|
||||
link_token = true
|
||||
|
||||
redis:
|
||||
image: "redis:7"
|
||||
restart: always
|
||||
volumes:
|
||||
- "redis_data:/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- ping
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
60
templates/compose/strapi.yaml
Normal file
60
templates/compose/strapi.yaml
Normal file
@@ -0,0 +1,60 @@
|
||||
# documentation: https://docs.strapi.io/
|
||||
# slogan: Open-source headless CMS to build powerful APIs with built-in content management.
|
||||
# tags: cms, headless, mysql, api
|
||||
# logo: svgs/strapi.svg
|
||||
# port: 1337
|
||||
|
||||
services:
|
||||
strapi:
|
||||
image: "elestio/strapi-development:latest"
|
||||
environment:
|
||||
- SERVICE_FQDN_STRAPI_1337
|
||||
- DATABASE_CLIENT=postgres
|
||||
- DATABASE_HOST=postgresql
|
||||
- DATABASE_PORT=5432
|
||||
- "DATABASE_NAME=${POSTGRESQL_DATABASE:-strapi}"
|
||||
- DATABASE_USERNAME=$SERVICE_USER_POSTGRESQL
|
||||
- DATABASE_PASSWORD=$SERVICE_PASSWORD_POSTGRESQL
|
||||
- JWT_SECRET=$SERVICE_BASE64_64_SECRET
|
||||
- ADMIN_JWT_SECRET=$SERVICE_BASE64_64_SECRET
|
||||
- APP_KEYS=$SERVICE_BASE64_64_KEY
|
||||
- STRAPI_TELEMETRY_DISABLED=${STRAPI_TELEMETRY_DISABLED:-true}
|
||||
- STRAPI_LICENSE=${STRAPI_LICENSE}
|
||||
- NODE_ENV=${NODE_ENV:-development}
|
||||
- BROWSER=${BROWSER:-true}
|
||||
- STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE=${STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE:-en}
|
||||
- STRAPI_ENFORCE_SOURCEMAPS=${STRAPI_ENFORCE_SOURCEMAPS:-false}
|
||||
- FAST_REFRESH=${FAST_REFRESH:-true}
|
||||
volumes:
|
||||
- "strapi-config:/opt/app/config"
|
||||
- "strapi-src:/opt/app/src"
|
||||
- "strapi-uploads:/opt/app/public/uploads"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- "-q"
|
||||
- "--spider"
|
||||
- "http://127.0.0.1:1337/"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
depends_on:
|
||||
postgresql:
|
||||
condition: service_healthy
|
||||
postgresql:
|
||||
image: "elestio/postgres:latest"
|
||||
environment:
|
||||
- "POSTGRES_DB=${POSTGRESQL_DATABASE:-strapi}"
|
||||
- POSTGRES_USER=$SERVICE_USER_POSTGRESQL
|
||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRESQL
|
||||
- PGDATA=/var/lib/postgresql/data
|
||||
volumes:
|
||||
- "strapi-postgresql-data:/var/lib/postgresql/data"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
24
templates/compose/unstructured.yaml
Normal file
24
templates/compose/unstructured.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
# documentation: https://github.com/Unstructured-IO/unstructured-api?tab=readme-ov-file#--general-pre-processing-pipeline-for-documents
|
||||
# slogan: Unstructured provides a platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning.
|
||||
# tags: workflow, orchestration, data-pipeline, python, data, machine-learning, data-science, nlp, unstructured, ocr, data-extraction
|
||||
# logo: svgs/unstructured.png
|
||||
# port: 8000
|
||||
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
unstructured:
|
||||
image: "downloads.unstructured.io/unstructured-io/unstructured-api:latest"
|
||||
environment:
|
||||
- SERVICE_FQDN_UNSTRUCTURED_8000
|
||||
- "UNSTRUCTURED_API_KEY=${SERVICE_PASSWORD_APIKEY}"
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- "-qO-"
|
||||
- "--spider"
|
||||
- "http://0.0.0.0:8000/healthcheck"
|
||||
interval: 15s
|
||||
timeout: 15s
|
||||
retries: 3
|
||||
50
templates/compose/weaviate.yaml
Normal file
50
templates/compose/weaviate.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
# documentation: https://weaviate.io/developers/weaviate
|
||||
# slogan: Weaviate is an open-source vector database that stores both objects and vectors, allowing for combining vector search with structured filtering.
|
||||
# tags: ai, vector-database, semantic-search, machine-learning, bm25, embeddings, llm
|
||||
# logo: svgs/weaviate.png
|
||||
# port: 8080
|
||||
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
weaviate:
|
||||
image: "cr.weaviate.io/semitechnologies/weaviate:1.26.4"
|
||||
restart: always
|
||||
volumes:
|
||||
- "weaviate_data:/var/lib/weaviate"
|
||||
command:
|
||||
- "--host"
|
||||
- 0.0.0.0
|
||||
- "--port"
|
||||
- "8080"
|
||||
- "--scheme"
|
||||
- http
|
||||
environment:
|
||||
- SERVICE_FQDN_WEAVIATE_8080
|
||||
- DISABLE_TELEMETRY=true
|
||||
- QUERY_DEFAULTS_LIMIT=1000
|
||||
- LOG_LEVEL=info
|
||||
- GOMEMLIMIT=${GOMEMLIMIT:-1024MiB}
|
||||
- GOMAXPROCS=${GOMAXPROCS:-2}
|
||||
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false
|
||||
- AUTHORIZATION_ADMINLIST_USERS=${AUTHORIZATION_ADMINLIST_USERS:-admin@example.com}
|
||||
- AUTHENTICATION_APIKEY_USERS=${AUTHENTICATION_APIKEY_USERS:-admin@example.com}
|
||||
- AUTHENTICATION_APIKEY_ENABLED=true
|
||||
- "AUTHENTICATION_APIKEY_ALLOWED_KEYS=${SERVICE_PASSWORD_APIKEYS}"
|
||||
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
|
||||
- DEFAULT_VECTORIZER_MODULE=none
|
||||
- ENABLE_MODULES=${ENABLE_MODULES:-text2vec-openai,generative-openai,qna-openai}
|
||||
- CLUSTER_HOSTNAME=node1
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- wget
|
||||
- "-q"
|
||||
- "--spider"
|
||||
- "http://localhost:8080/v1/.well-known/ready"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
weaviate_data: null
|
||||
Reference in New Issue
Block a user