以下内容基于:

  • V2board:多用户管理,aaPanel + LNMP + Laravel + React
  • Poseidon :V2Ray 服务端,基于 docker 运行
  • CloudFlare:实现 WebSocket-TLS 模式

#服务器准备
SSH 连接 Linux 服务器,操作系统 CentOS 7
最低配置要求为 1Core/512M RAM

#安装内核加速
推荐使用 bbr plus 。
先安装内核,选择 2,重启后,开启加速,选择 7。

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh

#同步服务器时间

yum -y install ntpdate
timedatectl set-timezone Asia/Shanghai #设置为北京时间
ntpdate time.nist.gov

ntp 常用服务器

NameIPLocation
210.72.145.44210.72.145.44中国(国家授时中心)
ntp.fudan.edu.cn中国(复旦大学)
ntp.api.bz中国(上海 NTP 服务器)
133.100.11.8133.100.11.8日本(福冈大学)
asia.pool.ntp.org台湾(台警大授时中心)
time.windows.com美国(微软公司授时主机)
time-a.nist.gov129.6.15.28NIST,Gaithersburg,Maryland
time-b.nist.gov129.6.15.29NIST,Gaithersburg,Maryland
time-a.timefreq.bldrdoc.gov132.163.4.101NIST,Boulder,Colorado
time-b.timefreq.bldrdoc.gov132.163.4.102NIST,Boulder,Colorado
time-c.timefreq.bldrdoc.gov132.163.4.103NIST,Boulder,Colorado
utcnist.colorado.edu128.138.140.44UniversityofColorado,Boulder
time.nist.gov192.43.244.18NCAR,Boulder,Colorado
time-nw.nist.gov131.107.1.10Microsoft,Redmond,Washington
nist1.symmetricom.com69.25.96.13Symmetricom,SanJose,California
nist1-dc.glassey.com216.200.93.8Abovenet,Virginia
nist1-ny.glassey.com208.184.49.9Abovenet,NewYorkCity
nist1-sj.glassey.com207.126.98.204Abovenet,SanJose,California
nist1.aol-ca.truetime.com207.200.81.113TrueTime,AOLfacility,Sunnyvale,California
nist1.aol-va.truetime.com64.236.96.53TrueTime,AOLfacility,Virginia

#关闭防火墙

systemctl start supervisord
systemctl disable firewalld
systemctl stop firewalld

#域名准备
借助 CloudFlare 实现强制 SSL、CDN 加速、隐藏 IP 地址 blabla

需要注意的配置:

  • DNS 解析,代理状态为 已代理。
  • 您的 SSL/TLS 加密模式为 完全 FULL!

#V2Board 安装
#基于 aaPanel 部署

  1. 安装 aaPanel
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh

安装完成后登陆,进行环境的安装。

选择使用 LNMP 的环境安装方式勾选如下信息:

☑️ Nginx 1.17
☑️ MySQL 5.6
☑️ PHP 7.3

  1. 选择 Fast 快速编译后进行安装。

  2. 安装 Redis
    aaPanel 面板 > App Store > 找到 PHP 7.3 点击 Setting > Install extentions > redis 进行安装。

  3. 解除被禁止的函数
    aaPanel 面板 > App Store > 找到 PHP 7.3 点击 Setting > Disabled functions 将 putenv proc_open pcntl_alarm pcntl_signal 从列表中删除。

添加站点
aaPanel 面板 > Website > Add site。

在 Domain 填入你指向服务器的域名
在 Database 选择 MySQL
在 PHP Verison 选择 PHP-73
  1. 安装 V2Board
    通过 SSH 登录到服务器后访问站点路径如: /www/wwwroot/domain.com 。

以下命令都需要在站点目录进行执行。

# 删除目录下文件
chattr -i .user.ini
rm -rf .htaccess 404.html index.html .user.ini

执行命令从 Github 克隆到当前目录。

git clone https://github.com/v2board/v2board.git ./

执行命令下载 composer.phar 到当前目录。

wget https://getcomposer.org/download/1.9.0/composer.phar

执行命令进行包安装。

php composer.phar install

安装过程中报错或者无法继续安装的请分配 swap,如何分配 swap 请查阅 google。

执行命令安装 V2board

php artisan v2board:install

根据提示完成安装。

  1. 配置站点目录及伪静态
    添加完成后编辑添加的站点 > Site directory > Running directory 选择 /public 保存。

添加完成后编辑添加的站点 > URL rewrite 填入伪静态信息。

location /downloads {
}
location / {  
    try_files $uri $uri/ /index.php$is_args$query_string;  
}
location ~ .*\.(js|css)?$
{
    expires      1h;
    error_log off;
    access_log /dev/null; 
}
  1. 配置定时任务
    aaPanel 面板 > Cron。
在 Type of Task 选择 Shell Script
在 Name of Task 填写 v2board
在 Period 选择 N Minutes 1 Minute
在 Script content 填写 php /www/wwwroot/domain.com/artisan schedule:run

根据上述信息添加每 1 分钟执行一次的定时任务。
记得将路径修改成自己的。

  1. 启动队列服务
    V2board 的邮件系统强依赖队列服务,你想要使用邮件验证及群发邮件必须启动队列服务。
    下面以 aaPanel 中 nodejs 的 PM2 服务来守护队列服务作为演示。

aaPanel 面板 > App Store > Deployment

找到 PM2 Manager 4.2.2 进行安装,安装完成后按照如下填写

在 Project root directory 选择站点目录
在 Startup file name 填写 pm2.yaml
在 project name 填写 v2board

填写后点击 Add 添加即可运行。当然你也可以使用 supervisor 进行守护。

#告别 500 错误

  1. 目录权限问题,检查站点根目录权限,递归 755,保证目录有可写文件的权限
chown -R www:www *
  1. 修改 .env 文件, APP_DEBUG=true ,开启 debug 模式,查看具体报错内容
    每次修改 .env 文件后需要执行以下命令清空缓存
php artisan config:clear
  1. aaPanel 安装 Redis 扩展失败
    如报错
configure: error: C preprocessor “/lib/cpp” fails sanity check

缺少必要的 C++ 库,如下命令重装解决。

yum reinstall glibc-headers gcc-c++ -y

#节点配置

  1. 在 系统配置 > 服务端 界面,设置一个 通讯密钥

  2. 先添加权限组,再添加节点,记录 节点 ID ,协议配置中的 路径

节点地址: 你的代理服务器绑定的域名
TLS: 支持
连接端口: 443
服务端口: 443
传输协议: WebSocket
点击编辑传输协议配置
{
    "path": "/路径"
}

#Poseidon 对接
#安装并启动 Docker/docker-compose

curl -fsSL https://get.docker.com | bash
curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
rm -f `which dc` 
ln -s /usr/local/bin/docker-compose /usr/bin/dc
 
systemctl start docker
service docker start
systemctl enable docker.service
systemctl status docker.service

#安装 v2ray-poseidon

curl -o go.sh -L -s https://raw.githubusercontent.com/ColetteContreras/v2ray-poseidon/master/install-release.sh
sudo bash go.sh # Install latest version of v2ray-poseidon

#修改配置文件

cd /root/v2ray-poseidon/docker/v2board/ws

修改 config.json

"nodeId": // 面板里添加完节点后生成的自增 ID
"webapi": "",//v2board 的域名信息
"token": "", //v2board 和 v2ray-poseidon 的通信密钥

修改 docker-compose.yml

ports:
  - "80:10086" # 把 80 端口 修改掉,避免端口占用报错

#添加站点
aaPanel 添加一个站点,域名就是代理服务器想绑定的域名。

站点配置 Configuration > SSL > Let's Encrypt > 选择 Cloudflare > 配置一下邮箱和 API

站点配置 Configuration > Config

location /路径 # 节点 websocket 配置中的路径
{
    proxy_pass http://127.0.0.1:端口号; # docker-compose.yml 里改掉的 端口号
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_read_timeout 300s;
}

Security > Firewall > 放行上述端口号

#启动 Docker
保持后台运行。

dc up -d

查看一下日志,看看有没有报错。

dc logs

#配置相关
#支付配置
目前支持四种方式,但是都不太理想

  • 支付宝,容易被请喝茶
  • Stripe,很难申请
  • BitpayX,对用户不友好
  • PayTaro,好不容易才找到了注册接口,收费 50 软妹币,暂时选用这个

事实上,只是打算自用,并不打算卖钱,毕竟只有一个节点,呵呵_(:зゝ∠)_

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Maan Xlong 微信支付

微信支付

Maan Xlong 支付宝

支付宝

Maan Xlong 贝宝

贝宝