Merge branch 'next' into patch-1

This commit is contained in:
Alexander G.
2024-10-05 10:21:47 +03:00
committed by GitHub
36 changed files with 1057 additions and 103 deletions

View 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}"

View 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

View 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

View File

@@ -2,28 +2,29 @@
# 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=${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}
- DB_HOST=${DB_HOST:-mariadb}
- DB_PORT=${DB_PORT:-3306}
- DB_DATABASE=${DB_DATABASE:-invoiceninja}
- DB_USERNAME=$SERVICE_USER_INVOICENINJA
- DB_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:9000']
test: ['CMD', 'echo', 'ok']
interval: 5s
timeout: 20s
retries: 10
@@ -78,28 +79,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_ROOT
- MYSQL_DATABASE=${DB_DATABASE:-invoiceninja}
- MYSQL_USER=$SERVICE_USER_INVOICENINJA
- MYSQL_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA
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

View 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

View 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

View 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

View 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

View 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

View 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

View 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