作者:Roby

一、 当然要准备一个几百元的树莓派 4 开发版

别小看这个几百块的开发板,其性能和每个月几百块的阿里云服务器相当。我们就来还好利用它吧。

1.1 安装 Ubuntu

当然要去看官方详细教程,不过全是英文, 不要紧我们只需要几个步骤就好了。

先下载一个官方的启动盘镜像制作软件,在官网教程的第二步。根据自己的电脑操作系统下载相应版本。**

我的是MacOS就先择了第三个。

下载安装好后打开,有两个选择栏,一个是选择Operating System, 一个是Storage. 这个时候把一个TF卡插到电脑上,我用的是一个64GTF卡。 先点击第一个CHOOSE OS,我要安装Ubuntu Server 20,就选择Other general purpose OS 这一项,然后选择Ubuntu,再选择具体的版本,我选择Ubuntu Server 20.04 LTS (RPI 3/4/400) 64-bit server OS with long-term support for arm64 architectures.
然后选择Storage, 选择刚刚插入的TF卡。 点击下一步,抹除盘然后创建镜像。创建完系统会自动将system-boot 的镜像盘推出。

1.2. 设置网络,如果想通过网线链接就把网线插上,也可以直接通过 Wi-Fi 链接

先切换到root账户,执行sudo su root.

将镜像盘插入树莓派 4,经过激动人心的几分钟,系统boot完就需要你输入用户名和密码了,用户名默认是ubuntu, 密码也默认是ubuntu,一开始系统会要求你改密码,就改一个密码。

结束后,进入系统 shell,就可以设置网络了。 这里我用的是wifiubuntu17以后的版本网络都是由netplan来设置,所以要更改netplan的配置文件。 netplan的配置文件在/etc/netplan/里的一个yaml文件。 反正大概类似这样的文件:01-netcfg.yaml, 50-cloud-init.yaml, NN_interfaceName.yaml,我的是50-cloud-init.yaml.

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    renderer: networkd
    wifis:
        wlan0:
            access-points:
                "你的Wi-Fi名":
                    password: "你的Wi-Fi密码"
            dhcp4: true
            optional: true

把你要连的wifi名和密码填到配置文件里,记得保留双引号。 然后执行sudo netplan apply.

然后ping www.baidu.com, wow,树莓派可以上网了,如果不同可以重启一下系统sudo reboot.


小插曲 Ubuntu arm64 在树莓派上有个固件 bug,导致一段时间系统固件崩溃,需要手动更新一个网络固件,后期如果修复了这个问题可以不需要这一步了。

先下载固件 brcmfmac4355-sdio.bin,如果是外网直接在树莓派上是没办法wget的,最好通过翻墙的PC先下载下来。

更新固件就是把这个新的固件文件替换系统原来的固件文件。系统原来的固件文件是这个/lib/firmware/brcm/brcmfmac43455-sdio.bin,先给他重命名备份,执行sudo mv /lib/firmware/brcm/brcmfmac43455-sdio.bin{,.orig}。这个命令是把原来的文件后面添加一个.orig后缀。

然后把新下载的文件拷贝到目录/lib/firmware/brcm/

重启系统sudo reboot


二、配置 FRP 内网穿透

我们的这种小区IP都是动态IP,不是静态IP,外网是没办法直接SSH访问我们的内网服务器,在内网部署的web服务也无法有外网直接访问,这个时候就要通过frp来进行内网穿透。

frp 原理网上有很多这里就不介绍了。 通俗的讲,就是我们没办法直接从外网ssh到内网服务器,那么我们可以通过外网服务器中转一下,所以要有一台外网服务器,然后在外网服务器上启动一个服务端frps,在内网服务器也启动一个客户端服务frpc

链接过程就是:

用户ssh ---->  外网frps  -----> 内网frpc ---> ssh内网服务器

这就清楚了,需要两个程序一个给外网服务器,一个给内网服务器。 外网服务器我用我的阿里云为例子。

具体流程参考这篇文章吧 frp 内网穿透教程 里面写的很清楚了。

不过有一点要注意,阿里云的安全组要把相应的端口打开,例如例子中的 7000 和 7500.

最后成功后就可以通过 ssh 链接内网服务器了

ssh ubuntu@<外网的IP> -p 6000

6000 就是在frpc.ini设置的远程映射端口号。

然后输入密码,大功告成!

下一篇将继续讲解 K8s 环境的搭建。