前言

看别人折腾电子垃圾盒子的视频知道了cpolar这个服务,免费账户可以薅一个1Mbps小水管、随机字符&24小时有效的二级域名。

在自己的arm小盒子上安装体验了会,单说这免费的羊毛,可以作为一个应急备用的内网穿透方案,没法重用。不管是想固定二级域名,还是绑定自定义域名,订阅的费用都已经超过了自己买一个gia cn2网络的海外vps了。

cpolar官网提供了很多文档和手册,没啥阅读障碍的话跟着官网手册一步步操作就行了。

但我为啥要多此一举写这篇文章呢,🤔,因为官方的手册在有一些步骤比较模糊,而且官方推荐使用的是一键脚本。我因为手上既有openwrt的盒子,也有armbian的盒子,在部署的过程中经常有一些需要自定义的地方,所以做个简单记录,方便以后回溯。


安装

第一步:下载

第一步肯定是找到适配自己硬件平台的安装包了。

我手上的硬件已经是大家的老朋友,迅雷赚钱宝一代(ws1408),系统是3.10内核的openwrt。

另一个是硬件是迅雷赚钱宝二代(ws1508),系统是armbian。

这俩硬件的cpu都是arm32/armv7/armhf架构的amlogic s805,下载arm32版本的安装包即可。

使用wget或者curl下载到本地,然后用unzip解压。如果提示unzip没有安装,openwrt的软件仓库里就有,debian的apt仓库里也有。

# 下载
wget -O cpolar-stable-linux-arm.zip https://www.cpolar.com/static/downloads/releases/3.3.12/cpolar-stable-linux-arm.zip

# 解压
unzip cpolar-stable-linux-arm.zip

解压以后得到一个已经有可执行权限的二进制包cpolar,如果没有权限可以chmod +x cpolar授权。

可以把cpolar添加到环境变量。这里以openwrt为例,编辑/etc/profile文件,在PATH一栏的最后,按照格式加上cpolar的文件路径即可。

添加完成后,用命令source /etc/profile让配置生效。

想要验证配置是否生效,直接敲命令cpolar version,查看终端是否正确输出cpolar的版本信息即可。

第二步:验证

这一步很简单,官网手册也写的很明白。在官网的控制台,复制自己的token,或者直接复制命令,然后在本地执行即可。如果你和我一样已经配置了cpolar的环境变量,这一步就不需要敲前面的./了。

cpolar authtoken [token]

验证成功以后,默认的配置文件路径会保存在$home/.cpolar路径下。我这里是直接用的root账户,所以是/root/.cpolar

第三步:启动web ui

这一步,不知道官方是有意还是无意,在手册和文档中都跳过了。根据官网提供的一键安装脚本方案,如果是systemd,只需要systemctl start/enable就行了,但我想装在openwrt上,sysv init脚本得自己写,所以在这一步就得自己琢磨。

现在具体说说怎么启动cpolar的web ui。根据官网一键安装脚本中的代码,提取出systemd模式下启动cpolar daemon的命令如下

cpolar start-all -dashboard=on -daemon=on -config=/usr/local/etc/cpolar/cpolar.yml -log=/var/log/cpolar/access.log

那我们只需要照葫芦画瓢,简单改动一下适配sysv init就行了,注意config参数指向的的cpolar.yml配置文件路径要根据自己的情况进行修改。

#!/bin/sh /etc/rc.common

START=99
STOP=10

SERVICE_WRITE_PID=1
SERVICE_USE_PID=1
SERVICE_DAEMONIZE=1

start() {
  service_start /mnt/data/cpolar/cpolar start-all -dashboard=on -daemon=on -config=/root/.cpolar/cpolar.yml -log=/var/log/cpolar/access.log
}

stop() {
  kill $(pidof cpolar)
}

把上面的代码保存到/etc/init.d/cpolar即可,保存后执行chmod +x cpolar授权,然后添加启动项。

# 添加启动项
service cpolar enable

# 启动
service cpolar start

启动成功以后,就可以打开浏览器,访问http://host-ip:9200访问cpolar的web控制台惹。

第四步:添加内网穿透隧道

访问cpolar的web控制台,用cpolar官网注册的账户信息登录以后,可以看到默认是有两个示例隧道,建议直接删除。

创建自定义隧道就很简单了,有ui的操作就非常的直观易懂易上手。作为白嫖党,也不用看高级选项、二级子域名、自定义域名之类了,给隧道命名、设定端口号,设置好这俩然后点击创建就行了。

创建成功以后,可以在隧道列表看到自己创建的隧道,注意看状态已经是active表明已经启动,如果不是active,可以点击启动按钮。

到这里,隧道已经成功创建了,接下去到在线隧道列表就可以看到自己的网络服务对应的公网访问地址了。

🎉

第五步:适配systemd的服务脚本

前面提供了适配sysv init的服务脚本,顺便也提供一下适配systemd的服务脚本。

有两个版本,一个是cpolar.service,适合直接用root跑的玩家,另一个是cpolar@.service,适合指定非root账号跑的玩家。其中文件路径之类的请自行调整。

cpolar.service

[Unit]
Description=Cpolar Service
Documentation=https://www.cpolar.com/docs
After=network.target nss-lookup.target

[Service]
User=nobody
NoNewPrivileges=true
ExecStart=/usr/local/bin/cpolar start-all -dashboard=on -daemon=on -config=/usr/local/etc/cpolar/cpolar.yml -log=/var/log/cpolar/access.log
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

cpolar@.service

[Unit]
Description=Cpolar Service
Documentation=https://www.cpolar.com/docs
After=network.target nss-lookup.target

[Service]
User=nobody
NoNewPrivileges=true
ExecStart=/usr/local/bin/cpolar start-all -daemon=on -dashboard=on -config=/usr/local/etc/cpolar/%i.yml -log=/var/log/cpolar/access.log
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

喝杯奶茶