# 📦 Linux系统如何手动部署MaiMbot麦麦？

## 准备工作

- 一台联网的Linux设备（本教程以Ubuntu/Debian系为例）
- QQ小号（QQ框架的使用可能导致qq被风控，严重（小概率）可能会导致账号封禁，强烈不推荐使用大号）
- 可用的大模型API
- 一个AI助手，网上随便搜一家打开来用都行，可以帮你解决一些不懂的问题
- 以下内容假设你对Linux系统有一定的了解，如果觉得难以理解，请直接用Windows系统部署[Windows系统部署指南](./manual_deploy_windows.md)或[使用Windows一键包部署](https://github.com/MaiM-with-u/MaiBot/releases/tag/EasyInstall-windows)

## 你需要知道什么？

- 如何正确向AI助手提问，来学习新知识

- Python是什么

- Python的虚拟环境是什么？如何创建虚拟环境

- 命令行是什么

- 数据库是什么？如何安装并启动MongoDB

- 如何运行一个QQ机器人，以及NapCat框架是什么

---

## 环境配置

### 1️⃣ **确认Python版本**

需确保Python版本为3.9及以上

```bash
python --version
# 或
python3 --version
```

如果版本低于3.9，请更新Python版本，目前建议使用python3.12

```bash
# Debian
sudo apt update
sudo apt install python3.12
# Ubuntu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12

# 执行完以上命令后，建议在执行时将python3指向python3.12
# 更新替代方案，设置 python3.12 为默认的 python3 版本:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
sudo update-alternatives --config python3
```
建议再执行以下命令，使后续运行命令中的`python3`等同于`python`
```bash
sudo apt install python-is-python3
```

### 2️⃣ **创建虚拟环境**

```bash
# 方法1：使用venv(推荐)
python3 -m venv maimbot
source maimbot/bin/activate  # 激活环境

# 方法2：使用conda（需先安装Miniconda）
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create -n maimbot python=3.9
conda activate maimbot

# 通过以上方法创建并进入虚拟环境后，再执行以下命令

# 安装依赖（任选一种环境）
pip install -r requirements.txt
```

---

## 数据库配置

### 3️⃣ **安装并启动MongoDB**

- 安装与启动：请参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux)，进入后选择自己的系统版本即可
- 默认连接本地27017端口

---

## NapCat配置

### 4️⃣ **安装NapCat框架**

- 执行NapCat的Linux一键使用脚本(支持Ubuntu 20+/Debian 10+/Centos9) 
```bash
curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh
```
- 如果你不想使用Napcat的脚本安装，可参考[Napcat-Linux手动安装](https://www.napcat.wiki/guide/boot/Shell-Linux-SemiAuto)

-  使用QQ小号登录，添加反向WS地址: `ws://127.0.0.1:8080/onebot/v11/ws`

---

## 配置文件设置

### 5️⃣ **配置文件设置，让麦麦Bot正常工作**
可先运行一次
```bash
# 在项目目录下操作
nb run
# 或
python3 bot.py
```
之后你就可以找到`.env.prod`和`bot_config.toml`这两个文件了
关于文件内容的配置请参考：
- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程，适合初次使用的猫娘
- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明，适合有经验的用户

---

## 启动机器人

### 6️⃣ **启动麦麦机器人**

```bash
# 在项目目录下操作
nb run
# 或
python3 bot.py
```

---

### 7️⃣ **使用systemctl管理maimbot**

使用以下命令添加服务文件：

```bash
sudo nano /etc/systemd/system/maimbot.service
```

输入以下内容：

`<maimbot_directory>`：你的maimbot目录

`<venv_directory>`：你的venv环境（就是上文创建环境后，执行的代码`source maimbot/bin/activate`中source后面的路径的绝对路径）

```ini
[Unit]
Description=MaiMbot 麦麦
After=network.target mongod.service

[Service]
Type=simple
WorkingDirectory=<maimbot_directory>
ExecStart=<venv_directory>/python3 bot.py
ExecStop=/bin/kill -2 $MAINPID
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target
```

输入以下命令重新加载systemd：

```bash
sudo systemctl daemon-reload
```

启动并设置开机自启：

```bash
sudo systemctl start maimbot
sudo systemctl enable maimbot
```

输入以下命令查看日志：

```bash
sudo journalctl -xeu maimbot
```

---

## **其他组件(可选)**

- 直接运行 knowledge.py生成知识库

---

## 常见问题

🔧 权限问题：在命令前加`sudo`  
🔌 端口占用：使用`sudo lsof -i :8080`查看端口占用  
🛡️ 防火墙：确保8080/27017端口开放  

```bash
sudo ufw allow 8080/tcp
sudo ufw allow 27017/tcp
```
