commit 695bed03c4e5135740dfb4b0eacf1ad27158aa1c Author: pidan <273612724@qq.com> Date: Wed Aug 5 17:12:58 2026 +0800 Initial commit: knowledge base diff --git a/01-服务器配置.md b/01-服务器配置.md new file mode 100644 index 0000000..8c0090f --- /dev/null +++ b/01-服务器配置.md @@ -0,0 +1,47 @@ +# 服务器配置 + +## 基本信息 + +| 项目 | 值 | +|------|-----| +| 平台 | 阿里云轻量应用服务器 | +| 地域 | 中国香港 | +| 实例名 | Docker-xszn | +| 实例ID | d97779334f2b4a81a3b6cf626a377c65 | +| 公网IP | `8.210.128.95` | +| 私网IP | `172.19.48.250` | +| 配置 | 2核2G 40G ESSD | +| 镜像 | Docker 26.1.3 | +| 系统 | Alibaba Cloud Linux | +| 到期 | 2027年8月5日 | +| 月费 | ~39元 | + +## SSH 连接 + +### 本地 SSH Key +``` +~/.ssh/lobe_server (RSA 2048) +``` + +### 连接命令 +```bash +ssh -i ~/.ssh/lobe_server root@8.210.128.95 +``` + +## 防火墙规则 + +| 端口 | 协议 | 用途 | +|------|------|------| +| 22 | TCP | SSH | +| 80 | TCP | HTTP → Nginx | +| 443 | TCP | HTTPS → Nginx | +| 3210 | TCP | LobeHub 内部端口(不对外) | + +## 域名 + +| 项目 | 值 | +|------|-----| +| 域名 | `suyushi.top` | +| 注册商 | Namesilo | +| DNS A 记录 | `@` → `8.210.128.95` | +| DNS CNAME | `www` → `suyushi.top` | diff --git a/02-LobeHub部署流程.md b/02-LobeHub部署流程.md new file mode 100644 index 0000000..0791b52 --- /dev/null +++ b/02-LobeHub部署流程.md @@ -0,0 +1,106 @@ +# LobeHub Docker 部署流程 + +## 部署日期 +2026-08-05 + +## 目录结构 +``` +/lobehub/ +├── docker-compose.yml +├── .env +├── bucket.config.json +├── searxng-settings.yml +└── data/ # 持久化数据(Postgres、Redis、RustFS) +``` + +## 安装步骤 + +### 1. 下载配置 +```bash +mkdir /lobehub && cd /lobehub +curl -O https://raw.githubusercontent.com/lobehub/lobehub/HEAD/docker-compose/deploy/docker-compose.yml +curl -O https://raw.githubusercontent.com/lobehub/lobehub/HEAD/docker-compose/deploy/.env.example +mv .env.example .env +``` + +### 2. 修改 .env 关键配置 +```bash +# 域名 +APP_URL=https://suyushi.top + +# 端口(内部使用 3210) +LOBE_PORT=3210 + +# 安全密钥(必须用 openssl rand -base64 32 生成) +KEY_VAULTS_SECRET=<随机生成> +AUTH_SECRET=<随机生成> + +# 数据库密码 +POSTGRES_PASSWORD=<你设的密码> +``` + +### 3. 修复 rustfs-init 依赖 +rustfs-init 容器因缺少 bucket.config.json 会失败,修改 docker-compose.yml 将 rustfs-init 的 condition 从 `service_completed_successfully` 改为 `service_started`: +```bash +sed -i '/rustfs-init:/,/condition: service_completed_successfully/{s/condition: service_completed_successfully/condition: service_started/}' docker-compose.yml +``` + +### 4. 启动 +```bash +docker compose up -d +``` + +## 核心服务 + +| 服务 | 容器名 | 端口 | 说明 | +|------|------|------|------| +| LobeHub | lobehub | 3210(内部) | Web 应用主程序 | +| Postgres | lobe-postgres | 5432 | 数据库(ParadeDB + pgvector + pg_search) | +| Redis | lobe-redis | 6379 | 缓存和会话 | +| RustFS | lobe-rustfs | 9000 | S3 兼容对象存储 | +| SearXNG | lobe-searxng | 8080 | 隐私搜索引擎 | + +## AI 模型配置 + +只启用 DeepSeek V4 Flash,禁用其他所有提供商: + +```bash +# .env 配置 +DEEPSEEK_API_KEY=sk-xxxxxxxx +DEEPSEEK_PROXY_URL=https://api.deepseek.com/v1 +OPENAI_API_KEY=sk-xxxxxxxx +OPENAI_PROXY_URL=https://api.deepseek.com/v1 +OPENAI_MODEL_LIST=-all,+deepseek-v4-flash=DeepSeek V4 Flash<131072:fc> + +# 禁用其他提供商 +ENABLED_OPENAI=1 +ENABLED_ANTHROPIC=0 +ENABLED_GOOGLE=0 +... (所有其他 ENABLED_*=0) + +# 禁用模型市场 +FEATURE_FLAGS=-market,-welcome_suggest +``` + +> **注意:** DeepSeek API 兼容 OpenAI 格式,所以通过 OPENAI 通道接入,但实际调用的是 DeepSeek。 + +## 常用管理命令 + +```bash +cd /lobehub + +# 查看所有容器状态 +docker compose ps + +# 查看 lobe 日志 +docker compose logs lobe | tail -50 + +# 重启 lobe +docker compose restart lobe + +# 完全重建 lobe(.env 修改后必须用这个) +docker compose down lobe && docker compose up -d lobe + +# 查看全部日志 +docker compose logs 2>&1 | tail -100 +``` diff --git a/03-HTTPS配置.md b/03-HTTPS配置.md new file mode 100644 index 0000000..9e164f5 --- /dev/null +++ b/03-HTTPS配置.md @@ -0,0 +1,65 @@ +# HTTPS + Nginx 配置 + +## 架构 + +``` +浏览器 (https://suyushi.top:443) + → Nginx (端口 80/443) + → LobeHub 容器 (内部 127.0.0.1:3210) +``` + +## Nginx 安装 + +```bash +yum install -y nginx +``` + +## Nginx 配置 + +文件路径:`/etc/nginx/conf.d/lobehub.conf` + +```nginx +server { + listen 80; + server_name suyushi.top www.suyushi.top; + location / { + proxy_pass http://127.0.0.1:3210; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +## Let's Encrypt SSL 证书 + +### 安装 Certbot +```bash +yum install -y certbot python3-certbot-nginx +``` + +### 签发证书 +```bash +certbot --nginx -d suyushi.top -d www.suyushi.top --non-interactive --agree-tos --email panghusys2025@gmail.com --redirect +``` + +> 证书自动续期已配置,90天有效,到期前自动更新 + +## 启动 Nginx 自启 + +```bash +systemctl enable nginx +``` + +## 端口冲突处理 + +如果 nginx 起不来报 `Address already in use:80`: +```bash +fuser -k 80/tcp # 杀掉占用端口的进程 +systemctl start nginx +``` diff --git a/04-环境变量和注意事项.md b/04-环境变量和注意事项.md new file mode 100644 index 0000000..ca002c7 --- /dev/null +++ b/04-环境变量和注意事项.md @@ -0,0 +1,84 @@ +# 环境变量和注意事项 + +## 当前环境变量清单(/lobehub/.env) + +### 核心域名 +``` +APP_URL=https://suyushi.top +INTERNAL_APP_URL=http://localhost:3210 +LOBE_PORT=3210 +``` + +### 安全密钥 +``` +KEY_VAULTS_SECRET= +AUTH_SECRET= +``` + +### 数据库 +``` +POSTGRES_PASSWORD=<密码> +LOBE_DB_NAME=lobechat +DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME} +``` + +### AI 模型 +``` +DEEPSEEK_API_KEY=sk-b2788f9928e64162911a9be0141acd2e +DEEPSEEK_PROXY_URL=https://api.deepseek.com/v1 +OPENAI_API_KEY=sk-b2788f9928e64162911a9be0141acd2e +OPENAI_PROXY_URL=https://api.deepseek.com/v1 +OPENAI_MODEL_LIST=-all,+deepseek-v4-flash=DeepSeek V4 Flash<131072:fc> +``` + +### 提供商开关 +``` +ENABLED_OPENAI=1 +其他所有 ENABLED_* = 0 +``` + +### 界面 +``` +FEATURE_FLAGS=-market,-welcome_suggest +``` + +## 踩坑记录 + +| 坑 | 原因 | 解决 | +|------|------|------| +| `.env` 修改后不生效 | `docker compose restart` 不重新读 .env | 用 `docker compose down lobe && docker compose up -d lobe` | +| KEY_VAULTS_SECRET 报错 | 手动填的字符串不合法 | 必须用 `openssl rand -base64 32` 生成 | +| rustfs-init 失败 | 缺少 bucket.config.json | 改 docker-compose.yml 跳过该依赖 | +| nginx 端口 80 被占 | lobe 之前占用了 80 | `fuser -k 80/tcp` 杀进程 | +| APP_URL=https 重定向到 HTTPS | lobe 把 HTTP 请求重定向到 HTTPS | 先设 HTTP,配完 nginx + SSL 再改回 HTTPS | +| SearXNG 反复重启 | 配置问题 | 不影响核心功能,可忽略 | +| 夸克浏览器打不开 | 浏览器兼容性 | 用 Chrome/Safari | + +## DNS 管理 + +注册商:Namesilo +API Key:`b53438acc2344d7ccc8a2e9e312a9e0e766f59c46badde7abdf572c7bf15a09e` + +### DNS 列表 API +```bash +curl "https://www.namesilo.com/api/dnsListRecords?version=1&type=json&key=&domain=suyushi.top" +``` + +### 添加记录 +```bash +curl "https://www.namesilo.com/api/dnsAddRecord?version=1&type=json&key=&domain=suyushi.top&rrtype=A&rrhost=&rrvalue=8.210.128.95&rrttl=3600" +``` + +### 删除记录 +```bash +curl "https://www.namesilo.com/api/dnsDeleteRecord?version=1&type=json&key=&domain=suyushi.top&rrid=" +``` + +## 月度费用 + +| 项目 | 月费 | +|------|------| +| 阿里云轻量香港服务器 | ~39元 | +| 域名 suyushi.top | ~2元(年摊) | +| DeepSeek API | ~30-50元 | +| **合计** | **~70-90元** | diff --git a/05-服务器加固.md b/05-服务器加固.md new file mode 100644 index 0000000..d3c1458 --- /dev/null +++ b/05-服务器加固.md @@ -0,0 +1,85 @@ +# 服务器加固(2026-08-05) + +## 1. Swap 交换空间 + +**原因:** 2G 内存没有 Swap,内存爆了直接 OOM 杀进程。 + +```bash +fallocate -l 2G /swapfile +chmod 600 /swapfile +mkswap /swapfile +swapon /swapfile +echo '/swapfile none swap sw 0 0' >> /etc/fstab +``` + +**验证:** `swapon --show` → `/swapfile file 2G` + +## 2. 停止 SearXNG + +**原因:** 不用搜索功能,容器每分钟重启一次浪费 CPU。 + +```bash +cd /lobehub +docker compose stop searxng +docker compose rm -f searxng +``` + +> 注意:不要运行 `docker compose up -d`(会重建 SearXNG),单服务用 `docker compose up -d lobe` + +## 3. 开机自启 + +创建 `/etc/systemd/system/lobehub.service`: + +```ini +[Unit] +Description=LobeHub Docker Stack +Requires=docker.service +After=docker.service + +[Service] +Type=oneshot +RemainAfterExit=yes +WorkingDirectory=/lobehub +ExecStart=/usr/bin/docker compose up -d lobe postgresql redis rustfs +ExecStop=/usr/bin/docker compose stop + +[Install] +WantedBy=multi-user.target +``` + +```bash +systemctl daemon-reload +systemctl enable lobehub docker nginx +``` + +## 4. 每日自动备份 + +脚本位置:`/lobehub/backup.sh` + +```bash +#!/bin/bash +DB_PASS=$(grep POSTGRES_PASSWORD /lobehub/.env | cut -d= -f2) +DATE=$(date +%Y%m%d_%H%M%S) +FILE=/lobehub/backups/lobehub_$DATE.sql.gz +docker compose -f /lobehub/docker-compose.yml exec -T postgresql pg_dump -U postgres lobechat | gzip > $FILE +find /lobehub/backups -name '*.sql.gz' -mtime +7 -delete +echo "Backup: $FILE ($(du -h $FILE | cut -f1))" +``` + +Cron 任务(每天凌晨 3 点): +``` +0 3 * * * /lobehub/backup.sh >> /lobehub/backups/backup.log 2>&1 +``` + +备份目录:`/lobehub/backups/`,保留最近 7 天。 + +## 最终状态 + +| 项目 | 值 | +|------|-----| +| 内存 | 1.0G/1.8G + 2.0G Swap | +| 磁盘 | 9.2G/40G (25%) | +| 容器数 | 4(lobehub, postgres, redis, rustfs) | +| SearXNG | 已停止删除 | +| 自启 | Docker + Nginx + LobeHub 全部 enabled | +| 备份 | 每日凌晨 3 点,保留 7 天 | diff --git a/README.md b/README.md new file mode 100644 index 0000000..552c959 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# 部署运维文档 + +suyushi.top 全线部署运维记录。 + +## 文档 + +| 文件 | 内容 | +|:--|:--| +| `01-服务器配置.md` | 阿里云轻量香港、SSH、域名 | +| `02-LobeHub部署流程.md` | Docker Compose 四步部署 | +| `03-HTTPS配置.md` | Nginx + Let's Encrypt SSL | +| `04-环境变量和注意事项.md` | .env 配置 + 踩坑 | +| `05-服务器加固.md` | Swap、自启、备份 |