mirror of
https://github.com/Dokploy/templates.git
synced 2026-06-15 20:25:24 +02:00
feat: add LibreChat template
This commit is contained in:
110
blueprints/librechat/docker-compose.yml
Normal file
110
blueprints/librechat/docker-compose.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
# LibreChat Docker Compose for Dokploy Template
|
||||
# Setting up authentication: "npm run create-user", refer to https://www.librechat.ai/docs/configuration/authentication
|
||||
|
||||
services:
|
||||
librechat:
|
||||
image: ghcr.io/danny-avila/librechat-dev:latest
|
||||
restart: always
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rag_api
|
||||
environment:
|
||||
# Server Configuration
|
||||
- HOST=0.0.0.0
|
||||
- PORT=${PORT:-3080}
|
||||
# Domain Configuration
|
||||
- DOMAIN_CLIENT=${DOMAIN_CLIENT}
|
||||
- DOMAIN_SERVER=${DOMAIN_SERVER}
|
||||
# Database and Search Configuration
|
||||
- MONGO_URI=mongodb://mongodb:27017/LibreChat
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- SEARCH=true
|
||||
- NO_INDEX=true
|
||||
- MEILI_NO_ANALYTICS=true
|
||||
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
|
||||
# Security & Sessions
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
|
||||
- CREDS_KEY=${CREDS_KEY}
|
||||
- CREDS_IV=${CREDS_IV}
|
||||
- RAG_PORT=${RAG_PORT:-8000}
|
||||
- RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
|
||||
# API Keys and Secrets
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||
- OPENROUTER_KEY=${OPENROUTER_KEY}
|
||||
- GOOGLE_KEY=${GOOGLE_KEY}
|
||||
- ENDPOINTS=google,openAI,assistants,azureOpenAI,anthropic
|
||||
# ... Additional Endpoints
|
||||
# UI
|
||||
- APP_TITLE=${APP_TITLE:-LibreChat}
|
||||
- CUSTOM_FOOTER=${CUSTOM_FOOTER:-Made with ❤️ by LibreChat}
|
||||
- ALLOW_EMAIL_LOGIN=${ALLOW_EMAIL_LOGIN:-true}
|
||||
- ALLOW_SOCIAL_LOGIN=${ALLOW_SOCIAL_LOGIN:-false}
|
||||
- ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-false}
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ../files/librechat.yaml
|
||||
target: /app/librechat.yaml
|
||||
- librechat_data:/app/client/public/images
|
||||
- librechat_data:/app/uploads
|
||||
- librechat_data:/app/logs
|
||||
|
||||
mongodb:
|
||||
image: mongo
|
||||
restart: always
|
||||
volumes:
|
||||
- mongo_data:/data/db
|
||||
command: mongod --noauth
|
||||
|
||||
meilisearch:
|
||||
image: getmeili/meilisearch:v1.12.3
|
||||
restart: always
|
||||
environment:
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- MEILI_NO_ANALYTICS=true
|
||||
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
|
||||
volumes:
|
||||
- meili_data:/meili_data
|
||||
|
||||
vectordb:
|
||||
image: pgvector/pgvector:0.8.0-pg15-trixie
|
||||
environment:
|
||||
- POSTGRES_DB=${POSTGRES_DB:-mydatabase}
|
||||
- POSTGRES_USER=${POSTGRES_USER:-myuser}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-mypassword}
|
||||
restart: always
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
rag_api:
|
||||
image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest
|
||||
environment:
|
||||
- DB_HOST=vectordb
|
||||
- VECTOR_DB_TYPE=pgvector
|
||||
- POSTGRES_DB=${POSTGRES_DB:-mydatabase}
|
||||
- POSTGRES_USER=${POSTGRES_USER:-myuser}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-mypassword}
|
||||
- RAG_PORT=${RAG_PORT:-8000}
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- RAG_OPENAI_API_KEY=${RAG_OPENAI_API_KEY}
|
||||
- GOOGLE_KEY=${GOOGLE_KEY}
|
||||
- RAG_GOOGLE_API_KEY=${RAG_GOOGLE_API_KEY}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- COLLECTION_NAME=${COLLECTION_NAME:-librechat_collection}
|
||||
- CHUNK_SIZE=${CHUNK_SIZE:-1500}
|
||||
- CHUNK_OVERLAP=${CHUNK_OVERLAP:-100}
|
||||
- EMBEDDINGS_PROVIDER=${EMBEDDINGS_PROVIDER:-openai}
|
||||
- EMBEDDINGS_MODEL=${EMBEDDINGS_MODEL:-text-embedding-3-small}
|
||||
- DEBUG_RAG_API=false
|
||||
- DEBUG_PGVECTOR_QUERIES=false
|
||||
- CONSOLE_JSON=false
|
||||
restart: always
|
||||
depends_on:
|
||||
- vectordb
|
||||
|
||||
volumes:
|
||||
mongo_data:
|
||||
meili_data:
|
||||
postgres_data:
|
||||
librechat_data:
|
||||
BIN
blueprints/librechat/librechat.png
Normal file
BIN
blueprints/librechat/librechat.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
93
blueprints/librechat/template.toml
Normal file
93
blueprints/librechat/template.toml
Normal file
@@ -0,0 +1,93 @@
|
||||
[variables]
|
||||
# Domain Configuration
|
||||
main_domain = "${domain}"
|
||||
|
||||
# Security & Authentication
|
||||
jwt_secret = "${password:64}"
|
||||
jwt_refresh_secret = "${password:64}"
|
||||
creds_key = "f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0"
|
||||
creds_iv = "e2341419ec3dd3d19b13a1a87fafcbfb"
|
||||
meili_master_key = "${password:32}"
|
||||
|
||||
# Database Configuration
|
||||
mongo_password = "${password:16}"
|
||||
postgresql_password = "${password:16}"
|
||||
|
||||
[config]
|
||||
version = "1.0.0"
|
||||
# Main service domain mapping
|
||||
[[config.domains]]
|
||||
serviceName = "librechat"
|
||||
port = 3080
|
||||
host = "${main_domain}"
|
||||
|
||||
[config.env]
|
||||
# Basic Configuration
|
||||
HOST="0.0.0.0"
|
||||
PORT="3080"
|
||||
DOMAIN_CLIENT="https://${main_domain}"
|
||||
DOMAIN_SERVER="https://${main_domain}"
|
||||
|
||||
# Search Configuration
|
||||
MEILI_MASTER_KEY="${meili_master_key}"
|
||||
|
||||
# Security
|
||||
JWT_SECRET="${jwt_secret}"
|
||||
JWT_REFRESH_SECRET="${jwt_refresh_secret}"
|
||||
CREDS_KEY="${creds_key}"
|
||||
CREDS_IV="${creds_iv}"
|
||||
|
||||
# API Keys
|
||||
OPENAI_API_KEY=""
|
||||
ANTHROPIC_API_KEY=""
|
||||
GOOGLE_KEY=""
|
||||
OPENROUTER_KEY=""
|
||||
|
||||
# Database
|
||||
POSTGRES_DB="librechat_db"
|
||||
POSTGRES_USER="librechat_user"
|
||||
POSTGRES_PASSWORD="${postgresql_password}"
|
||||
|
||||
# Security & Sessions
|
||||
|
||||
# User Interface
|
||||
APP_TITLE="LibreChat"
|
||||
CUSTOM_FOOTER="Made with ❤️ by LibreChat"
|
||||
ALLOW_EMAIL_LOGIN="true"
|
||||
ALLOW_REGISTRATION="false"
|
||||
ALLOW_SOCIAL_LOGIN="false"
|
||||
|
||||
# RAG
|
||||
RAG_OPENAI_API_KEY=""
|
||||
RAG_GOOGLE_API_KEY=""
|
||||
EMBEDDINGS_PROVIDER="openai"
|
||||
EMBEDDINGS_MODEL="text-embedding-3-small"
|
||||
|
||||
CHUNK_SIZE=1500
|
||||
CHUNK_OVERLAP=100
|
||||
|
||||
|
||||
|
||||
[[config.mounts]]
|
||||
filePath = "librechat.yaml"
|
||||
content = """
|
||||
### librechat.yaml configs ###
|
||||
|
||||
version: 1.2.8
|
||||
cache: true
|
||||
endpoints:
|
||||
custom:
|
||||
- name: "OpenRouter"
|
||||
apiKey: "${OPENROUTER_KEY}"
|
||||
baseURL: "https://openrouter.ai/api/v1"
|
||||
models:
|
||||
default: ["meta-llama/llama-3.3-70b-instruct:free"]
|
||||
fetch: true
|
||||
titleConvo: true
|
||||
titleModel: "current_model"
|
||||
summarize: false
|
||||
summaryModel: "current_model"
|
||||
forcePrompt: false
|
||||
dropParams: ["stop"]
|
||||
modelDisplayLabel: "OpenRouter"
|
||||
"""
|
||||
20
meta.json
20
meta.json
@@ -3261,6 +3261,26 @@
|
||||
"productivity"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "librechat",
|
||||
"name": "LibreChat",
|
||||
"version": "latest",
|
||||
"description": "LibreChat is the ultimate open-source app for all your AI conversations, fully customizable and compatible with any AI provider (Openai, Ollama, Google etc.) — all in one sleek interface.",
|
||||
"logo": "librechat.png",
|
||||
"links": {
|
||||
"github": "https://github.com/danny-avila/librechat",
|
||||
"website": "https://librechat.ai",
|
||||
"docs": "https://docs.librechat.ai"
|
||||
},
|
||||
"tags": [
|
||||
"ai",
|
||||
"chatbot",
|
||||
"llm",
|
||||
"MIT-license",
|
||||
"BYOK",
|
||||
"generative-ai"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "libredesk",
|
||||
"name": "Libredesk",
|
||||
|
||||
Reference in New Issue
Block a user