谈谈我都用树莓派做什么
前言
今年的早些时候我入手了一台树莓派4b,8G版本。你没看错,内存8G。大多数人应该是买2G或者4G的版本,但是我买了8G的版本,是不是有大冤种的感觉,emmm……那会刚好自己生日,就任性了一把。今天又看了一下价格,好家伙,又比我买的时候涨了将近一倍,感情这还是个理财产品了??这边不讨论为什么买这玩意,也不是安利,因为以目前它的价格来说完全不具备性价比,只是既然买了,就要想尽办法物尽其用,只要能把它利用起来那就不怨种了 。
说一下我的工作,本职程序员,日常工作除了写代码,也需要做一些服务器运维部署的事,之前很长一段时间公司的aws服务器也都是我在维护,平时有空也喜欢折腾linux。我相信大多数程序员应该都会买一台入门云服务器用作个人学习、搭建博客或者其它用途。但是一般入门级别的云服务器可能一年也要花个几百,关键是配置也不高,而且来年还要续费。所以我就打起了树莓派的心思,想利用它来取代个人服务器。
看一下4B的硬件参数:
- 1.5GHz 四核 64 位 ARM Cortex-A72 芯片
- LPDDR4 SDRAM 内存,可选 1 / 2 / 4 / 8GB
- 板载全双工千兆以太网接口
- 板载双频802.11ac无线网络
- 板载蓝牙5.0
- 两个 USB 3.0 和两个 USB 2.0 接口
- 2 个 micro HDMI 输出,支持同时驱动双显示器,分辨率高达 4K
- VideoCore VI 显示芯片,支持 OpenGL ES 3.x.
- 支持 HEVC 视频 4Kp60 硬解码
- USB Type-C 供电接口
以这样的配置作为一台入门服务器其实是完全足够了,系统装的是Ubuntu 22.04.1 LTS,个人比较偏爱Ubuntu,接下来介绍我都用来做什么(本文非技术贴,同时以下介绍的东西需要一点linux基础,并非适用于所有人)
Frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。这几年疫情,居家办公是常态,作为程序员,平时经常需要在没有公司网络环境的情况下访问公司的一些服务,比如数据库,redis,或者其它一些组件。我自己的主力开发机是mbp,但是办公桌还放了一台nuc,在nuc里面装了虚拟机,虚拟机里面跑了很多常用服务,在家里,没有公司网络环境,这时候就可以通过内网穿透,将公司的这些服务穿透出来,这样我随时随地都可以使用这些服务,以及访问公司的远程桌面,而且体验绝对比任何一个远程桌面软件都好。
使用frp需要一台具有公网ip的服务器+一台内网环境服务器,刚好家里有开公网ip,树莓派就充当这台具有公网ip的服务器了,在树莓派配置好frp服务端,然后在公司电脑配置frp客户端,可以看到我将我在公司电脑虚拟机装的一些服务包括远程桌面都穿透出来了
Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。如果有看到我这篇文章的《群晖NAS 瞎折腾 | Emby+Nastools+qBittorrent家庭影音搭建小记》的话,就知道我在nas上面也装了很多服务,有emby,qBittorrent,nastools,iyuuplus等等,非常多,平时也会在外网访问,比如在公司摸鱼的时候 ,但总不能总是使用公网ip+端口吧,而且公网ip也是会变的,那就需要用到DDNS(这里不介绍)、一个自己的域名,https(证书)。域名就随便买一个自己喜欢的又便宜的域名就好,证书可以上阿里云申请免费证书。然后接下来就交给nginx去发挥了
这样我可以通过https://域名:port 访问自己搭建的各种服务,比如上面提及的emby,nas,qb等等,虽然也是需要带端口,但总比直接访问ip来舒服得多,浏览器也不会有不安全的提示。
Docker
Docker就不用多介绍了吧,开源的应用容器引擎,只要在机器配置吃得消的范围内,可以选择装在docker的我都会装在docker里面,看一下我docker里面装了什么
1. mysql8.0 装mysql只是因为gitea有需要
2. gitea 轻量化代码托管解决方案,最近有跟小伙伴一起做个私人项目的打算,所以在树莓派上面简单装了gitea用来做版本管理,相对gitlab这重量级选手来说,gitea占用资源真的少太多了,安装也更容易,装在树莓派完全无压力
3. heimdall 打造自己的浏览器导航页,太多系统了,用heimdall统一管理起来,方便又美观
4. firefox 装在docker里面的浏览器,用vnc的方式访问浏览器,如果有些服务你不想暴露到公网,那就可以通过这个来访问,有点类似远程桌面,实际上我用的不多
5. portainer 图形化docker管理界面,用习惯了挺方便的,避免每次创建容器需要写一堆命令行
6. homeassistant 开源智能家居平台,家里有不少智能家电,通过HA可以统一管理各品牌智能家电,实现万物互联。
7. Bitwarden 全平台的开源密码管理器,很方便,我刚开始用
看一下目前资源使用情况,可以看到在装了这些服务之后,系统资源还很充裕,内存使用在25%左右,cpu的平均负载也没有超过0.5,所以拿它用作入门个人服务器完全没问题(前提是要有公网ip,电信很容易,其它的运营商不清楚)
这台树莓派从买来到现在,一直处于24小时开机状态,非常稳定,以目前的使用情况来看,我还没有完全发挥它的性能,接下来会争取榨干它,往树莓派里面装更多的组件跟服务,短期内应该会装OpenWrt做旁路由实现科学(最近整了个厨子家的7代盒子,只用来串流emby),或者用作个人项目的开发服务器部署程序。另外它也帮我分担了很多NAS的工作,因为DS218+只有6G内存,装了emby,qb,nastools…其实内存也消耗得差不多了,我不可能把所有东西都往里塞,两台机器配合挺好的。好了,介绍就到此为止了,如果你恰巧也有一点动手能力,恰巧也喜欢折腾,恰巧有类似的使用需求,恰巧也有吃灰的树莓派,那希望能给你一点参考