# XNode 服务安装和使用指南

## 📋 目录

- [安装步骤](#安装步骤)
- [服务管理](#服务管理)
- [配置文件](#配置文件)
- [故障排查](#故障排查)
- [卸载服务](#卸载服务)

## 安装步骤

### 1. 上传文件到服务器

将以下文件上传到服务器：
- `xnode` (可执行文件)
- `xnode.service` (服务文件)
- `install-service.sh` (安装脚本，可选)

### 2. 使用安装脚本（推荐）

```bash
# 赋予执行权限
chmod +x install-service.sh

# 运行安装脚本（需要 root 权限）
sudo ./install-service.sh
```

### 3. 手动安装

#### 3.1 复制可执行文件

```bash
sudo cp xnode /usr/local/bin/
sudo chmod +x /usr/local/bin/xnode
```

#### 3.2 创建配置文件

配置文件会放在**脚本所在目录**（安装脚本会自动处理）。

```bash
# 配置文件位置：脚本所在目录/config.json
# 例如：如果脚本在 /opt/xnode/release/，配置文件在 /opt/xnode/release/config.json
nano config.json
```

配置文件示例（包含 WHMCS 同步配置）：

```json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "whmcs": {
    "enabled": true,
    "baseURL": "https://your-whmcs-domain.com/modules/addons/xray_admin/api.php",
    "token": "your-api-token",
    "pullInterval": "5m",
    "requestTimeout": "10s",
    "retry": {
      "count": 3,
      "backoff": "5s"
    },
    "nodes": [
      {
        "id": 1,
        "inboundTags": ["inbound-tag-1"],
        "cleanup": true
      }
    ],
    "trafficReport": {
      "enabled": true,
      "interval": "10m"
    }
  }
}
```

#### 3.4 安装服务文件

```bash
sudo cp xnode.service /etc/systemd/system/
sudo chmod 644 /etc/systemd/system/xnode.service
```

#### 3.5 重新加载 systemd

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

#### 3.6 启用服务（开机自启）

```bash
sudo systemctl enable xnode.service
```

## 服务管理命令

### 启动服务

```bash
sudo systemctl start xnode
```

### 停止服务

```bash
sudo systemctl stop xnode
```

### 重启服务

```bash
sudo systemctl restart xnode
```

### 查看状态

```bash
sudo systemctl status xnode
```

### 查看日志

```bash
# 实时查看日志
sudo journalctl -u xnode -f

# 查看最近 100 行日志
sudo journalctl -u xnode -n 100

# 查看今天的日志
sudo journalctl -u xnode --since today
```

### 禁用开机自启

```bash
sudo systemctl disable xnode
```

## 配置文件说明

### 服务文件路径
- `/etc/systemd/system/xnode.service`

### 配置文件路径
- 配置文件位于**脚本所在目录**下的 `config.json`
- 例如：如果脚本在 `/opt/xnode/release/`，配置文件在 `/opt/xnode/release/config.json`

### 可执行文件路径
- `/usr/local/bin/xnode`

## 故障排查

### 1. 服务无法启动

检查配置文件是否正确：
```bash
# 配置文件在脚本所在目录
sudo /usr/local/bin/xnode run -config /path/to/script/config.json -test
```

### 2. 查看详细错误信息

```bash
sudo journalctl -u xnode -n 50 --no-pager
```

### 3. 检查文件权限

```bash
# 检查可执行文件权限
ls -l /usr/local/bin/xnode

# 检查配置文件权限（配置文件在脚本所在目录）
ls -l /path/to/script/config.json
```

### 4. 检查端口占用

```bash
sudo netstat -tlnp | grep xray
```

## 安全建议

1. 服务以 `nobody` 用户运行，降低权限
2. 配置文件权限设置为 644，只有 root 可写
3. 定期更新 xray-node 二进制文件
4. 使用防火墙限制访问

## 卸载服务

```bash
# 停止并禁用服务
sudo systemctl stop xnode
sudo systemctl disable xnode

# 删除服务文件
sudo rm /etc/systemd/system/xnode.service

# 重新加载 systemd
sudo systemctl daemon-reload

# 删除文件（可选）
sudo rm /usr/local/bin/xnode
# 配置文件在脚本目录，根据需要删除
# rm /path/to/script/config.json
```

## 相关文档

- [主文档](README.md) - 快速开始指南
- [完全自动化安装](README-AUTO.md) - 完全自动化安装指南
- [证书管理文档](README-CERT.md) - SSL 证书申请和管理
- [证书自动续期](README-RENEW.md) - SSL 证书自动续期
- [多域名配置](README-MULTI-DOMAIN.md) - 多域名配置指南
- [配置说明文档](README-CONFIG.md) - 配置文件详细说明

