InternetBugs's home

一个分享互联网知识的个人博客

使用golang搭建哔哩哔哩解析服务器

本文部分内容复制借鉴自https://github.com/xishang0128/biliroaming-go-server/blob/main/README_tutorial.md 并在此基础上完善了部分内容
建议使用Debian/Ubuntu进行操作,CentOS可能不受支持(CentOS都停更了,还是别用了,Debian系多香)
本文所有操作请在root用户下执行,如果你的服务器操作系统默认没有提供root用户,请使用以下命令切换到root用户

sudo su

需求

  • 一台服务器(最好位于港澳台,否则的话需要在服务器端使用代理才能解析)
  • 服务器安装好宝塔面板并配置好了Nginx

正式流程

编译服务端更新系统环境
CentOS

yum update -y 

Ubuntu/Debian

apt update && apt upgrade -y 

安装git
CentOS

yum install git -y 

Ubuntu/Debian

apt install git -y

拉取源码

git clone https://github.com/JasonKhew96/biliroaming-go-server.git

下载golang

wget -O go.tar.gz https://go.dev/dl/go1.18.linux-amd64.tar.gz
tar -zxvf go.tar.gz -C /usr/local/bin/

配置临时golang环境变量

export GOROOT=/usr/local/bin/go
export GOPATH=/home/golang
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin

编译服务端

go build

修改配置文件(记得修改监听端口,以免和Nginx监听端口冲突)

mv config.example.yml config.yml
vi config.yml

vi编辑器用法:输入 i 进入编辑模式,使用方向键移动光标,按下esc退出编辑模式,输入 :wq 保存并退出
如果不会的话可以用宝塔面板修改/root/biliroaming-go-server/config.yml
配置文件都有注释,照着自己的意图修改即可,这里就不赘述了
如果遇到不需要的选项,可以在前面加入#注释符注释掉
例如:假如我不需要香港代理功能,那我应该这么改

proxy:
    cn: socks5://127.0.0.1:7890
    #hk: socks5://127.0.0.1:7891
    tw: socks5://127.0.0.1:7892
    th: socks5://127.0.0.1:7893

配置数据库安装并启用PostgreSQL
CentOS

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

Ubuntu/Debian

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql

切换到PostgreSQL用户

sudo -u postgres psql

修改密码,引号内是需要修改的密码,可根据喜好修改,命令最后有分号

ALTER USER postgres WITH PASSWORD 'postgres';

退出PostgreSQL

\q

删除用户postgres的密码

sudo passwd -d postgres

设置用户postgres的密码

sudo -u postgres passwd

此时系统会提示输入新的密码,输入两次密码并回车即可,输入时密码不显示,输入两次之后提示passwd: password updated successfully即修改成功
导入数据库

psql -d postgres -h localhost -p 5432 -U postgres -f /root/biliroaming-go-server/sql/initdb.sql

之后输入你设置的数据库密码,回车,即可
然后回到config.yml文件,修改数据库相关配置

vi config.yml
postgreSQL:  
     host: 'db'  #将db改成127.0.0.1
     user: 'postgres'  
     password: 'password' #这行默认是注释掉的,删除注释,并将password改成上边设置的数据库密码
     # passwordFile: '/run/secrets/db-password' #注释掉这行内容
     dbName: 'postgres'
     port: 5432

之后进行一下试运行

./biliroaming-go-server

显示成功监听xxx端口即为成功,失败的话请自行检查问题
配置守护进程

vi /etc/systemd/system/biliroaming-go-server.service

添加以下内容

[Unit]
Description=哔哩漫游代理服务器
After=network.target
[Service]
ExecStart=/root/biliroaming-go-server/biliroaming-go-server
Restart=always
WorkingDirectory=/root/biliroaming-go-server/
[Install]
WantedBy=multi-user.target

保存后刷新一下

systemctl daemon-reload

启动服务端

systemctl enable biliroaming-go-server.service
systemctl start biliroaming-go-server.service

检查运行状态

systemctl status biliroaming-go-server.service

如果正常运行的话按Ctrl+c退出,出错的话查看下报错,看看是否是哪里没有配置正常
配置反向代理
来到宝塔面板,安装好Nginx,之后来到“网站”选项卡
点击“添加站点”
域名填写你的域名,其他保持默认即可,完成后点击“提交”
之后点开网站的“设置”界面
先进入“SSL”选项卡,为网站添加SSL证书,证书可以使用宝塔面板一键申请,也可以使用阿里云/腾讯云的免费亚洲诚信证书
之后来到“反向代理”选项卡,添加反向代理
代理名称随便填,目标URL填写http://127.0.0.1:“config.yml”里填写的监听端口
其他保持默认,提交即可
配置正常的话即可正常使用
Nginx添加br压缩(可选)
相较于Nginx默认的gzip压缩,br压缩 压缩率更高,可以提高服务器解析速度
来到宝塔面板,在左侧选项卡的[软件商店]中卸载Nginx,注意,一定要先卸载
然后重新安装Nginx,选择[编译安装]
点击[添加自定义模块]
模块名称和描述可以随意填写
模块参数填写如下

--add-module=/www/server/ngx_brotli

然后在[前置脚本]中添加如下代码

cd /www/server
#下载brotli
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
#更新brotli
git submodule update --init

提交后,在刚刚添加的模块旁边的选择框打上勾,提交即可
之后静待Nginx安装完成
安装完成后打开Nginx的设置,来到[配置修改]选项卡
在http段添加以下代码

# brotli   
brotli on;   
brotli_comp_level 6;   
brotli_buffers 16 8k;   
brotli_min_length 20;   
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

最后

若服务器不位于目标番剧解锁所需区域,请使用v2ray等软件配合节点进行代理,考虑到每个人的环境不一样,就不在此传授代理的配置方法了,可以自行查阅v2ray等软件的官方文档
如果不想使用v2ray等软件,也可以在目标番剧解锁所需区域整一台服务器,然后在服务器上搭建Nginx反代,之后修改服务端的反代域名即可

  1. yuu说道:

    博主,我按照您这个方式进行了搭建,没有报错且成功运行了,但无法进行解析,请问该怎么解决

    1. InternetBugs说道:

      服务器的问题吧,最好是加漫游tg频道问

  2. PexEric说道:

    感谢大佬

发表评论

电子邮件地址不会被公开。 必填项已用*标注