Skip to content

Commit 3ce407e

Browse files
committed
deploy
1 parent 0844019 commit 3ce407e

File tree

4 files changed

+124
-2
lines changed

4 files changed

+124
-2
lines changed
File renamed without changes.

install.sh

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
#!/bin/bash
2+
3+
# ==============================================================================
4+
# Telegram QA Bot (telembed) 自动安装与部署脚本
5+
#
6+
# 该脚本会自动下载、配置并以 systemd 服务的形式运行机器人。
7+
# 运行方式:
8+
# curl -sSL https://raw.githubusercontent.com/ooopus/telegramBotEmbed/refs/heads/main/install.sh | sudo bash
9+
# ==============================================================================
10+
11+
set -e # 如果任何命令失败,则立即退出
12+
13+
# --- 配置变量 ---
14+
SERVICE_NAME="telembed"
15+
SERVICE_USER="telembed"
16+
SERVICE_GROUP="telembed"
17+
18+
# 工作目录 (用于存放数据和缓存)
19+
WORK_DIR="/opt/telembed"
20+
# 配置目录 (根据 service 文件中的 XDG_CONFIG_HOME=/opt 和代码逻辑)
21+
CONFIG_DIR_BASE="/opt/telegramBotEmbed"
22+
23+
# 日志目录
24+
LOG_DIR="/var/log/${SERVICE_NAME}"
25+
26+
# 二进制文件下载链接
27+
BINARY_URL="https://github.com/ooopus/telegramBotEmbed/releases/latest/download/telembed-x86_64-unknown-linux-gnu"
28+
# systemd 服务文件下载链接
29+
SERVICE_URL="https://raw.githubusercontent.com/ooopus/telegramBotEmbed/refs/heads/main/telembed.service"
30+
31+
32+
# --- 脚本开始 ---
33+
echo "🚀 开始部署 Telegram QA Bot (${SERVICE_NAME})..."
34+
35+
# 检查是否以 root 权限运行
36+
if [ "$(id -u)" -ne 0 ]; then
37+
echo "❌ 请以 root 权限运行此脚本 (例如: sudo ./install.sh)" >&2
38+
exit 1
39+
fi
40+
41+
# 1. 停止可能正在运行的旧服务
42+
echo "🔄 正在停止旧的服务 (如果存在)..."
43+
systemctl stop "${SERVICE_NAME}.service" > /dev/null 2>&1 || true
44+
45+
# 2. 创建用户和组 (如果不存在)
46+
echo "👤 正在创建系统用户和组 '${SERVICE_USER}'..."
47+
if ! getent group "${SERVICE_GROUP}" > /dev/null; then
48+
groupadd --system "${SERVICE_GROUP}"
49+
echo " - 用户组 '${SERVICE_GROUP}' 已创建。"
50+
else
51+
echo " - 用户组 '${SERVICE_GROUP}' 已存在。"
52+
fi
53+
54+
if ! id "${SERVICE_USER}" > /dev/null 2>&1; then
55+
useradd --system --no-create-home --shell /bin/false -g "${SERVICE_GROUP}" "${SERVICE_USER}"
56+
echo " - 系统用户 '${SERVICE_USER}' 已创建。"
57+
else
58+
echo " - 系统用户 '${SERVICE_USER}' 已存在。"
59+
fi
60+
61+
# 3. 创建目录结构
62+
echo "📁 正在创建目录..."
63+
mkdir -p "${WORK_DIR}/data"
64+
mkdir -p "${WORK_DIR}/cache"
65+
mkdir -p "${CONFIG_DIR_BASE}"
66+
mkdir -p "${LOG_DIR}"
67+
echo " - 工作目录: ${WORK_DIR}"
68+
echo " - 配置目录: ${CONFIG_DIR_BASE}"
69+
echo " - 日志目录: ${LOG_DIR}"
70+
71+
# 4. 下载并安装二进制文件
72+
echo "🔽 正在从 GitHub 下载二进制文件..."
73+
curl -L "${BINARY_URL}" -o "/usr/local/bin/${SERVICE_NAME}"
74+
chmod +x "/usr/local/bin/${SERVICE_NAME}"
75+
echo " - 二进制文件已安装到 /usr/local/bin/${SERVICE_NAME}"
76+
77+
# 5. 下载并安装 systemd 服务文件
78+
echo "⚙️ 正在安装 systemd 服务文件..."
79+
curl -L "${SERVICE_URL}" -o "/etc/systemd/system/${SERVICE_NAME}.service"
80+
echo " - 服务文件已安装到 /etc/systemd/system/${SERVICE_NAME}.service"
81+
82+
QA_FILE_PATH="${WORK_DIR}/data/QA.json"
83+
if [ ! -f "${QA_FILE_PATH}" ]; then
84+
echo "📚 正在创建空的知识库文件 ${QA_FILE_PATH}..."
85+
echo "[]" > "${QA_FILE_PATH}"
86+
else
87+
echo " - 找到已存在的知识库文件,将不会覆盖。"
88+
fi
89+
90+
# 6. 设置权限
91+
echo "🔐 正在设置目录和文件权限..."
92+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${WORK_DIR}"
93+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${CONFIG_DIR_BASE}"
94+
chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "${LOG_DIR}"
95+
chmod -R 750 "${WORK_DIR}"
96+
chmod -R 750 "${CONFIG_DIR_BASE}"
97+
chmod -R 750 "${LOG_DIR}"
98+
echo " - 权限设置完成。"
99+
100+
# 7. 重载并启动服务
101+
echo "🚀 正在启动服务..."
102+
systemctl daemon-reload
103+
systemctl enable "${SERVICE_NAME}.service"
104+
systemctl start "${SERVICE_NAME}.service"
105+
106+
echo ""
107+
echo "✅ 部署完成!"
108+
echo ""
109+
echo "--- 🚨 重要提示 🚨 ---"
110+
echo "机器人服务已启动,但您必须编辑配置文件才能让它正常工作:"
111+
echo "👉 sudo nano ${CONFIG_FILE_PATH}"
112+
echo ""
113+
echo "请在文件中填入您的 [telegram] token, super_admins 和 [embedding] api_keys。"
114+
echo "修改并保存后,请使用以下命令重启服务:"
115+
echo "👉 sudo systemctl restart ${SERVICE_NAME}"
116+
echo "--------------------------"
117+
echo ""
118+
echo "您可以使用以下命令检查服务状态:"
119+
echo " sudo systemctl status ${SERVICE_NAME}"
120+
echo ""
121+
echo "查看实时日志:"
122+
echo " sudo journalctl -u ${SERVICE_NAME} -f"

src/config/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ pub fn load_user_config() -> Result<Config> {
4646

4747
fn get_config_directory() -> Result<PathBuf> {
4848
if let Some(config_dir) = dirs::config_dir() {
49-
Ok(config_dir.join("telegramBotEmbed"))
49+
Ok(config_dir.join("telembed"))
5050
} else {
5151
anyhow::bail!("Could not determine config directory")
5252
}

src/config/types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub struct QaConfig {
130130
impl Default for QaConfig {
131131
fn default() -> Self {
132132
Self {
133-
qa_json_path: "docs/QA.json".to_string(),
133+
qa_json_path: "data/QA.json".to_string(),
134134
}
135135
}
136136
}

0 commit comments

Comments
 (0)