【注意】最后更新于 March 1, 2021,文中内容可能已过时,请谨慎使用。
我给我买的第一个树莓派命名为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后树莓派能干的事它都能干,就闲置了,后来二手出了。
购买树莓派
树莓派支持的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后树莓派能干的事它都能干,就闲置了,后来二手出了