前言
呜呜呜没想到我也变成月更博主了。。。这一个月里我都在折腾别的项目,如HexImg、HexAeroGlass、HexStudio(虽说bug满天飞),根本没有好好的打理下博客。
但前几天,我在唐人云上看到了一款性价比极高的IPV6主机,一月3元,遂买下尝试。
但首先就碰到了第一个挫折:家里的路由器和光猫都太老了,不支持访问IPV6。最终用手机流量访问到了主机,结果由于IP太烂了,连宝塔面板和1Panel的安装包都下载不下来。于是百般周折使用Cloudflare Warp使服务器使用Cloudflare的IPV4成功下载下来,并用Cloudflare Tunnel绑定了域名,使我可以通过IPV4访问1Panel。
但紧接着我又部署Artalk,依旧照葫芦画瓢用二进制部署、Cloudflare Tunnel连接,结果不知道是不是Cloudflare Tunnel的原因,图片能正常上传却访问404,最后用我超牛的脑子的帮助下用Nginx-light+Cloudflare Tunnel成功修复了这个问题。
看到这里你可能会问:问什么不直接用Nginx-light反而不断的使用Cloudflare Tunnel?因为这样不用暴露端口(严谨的说只用暴露SSH连接的端口),更安全。本片教程会多使用&&这样的命令,这样你只需要复制完整,一条一条慢慢来就可以成功。前提是你需要IPV6服务器、一个Cloudflare账户且开通免费的Zero Trust且账户下有域名。
本教程里1Panel通过Cloudflare Tunnel反代之前都需要使用IPV6网络连接本地终端,你可以打开移动网络开启热点供电脑使用;反代1Panel之后可以使用1Panel自带的终端,可以用IPV4访问。

本教程的前提是你需要一台安装Debian 12或11系统的IPV6服务器、一个Cloudflare账户且开通免费的Zero Trust且账户下有域名,如果你恰好满足,教程正式开始。
一、通过Warp获得IPv4出口
运行下面这条命令:
sudo -i wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && sudo -i bash menu.sh
运行后,在菜单中输入 2 ,用简体中文。
接下来,选择** “为 IPv6 only 添加 WARP IPv4 网络接口” **。
然后等加载完选择ipv4优先,一是因为各大工具对ipv6兼容还不太好,ipv4优先可以减免绝大多数问题;二是因为我这台服务器的ipv6太垃圾了,向外访问都是困难。
脚本执行后输出示例:
已成功获取 WARP Free 网络, 工作模式: 全局
IPv4: (Cloudflare的ipv4地址) 香港 Cloudflare, Inc.
IPv6: (你服务器的ipv6地址) 香港 Cloudie Limited
常用管理命令
| 命令 | 作用 |
|---|---|
warp o | 临时开关WARP |
warp s 4 | 切到IPv4优先 |
warp s 6 | 切到IPv6优先 |
warp | 查看当前状态 |
这里做个了解即可,因为前面我们已经用脚本进行配置了。
踩坑记录
如果你遇到了一些报错,可以来这里看一下解决方法,这些都是我真实踩坑解决的。
报错1:WARP软件源GPG密钥错误
执行apt update时报错:
W: GPG error: https://pkg.cloudflareclient.com bookworm InRelease:
NO_PUBKEY 6E2DD2174FA1C3BA
解决方案:
只需导入Cloudflare Warp的gpg即可,一条一条执行:
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
apt-get update
报错2:gpg命令不存在
如果执行了报错1的代码报这个错,就说明你gpg未安装导致无法导入密钥,需先安装:
apt install -y gnupg
二、安装1Panel
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"
选择简体中文。我建议不要安装Docker,除非你内存2G以上。而且后续的教程用的不是Docker部署的命令,后续的指令可能会不可用。
三、通过Cloudflare Tunnel反代1Panel
首先去Cloudflare Zero Trust新建隧道。访问Cloudflare并登录账户,点击【Zero Trust】—> 【网络】—> 【连接器】—> 【创建隧道】
选择Cloudflared,点击【下一步】,接着为隧道命名,随便取名字输入即可,好了点击【选择隧道】。把选择设备的操作系统选择【Debian】,复制下来【或仅在当前终端会话中手动运行隧道:】里面的内容,你可能会得到去下代码:
cloudflared tunnel run --token xxxx
在Cloudflare页面继续点击【下一步】,【子域名】自己填写自己想要的,【主域名】选你自己的域名,【服务类型】选择【HTTP】,【URL】填写为loaclhost:你自己1Panel的端口,请修改成真实端口。
接着打开服务器终端,粘贴以下代码,记得替换成你实际的token(xxxx就是token,可能很长,这是正常的):
sudo mkdir -p --mode=0755 /usr/share/keyrings && curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null && echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list >/dev/null && sudo apt-get update && sudo apt-get install -y cloudflared && sudo cloudflared service install 你的token
四、安装二进制Artalk并配置systemd服务
1.下载与安装
在Artalk - releses下载带linux的zip,如果不是arm就下载带amd64、linux的zip,在本地电脑解压后请上传到/data/artalk,并把config.yaml复制到/data/artalk/data。
最终文件结构如下:
/data/artalk/
├── artalk # 二进制主程序
└── data/
├── config.yml # 配置文件
├── artalk.db # SQLite 数据库
├── artalk.log # 日志文件
└── artalk-img/ # 上传的图片
2.配置文件
1.修改config.yaml db部分全部改为以下配置:
db:
type: sqlite
file: /data/artalk/data/artalk.db?_journal_mode=WAL&_busy_timeout=10000&_synchronous=NORMAL&_cache_size=-16000
name: artalk
host: localhost
port: 3306
user: root
password: ""
charset: utf8mb4
table_prefix: ""
ssl: false
prepare_stmt: true
2.配置好site_default和site_url,你自主配置,site_url记得带https://或http://前缀。
3.把admin_user改成以下配置:
admin_users:
- name: Hexvork
email: hexvork@foxmail.com
password: (bcrypt)
badge_name: 管理员
badge_color: '#0083FF'
name 、email自行配置即可,password我建议用bcrypt加密,可用https://www.jser.com/g/bcrypt)这类网站填入,(bcrypt)前缀不可丢!
4.trusted_domains请修改,记得带https://或http://前缀。
5.把img_upload部分修改成下面的配置:
img_upload:
enabled: true
path: /data/artalk/data/artalk-img
max_size: 2
public_path: "/img/"
upgit:
enabled: false
exec: upgit -c <upgit配置文件路径> -t /artalk-img
del_local: false
6.请保持port为23366,若config.yaml的post为空则不用管。
这样必要设置就完成了,其它可选配置请前往Artalk官网配置。
3.systemd配置
创建 /etc/systemd/system/artalk.service,请在终端输入:
cat > /etc/systemd/system/artalk.service << 'EOF'
[Unit]
Description=Artalk Server
After=network.target
[Service]
ExecStart=/data/artalk/artalk server -c /data/artalk/data/config.yml -w /data/artalk
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
接着,启动并设置开机自启:
systemctl daemon-reload
systemctl enable --now artalk
systemctl status artalk
五、Nginx-light反向代理Artalk
1.安装Nginx-light
apt update && apt install -y nginx-light
2.让Nginx-light反代Artalk
编辑/etc/nginx/sites-available/artalk:
server {
listen 80;
server_name artalk.hexvork.com;
location /img/ {
alias /data/artalk/data/artalk-img/;
expires 30d;
add_header Cache-Control "public, immutable";
}
location / {
proxy_pass http://127.0.0.1:23366;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3.启用站点
ln -sf /etc/nginx/sites-available/artalk /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
踩坑记录
报错1:Nginx-light安装后systemd服务找不到
执行systemctl status nginx报错Unit nginx.service could not be found。
原因:nginx-light安装后虽然生成了nginx.service,但可能未正确启动。
解决方案:
执行以下代码,手动启动Nginx-light
/usr/sbin/nginx -t
/usr/sbin/nginx
五、Cloudflared反代Nginx-light
Cloudflared反代Nginx-light,而Nginx-light反代Artalk,于是成功通过Cloudflare Tunnel反代Artalk且图片正常显示
打开Cloudflare官网并登录,点击【Zero Trust】—> 【网络】—> 【连接器】—> 【创建隧道】,选择Cloudflared,点击【下一步】,接着为隧道命名,随便取名字输入即可,好了点击【选择隧道】。把选择设备的操作系统选择【Debian】,复制下来【或仅在当前终端会话中手动运行隧道:】里面的内容,获得token:
cloudflared tunnel run --token xxxx
xxxx即为token。
在Cloudflare页面继续点击【下一步】,【子域名】自己填写自己想要的,【主域名】选你自己的域名,【服务类型】选择【HTTP】,【URL】填写为loaclhost:80。
由于已有其他cloudflared服务在运行(如cloudflared-artalk.service、cloudflared-update.service),需要新建一个独立服务,不影响它们,记得把token填写进去:
sudo sh -c "printf '[Unit]\nDescription=Cloudflare Tunnel via Nginx\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/local/bin/cloudflared tunnel run --url http://localhost:80 --token 请填写你的token\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n' > /etc/systemd/system/cloudflared-artalk-nginx.service" && sudo systemctl daemon-reload && sudo systemctl enable cloudflared-artalk-nginx && sudo systemctl start cloudflared-artalk-nginx
结语
相信只要安分守己的按照本片教程一步步执行,你已经可以通过你自己的域名访问1Panel和Artalk了。如果有更好的方法,欢迎在评论区留言。若出现其它的报错,请先询问AI,询问过后仍无果欢迎来评论区求助,当然,你也可以分享你成功的喜悦在评论区。这篇文章写得比较急,如有错误,欢迎来指正。


评论