一键安装

通过 curl | bash 一键安装/更新 AI问数系统

通用安装命令

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash

首次安装后,脚本会自动生成 sample.env 模板。请将其复制为 .env 并填入实际配置后重新运行安装命令启动服务。

一行命令更新

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -k

-k 参数自动关闭端口占用进程、备份当前版本(含 conf/ 配置)、下载最新版、重启服务并健康检查(失败自动回滚,含 conf/ 一并恢复)。.env 不被覆盖。默认不覆盖 conf/ 目录。

强制覆盖配置更新(-F)

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -p 8001 -d /opt/teachseek -k -F

-F 参数强制覆盖 conf/ 配置目录(用新版系统配置替换旧配置)。旧 conf 已在备份中保留,可通过 rollback.sh 回滚恢复。.env 不受影响。适用于:新版系统配置变更需要同步到服务器时。

生产环境部署(宝塔 Supervisor)

# Deploy1(端口 16524)
curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -p 16524 -d /opt/teachseek -k -F

# Deploy2(端口 3000)
curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -p 3000 -d /opt/teachseek2 -k -F

生产环境 Deploy1 和 Deploy2 均使用宝塔 Supervisor 模式(默认)。-k 强制关闭端口占用,-F 强制同步新版 conf/ 配置。首次安装时需先配置 .env 后重新运行。无外网时使用离线安装(见下方)。

离线安装(内网/无外网环境)

当服务器无法访问 Release 服务器(ai.seek.ninglon.com)时,可将安装包和脚本手动复制到服务器进行离线安装。安装包不会被删除,可重复使用。

  1. 在有外网的机器上下载安装包和脚本:
    # 下载安装包
    curl -O https://ai.seek.ninglon.com/release/teachseek-v8.0.4-0829-0133.tar.gz
    
    # 下载安装脚本
    curl -O https://ai.seek.ninglon.com/install.sh
  2. 将两个文件复制到目标服务器(U盘、scp、宝塔面板上传等方式)
  3. 在目标服务器上执行离线安装:
    # 生产环境 Deploy1(端口 16524)— 替代在线 curl 命令
    sudo bash install.sh -f teachseek-v8.0.4-0829-0133.tar.gz -p 16524 -d /opt/teachseek -k -F
    
    # 生产环境 Deploy2(端口 3000)— 替代在线 curl 命令
    sudo bash install.sh -f teachseek-v8.0.4-0829-0133.tar.gz -p 3000 -d /opt/teachseek2 -k -F
    
    # 基本离线安装(默认端口 8001)
    sudo bash install.sh -f teachseek-v8.0.4-0829-0133.tar.gz

-f / --file 参数指定本地 tarball 路径,脚本会自动从文件名提取版本号,跳过在线下载,解压后安装。安装包不会被删除,可重复用于安装或回滚。首次安装后需编辑 .env 配置文件,然后重新运行安装命令启动服务。

指定版本安装

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -r v8.0.3-0710-0001

指定端口和安装目录

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -p 8002 -d /opt/teachseek-2

从备用源安装

curl -fsSL https://teachseek.ai.ninglon.com/install.sh | sudo bash -s -- -s r1

使用 -s 参数指定 Release 服务器:r1(Release1)、r2(Release2)、auto(默认,优先 Release2,故障切换到 Release1)。

试运行(不实际执行)

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- --dry-run

安装反馈接收服务

curl -fsSL https://ai.seek.ninglon.com/install.sh | sudo bash -s -- -p 8881 -d /opt/teachseek_feedback

安装后编辑 .env 配置 FEEDBACK_RECEIVER_USERNAME 和 FEEDBACK_RECEIVER_PASSWORD,然后以反馈模式启动:

./teachseek --feedback-only --port 8881

反馈接收服务提供:免认证提交端点(POST /api/feedback/submit)+ 密码登录查看页面(GET /)。CORS 全开,支持跨域提交。

BigStream3.0 大屏安装

智慧教育数据大屏使用独立安装脚本 bigStream3.0_install.sh(与问数系统安装包相互独立)

一键在线安装

curl -fsSL https://ai.seek.ninglon.com/release/bigStream3.0_install.sh | sudo bash

大屏与问数系统共用 Release 发布目录(/release/),版本指针独立为 bigstream-LATEST.md,互不干扰。默认端口 8030,默认安装目录 /opt/bigstream。

生产环境部署(指定端口和目录)

sudo bash bigStream3.0_install.sh -f bigstream-v3.1-0904-0143.tar.gz -p 3000 -d /opt/bigstream_3000 -k -F

-p 指定端口,-d 指定安装目录,-k 强制关闭端口占用进程,-F 强制覆盖 conf/ 摄像头配对目录(.env 不受影响)。默认 supervisor 模式(检测到宝塔面板自动注册宝塔 Supervisor,开机自启、面板可见);-m nohup 可切换为临时验证模式。同机多实例按端口区分进程名(如 bigstream_3000)。

离线安装(内网/无外网环境)

# 有外网机器上下载
curl -O https://ai.seek.ninglon.com/release/bigstream-v3.1-0904-0143.tar.gz
curl -O https://ai.seek.ninglon.com/release/bigStream3.0_install.sh

# 复制到目标服务器后执行(安装包保留,可重复使用)
sudo bash bigStream3.0_install.sh -f bigstream-v3.1-0904-0143.tar.gz -p 3000 -d /opt/bigstream_3000 -k -F

首次安装后编辑安装目录下的 .env 填入 DATABASE_URL(达梦/MySQL 均支持)等配置,重新运行安装命令即完成启动。更新自动备份旧版本(含 conf/),健康检查失败自动回滚。v3.1-0825-0116 起包内自带静态 ffmpeg(RTSP→FLV 转码不再依赖系统 ffmpeg);生产部署需放行『后端服务器 → RTSP 流媒体服务器:554 TCP』,部署后可执行 curl -s -X POST http://<host>:<port>/api/video/diagnose 验证(rtsp_reach 与 ffmpeg 步骤应 passed)。

服务管理与回滚

sudo bash /opt/bigstream_3000/service.sh {start|stop|restart|status|log|health}
sudo bash /opt/bigstream_3000/rollback.sh          # 交互式回滚
sudo bash /opt/bigstream_3000/rollback.sh -l       # 仅列版本

双 Release 服务器

安装脚本支持从两台 Release 服务器下载部署包,默认自动切换

服务器 域名 IP 角色
Release1 teachseek.ai.ninglon.com 8.138.245.105 备用
Release2 ai.seek.ninglon.com 8.130.133.217 主(默认优先)

auto 模式下,脚本先尝试 Release2,连接或下载失败后自动切换到 Release1。使用 -s 参数可手动指定源。

.env 配置文件说明

首次安装自动生成 sample.env 模板,复制为 .env 后填入实际配置

配置流程

  1. 首次安装后,安装目录下会生成 sample.env 模板文件
  2. 复制 sample.env.envcp sample.env .env
  3. 编辑 .env 填入实际的数据库、LLM 等配置
  4. 重新运行安装命令即可启动服务

注意:后续更新不会覆盖已有的 .env 文件,各环境配置独立维护。

配置项说明

配置项 说明 示例
PORT 服务监听端口,安装脚本会读取此值作为默认端口 8001
DATABASE_URL 数据库连接串。支持 MySQL 和达梦 DM8 mysql+pymysql://user:pwd@host:3306/db
JWT_SECRET JWT 认证密钥,请使用随机字符串 your-jwt-secret-key
JWT_EXPIRE_MINUTES JWT 过期时间(分钟) 1440(24小时)
DEFAULT_ADMIN_USERNAME 管理员用户名(首次启动自动创建) admin
DEFAULT_ADMIN_PASSWORD 管理员密码(首次启动自动创建) your-password
LLM_API_KEY 大模型 API 密钥 your-api-key
LLM_BASE_URL 大模型 API 地址 https://api.example.com/v1
LLM_MODEL 模型名称 qwen3.5-27b
CORS_ORIGINS 跨域允许的域名,多个用逗号分隔 https://your-domain.com
LOG_LEVEL 日志级别 INFO
FEEDBACK_RECEIVER_USERNAME 反馈查看器登录用户名(仅 --feedback-only 模式) admin
FEEDBACK_RECEIVER_PASSWORD 反馈查看器登录密码(仅 --feedback-only 模式,请使用高强度密码) your-feedback-password
FEEDBACK_STORAGE_DIR 反馈数据存储目录(空则用 {runtime_dir}/data/feedback) /opt/teachseek_feedback/data/feedback

参数说明

安装脚本支持的命令行参数

参数 全称 说明
-f --file 离线安装:指定本地 tarball 路径,跳过在线下载,安装包不删除
-r --release 指定安装版本号(默认从 LATEST.md 自动获取)
-p --port 指定服务端口(默认从 .env 读取 PORT 变量,再默认 8001)
-d --dir 指定安装目录(默认 /opt/teachseek)
-s --source 指定 Release 服务器:r1(Release1)、r2(Release2)、auto(默认,优先 Release2,故障切换到 Release1)
-k --kill-port 强制关闭占用端口的进程(默认不启用)
-F --force-config 强制覆盖 conf/ 配置目录(用新版系统配置替换旧配置,保留 .env 不动)。默认不覆盖 conf/
-m --mode 部署模式:supervisor(默认)或 nohup
-V --version 显示脚本自身版本号
-n --dry-run 试运行模式,只打印执行步骤不实际操作
-h --help 显示帮助信息

环境要求

部署前请确认服务器满足以下条件

项目 要求 说明
操作系统 统信 UOS / CentOS 7+ / Ubuntu 20+ Linux x86_64
磁盘空间 500MB+ 程序文件 + 日志 + 备份
网络 需访问千问模型 API vLLM 内网或阿里云 API
权限 root(sudo) 安装脚本需 root 权限执行
数据库 MySQL 5.7+ 或 达梦 DM8 根据部署环境选择

安装流程

脚本自动执行以下步骤

  1. 前置检查:验证 root 权限、磁盘空间、curl 可用性
  2. 获取版本号:从 LATEST.md 自动获取最新版本(或使用 -r 指定),支持双源故障切换
  3. 下载部署包:从 Release2 或 Release1 下载通用 tar.gz 包(3 次重试 + 自动切换备用源)
  4. 端口检测:从 .env 读取 PORT,检测占用情况(-k 可强制关闭)
  5. 停止旧服务:Supervisor 模式或 nohup 模式优雅关闭
  6. 备份当前安装:自动备份到 {目录}.bak.{时间戳}(含 conf/ 配置、.env 等全量备份)
  7. 安装文件:解压部署包,.env 不覆盖,conf/ 默认不覆盖(使用 -F 可强制覆盖),sample.env 始终更新
  8. 启动服务:Supervisor(默认)或 nohup 模式
  9. 健康检查:8 次重试,失败自动回滚(含 conf/ 配置一并回滚)