以下内容基于:

  • 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

    选择 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 从列表中删除。

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

    在 Domain 填入你指向服务器的域名
    在 Database 选择 MySQL
    在 PHP Verison 选择 PHP-73

  5. 安装 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

    根据提示完成安装。

  6. 配置站点目录及伪静态
    添加完成后编辑添加的站点 > 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; 
    }
  7. 配置定时任务
    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 分钟执行一次的定时任务。
    记得将路径修改成自己的。

  8. 启动队列服务
    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 *
  2. 修改 .env 文件, APP_DEBUG=true ,开启 debug 模式,查看具体报错内容
    每次修改 .env 文件后需要执行以下命令清空缓存

    php artisan config:clear
  3. 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 软妹币,暂时选用这个

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

阅读次数

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

Ruri Shimotsuki 微信支付

微信支付

Ruri Shimotsuki 支付宝

支付宝

Ruri Shimotsuki 贝宝

贝宝