我给我买的第一个树莓派命名为pioneer,意思是先锋,开拓者,拓荒者,这是我对硬件的第一次尝试,希望能通过它打开我的新世界大门。

很幸运地为它注册到了域名pioneers.top

一句话日记

安装了npc和nps,以后可以愉快的内网穿透啦。

安装了pm2,用于进程管理,目前负责后台挂起npc,这样不管家里是停电还是断网,恢复正常后内网穿透也会自动恢复。

安装了nginx,用于根据域名分配对应的服务。

安装了golang,准备用它搭建游戏服务器。

现在访问nps.pioneers.top可以编辑内网穿透内容啦。

test.pioneers.top访问的页面是树莓派的nginx提供的,算是树莓派第一个对外的内容吧。

*.pioneers.top的80即http会被转到801,801会穿透到树莓派的80,同理443->4431->443。

2021.4.18树莓派项目集合上线(虽然现在还没项目)地址是pioneers.top,会被重定向到www.pioneers.top。

2021.4.30没事干发现nginx不是开机自启,在/etc/rc.local添加了一条命令sudo /usr/local/nginx/sbin/nginx实现了开机自启。

买了mac mini后树莓派能干的事它都能干,就闲置了,后来二手出了。

购买树莓派

名称 价格 链接
树莓派4b 4G版 347.6 https://m.tb.cn/h.4lRTpA5?sm=09f83c
树莓派盒子带风扇散热片 15.99 https://item.taobao.com/item.htm?spm=a1z0d.6639537.1997196601.4.78747484oCSR6G&id=619261773035
micro HDMI转HDMI数据线 4.98 https://detail.tmall.com/item.htm?spm=a230r.1.0.0.38d8523cticMwS&id=613008837811&ns=1&skuId=4501814886294
SD卡读卡器宇川usb2.0 12.9 https://m.tb.cn/h.4mG7n8h?sm=60a328
电源 0 在家随便找了一个5V3A头加type-c线
散热片 0 盒子带
风扇 0 盒子带
内存卡 0 家里有一个32G
屏幕 0 暂时没买
总计 381.47 比闲鱼便宜多了,闲鱼普遍卖的比官网都贵(2021年3月初),买全新好点除非你愿意蹲

树莓派支持的sd卡https://elinux.org/RPi_SD_cards。

安装系统开机

下载Raspberry Pi OS(64bit)beta版img文件

下载并安装Raspberry Pi Imager

选择下载的img文件和要烧录的内存卡,等待片刻即可。

插入内存卡,接上电源,开机设置语言,更新系统,重启即可。

更新系统这一步耗时较长,我直接放了一晚上第二天才重启。

开启SSH和VNC

下载的系统里自带的有SSH和VNC,如果你使用的是最小安装包系统,则需要先安装。

参考知乎文章

内网穿透

nps

对比了frp和nps后,感觉nps更好用(web界面漂亮,客户端友好),所以就先选择nps,后面试过frp后再来更新

安装nps和npc

1、安装包点击这里下载(查看服务器cpu类型命令:dpkg –print-architecture)

2、源码安装使用go get -u ehang.io/nps,然后编译,接着启动:

服务端go build cmd/nps/nps.go

客户端go build cmd/npc/npc.go

3、docker安装:

server

client

启动nps和npc

nps服务端

下载完服务器压缩包后,解压,然后进入解压后的文件夹

1
2
3
4
# 安装
sudo ./nps install
# 启动
sudo nps start

npc客户端

  • 下载客户端安装包并解压,进入到解压目录
  • 点击web管理中客户端前的+号,复制启动命令
  • 执行启动命令,linux直接执行即可,windows将./npc换成npc.exe用cmd执行

如果使用powershell运行,请将ip括起来!

如果需要注册到系统服务可查看注册到系统服务

frp

设置wifi自动连接和忘记wifi

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
        ssid="****" # wifi名称
        psk="****" # wifi密码
        key_mgmt=WPA-PSK
}
#可添加priority字段设置优先级,数字越大越有限

安装日常软件

安装拼音输入法(桌面版需要)

1
2
3
4
apt udpate
apt install -y fcitx fcitx-googlepinyin
# 重启
sudo reboot

pm2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装nodejs和npm
apt install nodejs
apt install npm
# 安装pm2
npm install pm2 -g
# 通过pm2启动npc
pm2 start ./npc --name npc -- -server=123.57.190.227:8024 -vkey=************* -type=tcp

# 设置pm2开机自启动
$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
$ sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
Target path
/etc/systemd/system/pm2-pi.service
Command list
[ 'systemctl enable pm2-pi' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-pi.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-pi...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-pi.service → /etc/systemd/system/pm2-pi.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd

# 保存pm2,用于自启
$ pm2 save
# 删除自启动
$ pm2 unstartup systemd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
npm install pm2 -g     # 命令行安装 pm2 
pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js 
                         # 也可以把'max' 参数传递给 start
                         # 正确的进程数目依赖于Cpu的核心数目
pm2 start app.js --name my-api # 命名进程
pm2 list               # 显示所有进程状态
pm2 monit              # 监视所有进程
pm2 logs               # 显示所有进程日志
pm2 stop all           # 停止所有进程
pm2 restart all        # 重启所有进程
pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0             # 停止指定的进程
pm2 restart 0          # 重启指定的进程
pm2 startup            # 产生 init 脚本 保持进程活着
pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 delete 0           # 杀死指定的进程
pm2 delete all         # 杀死全部进程
# 运行进程的不同方式

pm2 start app.js -i max    # 根据有效CPU数目启动最大进程数目
pm2 start app.js -i 3      # 启动3个进程
pm2 start app.js -x        #用fork模式启动 app.js 而不是使用 cluster
pm2 start app.js -x -- -a 23   # 用fork模式启动 app.js 并且传递参数 (-a 23)
pm2 start app.js --name serverone  # 启动一个进程并把它命名为 serverone
pm2 stop serverone       # 停止 serverone 进程
pm2 start app.json        # 启动进程, 在 app.json里设置选项
pm2 start app.js -i max -- -a 23                   #在--之后给 app.js 传递参数
pm2 start app.js -i max -e err.log -o out.log  # 启动 并 生成一个配置文件
# 你也可以执行用其他语言编写的app  ( fork 模式):
pm2 start my-bash-script.sh    -x --interpreter bash
pm2 start my-python-script.py -x --interpreter python

nginx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 安装nginx的依赖pcre
wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
./configure
make && make install
pcre-config --version # 查看版本号,有就说明安装成功
# 安装nginx的其他依赖如:zlib、openssl等,我的系统已经安装完了就跳过了,具体百度
# 安装nginx
wget https://nginx.org/download/nginx-1.19.8.tar.gz
tar -xvf nginx-1.19.8.tar.gz
./configure --with-http_stub_status_module --with-http_ssl_module # 检查环境,注意带上后面的参数,不然没法使用ssl
make && make isntall # 编译安装
#安装后会nginx会提示以下信息,上面写的包括有nginx的文件,二进制文件路径、日志文件等等
# /usr/local/nginx/sbin/nginx就可以启动nginx了
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

# 停止
/usr/local/nginx/sbin/nginx -s stop
# 重启
/usr/local/nginx/sbin/nginx -s reload

安装golang

1
2
3
4
5
6
7
8
9

# 直接下源码
wget https://golang.google.cn/dl/go1.16.2.linux-arm64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local/ -xzf go1.16.2.linux-arm64.tar.gz go/
# 编辑/etc/profile添加export PATH=$PATH:/usr/local/go/bin
vim /etc/profile 
source /etc/profile
# 安装成功
go version

最后

买了mac mini后树莓派能干的事它都能干,就闲置了,后来二手出了