https://bulianglin.com/archives/air.html
https://v2rayssr.com/reality.html

Xboard面板(基于v2board二次开发):
https://github.com/cedar2025/Xboard

SSPanel面板:
https://github.com/Anankke/SSPanel-UIM/

XrayR:
[https://github.com/XrayR-project/XrayR

Sub-Store:
https://github.com/sub-store-org/Sub-Store

Docker-Compose 部署教程

本文教你如何在命令行使用docker-compose + sqlite来快速部署Xboard
如果你需要使用Mysql,你需要自行处理好Mysql的安装。

部署 (使用docker-compose 2分钟部署)

在此提供Xboard安装、快速体验Xboard的步骤。
使用docker compose + sqlite 快速部署站点(无需安装Mysql以及redis

  1. 安装docker
1
2
3
curl -sSL https://get.docker.com | bash
systemctl enable docker
systemctl start docker
  1. 获取Docker compose 文件
1
2
git clone -b  docker-compose --depth 1 https://github.com/cedar2025/Xboard
cd Xboard
  1. 执行数据库安装命令

    选择 启用sqliteDocker内置的Redis

1
docker compose run -it --rm xboard php artisan xboard:install

执行这条命令之后,会返回你的后台地址和管理员账号密码(你需要记录下来)
你需要执行下面的 启动xborad 步骤之后才能访问后台

  1. 启动Xboard
1
docker compose up -d

安装完成之后即可访问你的站点

  1. 访问站点
    启动之后网站端口默认为7001, 你可以配置nginx反向代理使用80端口

网站地址: http://你的IP:7001/
在此你已经成功部署了, 你可以访问网址体验Xboard的完整功能,

如果你需要使用mysql,请自行安装Mysql后重新部署

更新

  1. 修改版本
1
2
cd Xboard
vi docker-compose.yaml

修改docker-compose.yaml 当中image后面的版本号为你需要的版本
如果为版本为latest 则可以忽略这一步,直接进行第二步

  1. 更新数据库(可以执行多次都是安全的)
1
2
3
4
docker compose pull
docker compose down
docker compose run -it --rm xboard php artisan xboard:update
docker compose up -d

即可更新成功

回滚

此回滚不回滚数据库,是否回滚数据库请查看相关文档

  1. 回退版本
1
vi docker-compose.yaml

修改docker-compose.yaml 当中image后面的版本号为更新前的版本号

  1. 启动
1
docker compose up -d

注意

启用webman后做的任何代码修改都需要重启生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30000"],
"outboundTag": "hk1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30001"],
"outboundTag": "tw1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30002"],
"outboundTag": "jp1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30003"],
"outboundTag": "sg1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30004"],
"outboundTag": "kr1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30005"],
"outboundTag": "us1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30006"],
"outboundTag": "my1"
},
{
"type": "field",
"inboundTag": ["Shadowsocks_0.0.0.0_30007"],
"outboundTag": "ua1"
}
]
}

outbounds

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
[
{
"tag": "IPv4_out",
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"tag": "block"
},
{
"tag": "hk1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "141.91.75.233",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10001
}
]
}
},
{
"tag": "tw1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "61.124.127.25",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10003
}
]
}
},
{
"tag": "jp1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "212.17.195.238",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10003
}
]
}
},
{
"tag": "sg1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "154.11.47.139",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10003
}
]
}
},
{
"tag": "kr1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "141.56.96.109",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 50053
}
]
}
},
{
"tag": "us1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "23.241.137.34",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10001
}
]
}
},
{
"tag": "my1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "103.121.239.214",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10001
}
]
}
},
{
"tag": "ua1",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "92.111.231.47",
"method": "aes-128-gcm",
"password": "e7c42a89-8153-4cb4-bf7c-0a113d2ac6d7",
"port": 10001
}
]
}
}
]

IPV4 与 IPV6设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#### 通过脚本设定 (推荐)
**脚本支持**: IPv4/IPv6 优先级调整; 启用 / 禁用 IPv6

bash <(curl -Lso- https://sh.vps.dance/ip46.sh)

手动 禁用 VPS 的 IPv6 命令

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

如果想重启系统也生效, 执行

echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf

手动 启用 VPS 的 IPv6 命令
重新载入 sysctl 配置
如果重载, 还无效果, 可能要 `reboot` 重启下.

#### 查看 VPS 的 IPv6 信息
输入命令: `ip -6 addr show scope global`
或者 `curl ipv6.ip.sb`

云主机测试

https://github.com/oneclickvirt/ecs?tab=readme-ov-file

IP地址测试

https://github.com/xykt/IPQuality

3XUI

https://github.com/MHSanaei/3x-ui

IP在线地址测试

https://ping.pe/
https://ipinfo.io/