树莓派通过 SSD 部署 和 配置内网穿透
背景
之前一直有在家部署一个可以长期运行的 Linux 服务器的想法,但首先是自己没有一台 Linux 服务器,不是特别想一直开着台式机主机,其次是就算家里开着台式机,外网也访问不到,只能借助类似向日葵的软件远程操作桌面,所以一直没有实践
但最近把 树莓派 搞好之后发现其实搞起来也不是那么难,再加上有个大佬买了个云服务器,还一下买了几年,于是硬件条件都有满足了。终于找了个时间,先把树莓派通过 SSD 重新安装系统,再结合 内网穿透,后面可以在外网直接操作树莓派,算是有个可以经常跑,也能经常操作和维护的Linux服务器了
树莓派和SSD
一开始树莓派是需要通过 SD 卡初始化的,但是 显然 SD卡 无法承担更高的数据读写要求。于是把自己的一张不常用的 SSD 从台式机拿了出来,接到树莓派上并进行了下系统迁移
How to Boot Raspberry Pi 4 / 400 From a USB SSD or Flash Drive
系统写入SSD
这里我们通过 imager 将树莓派系统写入 SSD
imager官方下载
选择一个官方镜像,32位和64位都可以
等待写入
修改启动选项
登录树莓派(这里还是用 SD卡 启动),安装 bootloader
1 | sudo apt update |
将启动选项修改成用 SSD 卡启动
1 | sudo raspi-config |
选择 6 Advanced Options -> A6 Boot Order -> B2 USB Boot
重启树莓派
成功~
后面再安装了 docker,把一些后台服务部署到了树莓派上。除了受限于树莓派本身 CPU 和内存(4核4G),只能部署一些简单的服务,不过对自己的个人开发需求来说已经够用了
内网穿透
原理介绍
本质上就是在保证安全的前提下,建立从公网到内网的连接通道,使得内网机器能够通过一个可靠的公网地址访问
对应现实的例子,类似找香港的代购,代购相当于就是代理,能够按照我们的需求到香港购买一些面免关税的商品(公网发送请求到代理),再帮我们带回来(代理发送请求到内网服务,再将请求结果返回)
因此内网穿透的需求从架构上来看,主要包括三个元素:资源提供商、资源使用者 和 代理服务,如下:
frpc: fast forward proxy client, 内网代理服务
frps: fast forward proxy server, 外网代理服务
应用场景:
个人随时操作内网服务器
比如接下来要说的部署 frp 代理服务,就是实现这个需求企业开启远程办公
国内的互联网公司基本都是通过 代理软件(如: easyConnect)+ 专用隧道 实现在外网对内网资源的访问,本质上就是内网穿透将内网其他服务开启到外网(如个人博客站点)
比较大型的个人站点,一般会包含很多数据,需要一定的存储,也需要保证足够的并发访问能力。但是买一个高性能、高存储的云服务器对个人来说肯定成本也不少,这时就可以采用 站点依然部署在内网,只购买一台 主提供流量的 云服务器,通过内网穿透对外开启 HTTP 端口 提供服务的方式。相当于资源提供的压力还是主要在内网机器,外网云服务器只承担流量压力
准备
- 内网机器(Linux)
- 一台云服务器(Centos)
部署
frps(公网)
下载
1 | wget https://github.com/fatedier/frp/releases/download/v0.40.0/frp_0.40.0_linux_amd64.tar.gz |
配置
1 | [common] |
启动
1 | ./frps -c ./frps.ini |
frpc(内网)
下载
1 | wget https://github.com/fatedier/frp/releases/download/v0.40.0/frp_0.40.0_linux_arm64.tar.gz |
配置
1 | [common] |
启动
1 | ./frpc -c ./frpc.ini |
添加端口访问权限
阿里云:管理控制台 -> 云服务器 -> ECS安全组 -> 手动添加访问规则
分别将 frps 服务的端口 和 内网机器通过 frps 暴露的外网端口 设置访问权限
效果
直接通过ssh云服务器 连接内网服务器:
ssh pi@外网服务器ip -p6001