介绍树莓派搭建的一些服务
前言
一直想要一个全能的NAS,但是由于各种各样的原因,要么就是错过了车,要么就是口袋里没钱。去年准备考试的那段时间,我在矿渣论坛看到了一个树莓派4B的开车帖,头脑发热就买了下来,顺便把服役两年的2B给甩咸鱼了。到了假期终于有时间折腾了,权当介绍一下树莓派上跑的一些东西。
关于树莓派系统的选择
这里是清华的镜像,我刷了几个64位的系统之后依然退回了rasperryos的32位版本,不是不好,而是文档缺失,社区支持不好。后期需要用到GPIO的话就更麻烦。关于USB启动,我的树莓派是直接接了一个2.5英寸的1THDD当启动盘,划900G挂载到/,这么做的原因还是因为供电不够,SSD启动+挂载HDD在15W的电源下出现了频繁的掉盘现象,SD卡速度实在太憋屈,最后就只能用单HDD来启动了。
RaspberryPi4B支持原生USB启动,如果有这个需求,请先用SD卡刷入系统,在系统内更新EEPROM,即可支持USB启动。官方文档在此:USB mass storage boot
下载机
尝试过OMV和Docker来部署qbittorrent和samba文件共享,不过在64位下支持并不好,于是我直接从apt源安装好了这两个服务:
sudo apt install qbittorrent-nox samba samba-common-bin
Qbittorrent启动:
qbittorrent-nox -d --webui-port=XXXX
然后将该命令编辑到树莓派的开机启动/etc/rc.local中即可。
关于samba的配置,在apt安装完后,用vim编辑/etc/samba/smb.conf
,首先把全局设置里的ReadOnly改成no,再在配置文件的最末尾处添加你的用户设置。具体如何实现,请参考以下这篇文章
How to Setup a Raspberry Pi Samba Server
Samba一直令人头疼的权限问题其实不难,请一定要弄清文件夹权限和用户权限。
在qbi的Web设置里找到自己的端口,然后在路由器端做一下端口转发即可,不然PT上传容易没速度(我的家宽是有公网IP的,所以直接做转发就好)
下载公网bt资源如果也没速度,请去web中添加Tracker,下面分享一个纯tracker网页:TRACKER
我的建议是最好不要把控制台的http网页也映射出去,不过如果你有需求的话也不是不行,最好可以配合阿里的DDNS再套个CDN开HTTPS(我只是随便说说,还没有这么试过)
以上就是下载机的配置。
密码管理软件Bitwarden
这个想法在我脑海里盘旋很久了,因为密码管理光靠iCloud和chrome个人感觉不安全,把自己的密码库握在自己手里最踏实,所以用Dockers部署了这个服务到树莓派上,隔周冷备份一次到网盘上。
首先要安装docker,用wiki给的全自动安装就好。
sudo curl -sSL https://get.docker.com ' sh
然后去DockerHub里拉取bitwardenrs/server:
docker pull bitwardenrs/server:latest
[scode type="red"]注意:Raspbian在最近几个版本存在bug,如果无法部署,请拉取testing或其他版本[/scode]
最后部署docker:
docker run -d --name bitwarden -v /bw-data/:/data/ -p XXX:80 bitwardenrs/server:latest
/bw-data/为数据库存储的地方,如果没有它会自动创建。XXX:80前者为局域网的端口,后者为docker内的端口。
接下来配置代理服务器,如果你还没有安装nginx或者caddy,请先安装好再来往下看。为了安全,HTTPS是必须的一步,并且bitwarden似乎不支持http网页下的注册。这里我就直接贴一个典型的反向代理配置,重要的端口和证书请自行上传配置。
server {
listen 443;
server_name 你的主机;
ssl_certificate 证书地址;
ssl_certificate_key 密钥地址;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:PORT;
proxy_read_timeout 90;
proxy_redirect http://localhost:PORT https://XXXXXXXX;
}
}
纯https的话就没必要配置301跳转了。从内网的其他机器看,nginx的功能是监听443端口,并把请求转发到树莓派的XXX端口。所以如果要在所有地方访问到,就必须再配置一次路由器的端口将443转发到网关的某端口,这里建议把web映射到比较高位的port比较好(5万以上),免得电信发瘟一通乱封。如果没有公网ip,请使用FRP来实现内网穿透,引用一篇博客的教程:
教程
配置好后,nginx -s reload重启nginx,尝试一下外网访问,高贵的小绿锁出现了。
最后讲一下冷备份,你创建的bw-data中有一个sql文件,备份它就够了。
后记
目前就这么几个需求,我觉得都挺实用的,不过如果有更好的nas只能等以后有收入了才能买了。树莓派也有它本身的乐趣,折腾是真的好玩啊。客观来说Pi4的性能也非常过剩了,双usb3.0双hdmi,千兆网口,其实已经很不错了,比起前代的鸡肋2B。过段时间准备在docker上部署一下openwrt当AP玩,目前已稳定运行一周左右了。