> For the complete documentation index, see [llms.txt](https://wiki.vtx.team/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.vtx.team/servo/server-setup.md).

# 服务端搭建

{% hint style="info" %}
以 Debian11 为例，目前仅支持amd64，arm64架构不支持
{% endhint %}

#### 1、安装 Nginx 和 Git

```sh
apt update -y
apt install nginx git -y
```

#### 2、安装 Docker

```sh
curl -fsSL https://get.docker.com -o get-docker.sh
DRY_RUN=1 sudo sh ./get-docker.sh
```

#### 3、拉取必要文件

```sh
git clone https://github.com/vtxteam/servo.git
```

#### 4、修改多客服账号密码和昵称

进入目录

```sh
cd servo
```

编辑修改 `user.json`

{% hint style="danger" %}
Servo2 镜像起支持 Telegram 群组的 Topics 功能处理和回复消息，一位用户一个 Topic ，请务必参考 [Telegram 客服](/servo/telegram-topics.md) 做完所有步骤
{% endhint %}

{% hint style="info" %}
Telegram 的 `username` 需要和 `UserList` 中的其中一个 `username 相同`（将 Telegram 与网页端某客服绑定），Telegram 会与网页端的该客服同步聊天记录；同时，Telegram 群组支持加入多个 Telegram 用户一起处理消息。
{% endhint %}

```json
{
    "Telegram": {
        "bot_token": "",
        "group_chat_id": -10020555555,
        "username": "support1"
    },
    "UserList": [
        {
            "username": "support1",
            "password": "change_password1",
            "nickname": "Support1"
        },
        {
            "username": "support2",
            "password": "change_password2",
            "nickname": "Support2"
        }
    ]
}
```

> username —— 网页登陆用户名
>
> password —— 网页登陆密码
>
> nickname —— 昵称

#### 5、使用 Docker-compose 部署服务端

```sh
docker compose up -d
```

#### 6、使用 Nginx 反代服务端

新建 Nginx 站点配置文件

```sh
touch /etc/nginx/conf.d/servo.conf
```

填入以下配置，请替换 `your_domain.com`、`/path/to/your/certificate.crt` 和 `/path/to/your/private.key` 为实际的域名和 SSL 证书路径

```nginx
server {
    listen 80;
    server_name your_domain.com;

    # 重定向 HTTP 请求到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    location /ws/ {
        proxy_pass http://localhost:9000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    location / {
        proxy_pass http://localhost:9000;
    }
    
    location ~ ^/web/main$ {
        rewrite ^/web/main$ / permanent;
    }
    
    location ~ ^/web/$ {
        rewrite ^/web/$ / permanent;
    }
}
```

#### 7、修改 Nginx 默认连接数并重载 Nginx

{% code overflow="wrap" %}

```sh
sed -i 's/worker_connections 768;/worker_connections 50000;/g' /etc/nginx/nginx.conf service nginx force-reload
```

{% endcode %}
