用树莓派加内网穿透搭免费网站

背景

家中闲置的一个树莓派,想着如果能用来建立网站,那也算有点用处了。看了一下树莓派的配置,和阿里云对比,那可是要不少软妹币的。

安装树莓派

这里先说一下踩过的坑,如果刷raspberry pi os 的话,那后期安装nginx、mysql等都比较麻烦,如果只是想用来搭建网站服务器的话,可以刷ubuntu ,配合免费版宝塔面板,何乐而不为呢?

刷ubuntu

首先下载raspberry pi Imager ,这个从官网下载就好,无论是win系统还是macos都有对应的版本。
https://www.raspberrypi.com/software/

打开软件,选择os、sd卡,这里选择的是ubuntu server版本,我的树莓派都没有接显示器,所以不用装桌面版。

然后千万别忘记设置ssh服务和WIFI

这个工具方便之处在于OS镜像、ssh服务、WIFI一次搞定。烧录完成之后就可以将SD卡插入树莓派启动系统了。

调整系统

刚刷完的系统还需要做一些小调整,首先通过路由器找到raspberry的ip

想固定IP的话,顺带用路由器绑定一下mac和ip地址就好了。

然后登录树莓派的ssh服务(可以使用工具或者mac自身的ssh都行)
如果觉得pi账号每次都要su比较麻烦,可以开放root账号。

1
2
3
4
5
6
7
8
9
10
11
sudo passwd root
#执行后提示设置密码,输入2遍确认

sudo passwd --unlock root
#解锁root账户,如需再次锁定,将unlock改成lock即可

su
#输入刚设置的密码,进入root账户

sudo nano /etc/ssh/sshd_config
#放开root账户使用ssh登录

【Ctrl+W】快捷键,搜索【PermitRootLogin without-password】,修改【PermitRootLogin without-password】为【PermitRootLogin yes】。
【Ctrl+O】快捷键,保存。

安装宝塔面板

既然有免费版本的面板使用,为什么还要使用命令行安装再手动修改配置呢?
宝塔面板官网
可以选择万能安装脚本

接着等待脚本运行完成,会有提示访问地址、账号和密码。至此本地服务器就搭建完成了,通过面板可以安装各种环境,例如:nginx、php、mysql、redis、docker等等,都是可视化界面操作,搭建网站也是分分钟的事情。

内网穿透

但是现在只能在局域网内访问树莓派的网站,离开家之后就访问不到了。所以我们需要内网穿透,免费的推荐StarryFrp ,未实名有5条隧道,实名后有10条通过(实名好像要支付2元),带宽限制调整为 8Mbps 。 每日签到送流量,未实名1 ~ 3 GiB ,实名后 1 ~ 10 GiB 。 一般个人网站足够使用了。

创建隧道

注册好后就可以根据提示创建隧道了,选择合适的节点和协议就可以了。

再回到隧道列表,查看详细信息,记得将自己的域名解析到节点地址上,采用cname解析。


接着就是下载软件,由于我烧录的是64位系统,所以这里也要选择arm64的软件,可以通过wget直接下载。

当然别忘记给下在下来的软件授权执行

1
chmod +x ./frpc

再回到隧道列表,获取启动命令就可以了

其实启动命令就是

1
./frpc -f <账户token>:<隧道id>

正常启动后可以看到提示信息,然后使用域名访问网站就可以了。
可以看到用域名访问到了一个内网的宝塔控制面板。

然后可以做什么呢?当然能做很多事情啦,可以搭建自己的图床,可以部署自己的博客,甚至可以使用docker部署一些工具,例如搭建一个自己的bitwarden秘钥管理软件,再也不用担心密码存放在别人的服务器上是否安全了。

自启动

每次都自己输入命令启动是比较麻烦的,自启动当然不能遗漏。
由于刷了ubuntu,我们就来使用systemd来做自启动。

1
vi /etc/systemd/system/frpc@.service
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=SakuraFrp Service
After=network.target

[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i

[Install]
WantedBy=multi-user.target

其中ExecStart需要替换成自己下载的frpc的位置。
隧道
执行下面的命令重载 Systemd,这样服务就配置完成了

1
systemctl daemon-reload

请记住后续操作中用到的 Unit名称 是 frpc@<启动参数>,例如frpc@wdnmdtoken666666:12345

  • 启动/停止隧道
1
systemctl <start|stop> <Unit名称>

举个例子,开启访问密钥为 wdnmdtoken666666 的用户所拥有的 ID 为 12345 的隧道:

1
systemctl start frpc@wdnmdtoken666666:12345
  • 查看隧道状态
1
systemctl status <Unit名称>
  • 查看隧道日志
1
journalctl -u <Unit名称>
  • 开机自启动
1
systemctl <enable|disable> <Unit名称>
  • 有多个隧道忘记了怎么办? 可以查询
1
systemctl list-units --all "frpc@*"

尾声

至此,使用树莓派在家就可以搭建一个外网可访问的网站了,整个过程除了硬件外,其他都是免费的。ssl证书现在有不少免费的单域名证书可以申请。非实名认证也是可以用的内网穿透的,就是流量有些少。域名也有免费的域名可以申请注册,所以想完全不花额外的软妹币,也是可以做一个自己的网站的。