#!/bin/bash set -e echo "=== 正在初始化挂载盘目录 ===" mkdir -p /data/db mkdir -p /data/uploads mkdir -p /data/images mkdir -p /data/logs # 处理意外断电/Space睡眠产生的残留锁文件 if [ -f /data/db/mongod.lock ]; then echo "检测到遗留的 mongod.lock 文件,正在修复数据库..." mongod --dbpath /data/db --repair || true rm -f /data/db/mongod.lock fi echo "=== 启动内置 MongoDB 服务 ===" mongod --dbpath /data/db --bind_ip 127.0.0.1 --logpath /data/logs/mongod.log --fork echo "等待 MongoDB 就绪..." until mongosh --quiet --eval "db.adminCommand('ping')" > /dev/null 2>&1; do sleep 1 done echo "MongoDB 启动成功!" # 将 LibreChat 的上传及静态资源目录链接至 /data 挂载盘 rm -rf /app/uploads && ln -s /data/uploads /app/uploads rm -rf /app/client/public/images && ln -s /data/images /app/client/public/images # 如果根目录下没有 librechat.yaml,创建一个最基础的空配置文件,避免日志报错 if [ ! -f /app/librechat.yaml ]; then echo "version: 1.3.16" > /app/librechat.yaml echo "cache: true" >> /app/librechat.yaml fi # ================= 关键环境变量配置 ================= export MONGO_URI="mongodb://127.0.0.1:27017/LibreChat" export PORT=7860 export HOST=0.0.0.0 export SEARCH=false # 1. 开启注册与邮箱登录(解决没有注册按钮的问题) export ALLOW_REGISTRATION=true export ALLOW_EMAIL_LOGIN=true # 2. 告诉调度器这是单进程副本(消除日志里的 schedules 报错) export SCHEDULES_SINGLE_PROCESS=true # 3. 密钥配置 export JWT_SECRET="${JWT_SECRET:-librechat_secret_hf_random_key_1}" export JWT_REFRESH_SECRET="${JWT_REFRESH_SECRET:-librechat_secret_hf_random_key_2}" export CREDS_KEY="${CREDS_KEY:-f3429676ef4827051df4d8a24e9cb72b947c61f2802f5a0446b76aa9bb969796}" export CREDS_IV="${CREDS_IV:-e47854737d97cb8a72b64ef44197e42d}" echo "=== 启动 LibreChat 服务 ===" exec npm run backend