feat: add more Agent services & easytier
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Global Registry Prefix (optional)
|
||||
# GLOBAL_REGISTRY=
|
||||
|
||||
# Service Versions
|
||||
LIBRECHAT_VERSION=v0.8.4
|
||||
MONGODB_VERSION=8.0
|
||||
MEILISEARCH_VERSION=v1.12.8
|
||||
|
||||
# Timezone
|
||||
TZ=UTC
|
||||
|
||||
# Host port for the LibreChat web UI
|
||||
LIBRECHAT_PORT_OVERRIDE=3080
|
||||
|
||||
# Security Secrets (CHANGEME: generate with: openssl rand -hex 32)
|
||||
JWT_SECRET=changeme_jwt_secret_please_change_CHANGEME
|
||||
JWT_REFRESH_SECRET=changeme_jwt_refresh_secret_CHANGEME
|
||||
MEILI_MASTER_KEY=changeme_meili_master_key_CHANGEME
|
||||
|
||||
# Encryption Keys
|
||||
# CREDS_KEY must be exactly 32 characters
|
||||
CREDS_KEY=changeme_creds_key_32_chars_only
|
||||
# CREDS_IV must be exactly 16 characters
|
||||
CREDS_IV=changeme_iv_16ch
|
||||
|
||||
# Registration
|
||||
ALLOW_REGISTRATION=true
|
||||
ALLOW_SOCIAL_LOGIN=false
|
||||
|
||||
# LLM Provider API Keys (optional; configure via UI or here)
|
||||
# OPENAI_API_KEY=sk-...
|
||||
# ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
# Resource Limits - LibreChat
|
||||
LIBRECHAT_CPU_LIMIT=2
|
||||
LIBRECHAT_MEMORY_LIMIT=2G
|
||||
LIBRECHAT_CPU_RESERVATION=0.5
|
||||
LIBRECHAT_MEMORY_RESERVATION=512M
|
||||
|
||||
# Resource Limits - MongoDB
|
||||
MONGODB_CPU_LIMIT=1
|
||||
MONGODB_MEMORY_LIMIT=1G
|
||||
MONGODB_CPU_RESERVATION=0.25
|
||||
MONGODB_MEMORY_RESERVATION=256M
|
||||
|
||||
# Resource Limits - Meilisearch
|
||||
MEILISEARCH_CPU_LIMIT=0.5
|
||||
MEILISEARCH_MEMORY_LIMIT=512M
|
||||
MEILISEARCH_CPU_RESERVATION=0.1
|
||||
MEILISEARCH_MEMORY_RESERVATION=128M
|
||||
@@ -0,0 +1,82 @@
|
||||
# LibreChat
|
||||
|
||||
[English](./README.md) | [中文](./README.zh.md)
|
||||
|
||||
Quick start: <https://docs.librechat.ai>.
|
||||
|
||||
This service deploys LibreChat, an open-source AI chat platform that supports OpenAI, Anthropic, Google, Ollama, and many other providers in a single unified interface with conversation history, file uploads, code execution, and multi-user support.
|
||||
|
||||
## Services
|
||||
|
||||
- **librechat**: The LibreChat web application (Node.js).
|
||||
- **mongodb**: MongoDB database for conversation and user data.
|
||||
- **meilisearch**: Full-text search engine for message indexing.
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Copy `.env.example` to `.env`:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. Update the secrets in `.env` (generate with `openssl rand -hex 32`):
|
||||
|
||||
```
|
||||
JWT_SECRET, JWT_REFRESH_SECRET, MEILI_MASTER_KEY, CREDS_KEY, CREDS_IV
|
||||
```
|
||||
|
||||
3. Start the services:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. Open `http://localhost:3080` and register the first user account.
|
||||
|
||||
## Core Environment Variables
|
||||
|
||||
| Variable | Description | Default |
|
||||
| --------------------- | -------------------------------------------------------- | ---------------------------- |
|
||||
| `LIBRECHAT_VERSION` | Image version | `v0.8.4` |
|
||||
| `LIBRECHAT_PORT_OVERRIDE` | Host port for the web UI | `3080` |
|
||||
| `JWT_SECRET` | JWT signing secret (min 32 chars) — **CHANGEME** | placeholder |
|
||||
| `JWT_REFRESH_SECRET` | JWT refresh signing secret — **CHANGEME** | placeholder |
|
||||
| `MEILI_MASTER_KEY` | Meilisearch master key — **CHANGEME** | placeholder |
|
||||
| `CREDS_KEY` | Encryption key for stored credentials (exactly 32 chars) | placeholder |
|
||||
| `CREDS_IV` | Encryption IV (exactly 16 chars) | placeholder |
|
||||
| `ALLOW_REGISTRATION` | Allow new user registration | `true` |
|
||||
| `OPENAI_API_KEY` | OpenAI API key (optional; can also configure in UI) | *(empty)* |
|
||||
| `ANTHROPIC_API_KEY` | Anthropic API key (optional) | *(empty)* |
|
||||
|
||||
## Volumes
|
||||
|
||||
- `librechat_images`: User-uploaded images served by the web UI.
|
||||
- `librechat_logs`: Application log files.
|
||||
- `librechat_mongo_data`: MongoDB data persistence.
|
||||
- `librechat_meilisearch_data`: Meilisearch index data.
|
||||
|
||||
## Ports
|
||||
|
||||
- **3080**: LibreChat web UI
|
||||
|
||||
## Security Notes
|
||||
|
||||
- Generate all secrets before any external exposure: `openssl rand -hex 32`
|
||||
- `CREDS_KEY` and `CREDS_IV` encrypt stored API keys — losing them makes stored credentials unrecoverable.
|
||||
- Set `ALLOW_REGISTRATION=false` after creating admin accounts to lock down signups.
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
| Service | CPU Limit | Memory Limit |
|
||||
| ------------ | --------- | ------------ |
|
||||
| librechat | 2 | 2 GB |
|
||||
| mongodb | 1 | 1 GB |
|
||||
| meilisearch | 0.5 | 512 MB |
|
||||
|
||||
Total recommended: **4+ GB RAM**.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [LibreChat Docs](https://docs.librechat.ai)
|
||||
- [GitHub](https://github.com/danny-avila/LibreChat)
|
||||
@@ -0,0 +1,82 @@
|
||||
# LibreChat
|
||||
|
||||
[English](./README.md) | [中文](./README.zh.md)
|
||||
|
||||
快速开始:<https://docs.librechat.ai>。
|
||||
|
||||
此服务用于部署 LibreChat,一个开源 AI 对话平台,在单一统一界面中支持 OpenAI、Anthropic、Google、Ollama 等众多提供商,具备对话历史、文件上传、代码执行和多用户支持。
|
||||
|
||||
## 服务
|
||||
|
||||
- **librechat**:LibreChat Web 应用(Node.js)。
|
||||
- **mongodb**:用于存储对话和用户数据的 MongoDB 数据库。
|
||||
- **meilisearch**:用于消息索引的全文搜索引擎。
|
||||
|
||||
## 快速开始
|
||||
|
||||
1. 将 `.env.example` 复制为 `.env`:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. 更新 `.env` 中的密钥(使用 `openssl rand -hex 32` 生成):
|
||||
|
||||
```
|
||||
JWT_SECRET、JWT_REFRESH_SECRET、MEILI_MASTER_KEY、CREDS_KEY、CREDS_IV
|
||||
```
|
||||
|
||||
3. 启动服务:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. 打开 `http://localhost:3080`,注册第一个用户账号。
|
||||
|
||||
## 核心环境变量
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
| ------------------------ | ------------------------------------------------------- | -------- |
|
||||
| `LIBRECHAT_VERSION` | 镜像版本 | `v0.8.4` |
|
||||
| `LIBRECHAT_PORT_OVERRIDE`| Web UI 宿主机端口 | `3080` |
|
||||
| `JWT_SECRET` | JWT 签名密钥(至少 32 字符)——**请修改** | 占位符 |
|
||||
| `JWT_REFRESH_SECRET` | JWT 刷新签名密钥——**请修改** | 占位符 |
|
||||
| `MEILI_MASTER_KEY` | Meilisearch 主密钥——**请修改** | 占位符 |
|
||||
| `CREDS_KEY` | 存储凭证的加密密钥(恰好 32 字符) | 占位符 |
|
||||
| `CREDS_IV` | 加密 IV(恰好 16 字符) | 占位符 |
|
||||
| `ALLOW_REGISTRATION` | 允许新用户注册 | `true` |
|
||||
| `OPENAI_API_KEY` | OpenAI API Key(可选;也可在 UI 中配置) | *(空)* |
|
||||
| `ANTHROPIC_API_KEY` | Anthropic API Key(可选) | *(空)* |
|
||||
|
||||
## 数据卷
|
||||
|
||||
- `librechat_images`:用户上传的图片,由 Web UI 提供服务。
|
||||
- `librechat_logs`:应用日志文件。
|
||||
- `librechat_mongo_data`:MongoDB 数据持久化。
|
||||
- `librechat_meilisearch_data`:Meilisearch 索引数据。
|
||||
|
||||
## 端口
|
||||
|
||||
- **3080**:LibreChat Web UI
|
||||
|
||||
## 安全说明
|
||||
|
||||
- 在对外暴露之前,请生成所有密钥:`openssl rand -hex 32`。
|
||||
- `CREDS_KEY` 和 `CREDS_IV` 用于加密存储的 API Key——丢失后存储的凭证将无法恢复。
|
||||
- 创建管理员账号后,将 `ALLOW_REGISTRATION` 设为 `false` 以禁止新用户注册。
|
||||
|
||||
## 资源需求
|
||||
|
||||
| 服务 | CPU 限制 | 内存限制 |
|
||||
| ----------- | -------- | -------- |
|
||||
| librechat | 2 | 2 GB |
|
||||
| mongodb | 1 | 1 GB |
|
||||
| meilisearch | 0.5 | 512 MB |
|
||||
|
||||
推荐总计:**4+ GB RAM**。
|
||||
|
||||
## 文档
|
||||
|
||||
- [LibreChat 文档](https://docs.librechat.ai)
|
||||
- [GitHub](https://github.com/danny-avila/LibreChat)
|
||||
@@ -0,0 +1,108 @@
|
||||
# Make sure to change the secret placeholders before exposing this stack externally.
|
||||
# Fields marked with CHANGEME must be updated for any non-local deployment.
|
||||
|
||||
x-defaults: &defaults
|
||||
restart: unless-stopped
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 100m
|
||||
max-file: '3'
|
||||
|
||||
services:
|
||||
librechat:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}librechat/librechat:${LIBRECHAT_VERSION:-v0.8.4}
|
||||
depends_on:
|
||||
mongodb:
|
||||
condition: service_healthy
|
||||
meilisearch:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- '${LIBRECHAT_PORT_OVERRIDE:-3080}:3080'
|
||||
volumes:
|
||||
- librechat_images:/app/client/public/images
|
||||
- librechat_logs:/app/api/logs
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- MONGO_URI=mongodb://mongodb:27017/LibreChat
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY:-changeme_meili_master_key_CHANGEME}
|
||||
- JWT_SECRET=${JWT_SECRET:-changeme_jwt_secret_please_change_CHANGEME}
|
||||
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET:-changeme_jwt_refresh_secret_CHANGEME}
|
||||
- CREDS_KEY=${CREDS_KEY:-changeme_creds_key_32_chars_only}
|
||||
- CREDS_IV=${CREDS_IV:-changeme_iv_16ch}
|
||||
- ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-true}
|
||||
- ALLOW_SOCIAL_LOGIN=${ALLOW_SOCIAL_LOGIN:-false}
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- node
|
||||
- -e
|
||||
- "require('http').get('http://localhost:3080/health',res=>process.exit(res.statusCode===200?0:1)).on('error',()=>process.exit(1))"
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 40s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${LIBRECHAT_CPU_LIMIT:-2}
|
||||
memory: ${LIBRECHAT_MEMORY_LIMIT:-2G}
|
||||
reservations:
|
||||
cpus: ${LIBRECHAT_CPU_RESERVATION:-0.5}
|
||||
memory: ${LIBRECHAT_MEMORY_RESERVATION:-512M}
|
||||
|
||||
mongodb:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}mongo:${MONGODB_VERSION:-8.0}
|
||||
volumes:
|
||||
- librechat_mongo_data:/data/db
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
healthcheck:
|
||||
test: [CMD, mongosh, --eval, "db.adminCommand('ping')"]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 20s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${MONGODB_CPU_LIMIT:-1}
|
||||
memory: ${MONGODB_MEMORY_LIMIT:-1G}
|
||||
reservations:
|
||||
cpus: ${MONGODB_CPU_RESERVATION:-0.25}
|
||||
memory: ${MONGODB_MEMORY_RESERVATION:-256M}
|
||||
|
||||
meilisearch:
|
||||
<<: *defaults
|
||||
image: ${GLOBAL_REGISTRY:-}getmeili/meilisearch:${MEILISEARCH_VERSION:-v1.12.8}
|
||||
volumes:
|
||||
- librechat_meilisearch_data:/meili_data
|
||||
environment:
|
||||
- TZ=${TZ:-UTC}
|
||||
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY:-changeme_meili_master_key_CHANGEME}
|
||||
- MEILI_NO_ANALYTICS=true
|
||||
healthcheck:
|
||||
test: [CMD-SHELL, "curl -sf http://localhost:7700/health || exit 1"]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: ${MEILISEARCH_CPU_LIMIT:-0.5}
|
||||
memory: ${MEILISEARCH_MEMORY_LIMIT:-512M}
|
||||
reservations:
|
||||
cpus: ${MEILISEARCH_CPU_RESERVATION:-0.1}
|
||||
memory: ${MEILISEARCH_MEMORY_RESERVATION:-128M}
|
||||
|
||||
volumes:
|
||||
librechat_images:
|
||||
librechat_logs:
|
||||
librechat_mongo_data:
|
||||
librechat_meilisearch_data:
|
||||
Reference in New Issue
Block a user