金就砺则利

——荀子

✍文章痕迹

写作时间线

2023-01-29

  1. 安装原版系统,解决了连接问题
  2. 安装OMV(失败)

2023-01-31

  1. 安装了arozOS系统
  2. 实现了内网穿透
  3. 文章主体完成

2023-02-01

润色文章

2023-02-01

  1. 部署了alist网盘聚合系统
  2. 增加了alist服务5244端口映射到https://hub.si-on.top,(公共文件与https://cloud.si-on.top内容相同)

2023-02-04

  1. 补充了内网穿透安装的一些截图
  2. 补充了亮灯状态的解释

楔子

春节期间拾掇了过去一年中各个设备上的照片,并转移到了家里专门备份的300G硬盘上,期间居然在十年前的一个1G内存卡发现了小时候的一部分照片,十分欣慰,原本以为永远找不到了。

在整理完之后,又纠结了许久,终于下了狠心,断舍离,脱离对物品的执着!对把手机、相机都格式化了,新的起点,忘记过去吧!

又过了几天,想去回味回味,但觉着硬盘弄来弄去太麻烦,一旁正在认真吃灰的树莓派4B突然蹿入眼帘,emm,就决定是你了!物品准备:

  • 树莓派4B(32G的SD卡一张)
  • 一块闲置的硬盘
  • 散热风扇
  • 连接线若干(网线、电源线、USB线+合理的排线)

安装与连接

官方镜像

最好的还是官方的,下载树莓派专用镜像烧录软件: https://downloads.raspberrypi.org/imager/imager_latest.exe

里面的系统是比较全的,完全不需要在网上找镜像,软件里包含的镜像主要有:

  • Raspberry Pi (32/64)
  • Ubuntu
  • Manjaro
  • RISC OS Pi
  • 3d打印专用
  • 媒体播放专用
  • 家庭助手
  • 其他特殊用途
  • 自定义镜像

笔者觉得选择64位最简版本的Raspberry Pi OS Lite (64-bit)进行烧录就挺好,又快又不会有太多软件上的问题。

第三方NAS系统

ArozOS系统应该是除了OMV之外最好的,由于我安装OMV时失败了,故选择了这个系统,优点是非常简便,树莓派的安装镜像地址在仓库的读我文档里:tobychui/arozos: General purposed Web Desktop Operating Platform / OS for Raspberry Pis, Now written in Go! (github.com)

ssh连接

无屏幕连wifi

该文章Site Unreachable提供了六个方法来连接wifi。

在没有屏幕/HDMI/HDMI转接头等情况下,我们就需要盲连(无头骑士),操作很简单,在烧录的时候配置一下信息即可。

咱们这里是通过手机热点来创建来一个局域网,树莓派连接后通过手机上的termux查询ip,最后通过电脑连接上树莓派。

termux上使用ip neigh来查看ip

安卓上还有一个名为RasPi Check的软件,可以监控树莓派的状态,很是好用:

手动设置

烧录完成后,在SD卡boot分区新建文件为userconfig.txt,内容为:

1
pi:$6$Q7yQqYO94B9fI9jn$trNI8/yvcZ8WYleaYKN5qlrzQ3AhZXLZtcNkYJlSH16xGloh2ZiM4KeAay8GSBoQ09LZI/wMOxM3qeou7uZXq.

通过路由器管理面板找到树莓派的ip(笔者这里是直接网线连接的),然后用电脑借助ssh连接,scp传递文件。

1
2
ssh pi@192.168.101.??
密码:raspberry

指示灯状态解读

LED 颜色 功能 正常状态
ACT 🟢 card status 闪烁:SD卡正在活动(类似电脑的硬盘灯)
PWR 🔴 power 不闪烁:正常
FDX 🟠 full duplex 亮:全双工/不亮:半双工
LNK 🟠 link 亮:网络连接成功
100 🟠 100 Mbps 亮:100Mbps/不亮:1o Mbps

常见亮灯状态

换源

一切正常的话,会进入到树莓派的终端,现在就可以自由操作了,第一步先解决网络情况:

  1. 树莓派更换清华源(直接参考清华源的说明文档即可)

raspbian | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  1. 新增github临时hosts(救急用)

Github hosts地址

  1. 更改DNS解析配置/etc/resolv.conf中的nameserver8.8.8.8或其他大厂的DNS,不然之后内网穿透会报错。
  2. VPN(特殊情形)
    1. 下载gephARMv7,并上传至树莓派(ssh附带的scp命令可以实现)
    2. 更改文件访问权限 chmod u+x geph4-client-linux-armv7
    3. 运行该程序 ./geph4-client-linux-armv7 connect --username xxx --password xxx --socks5-listen 0.0.0.0:9909
    4. 更改节点:先获取节点地址 ./geph4-client-linux-armv7 sync --password xxx --username xxx 然后在结果中寻找节点地址,节点地址的形式:xx-xx-xx.exits.geph.io,头一个xx是国家代码。结束目前的迷雾通进程,用如下的命令重新运行一次:./geph4-client-linux-armv7 connect --password xxx --username xxx --socks5-listen 0.0.0.0:9909 --exit-server "节点地址"

软件部署

Miniforge

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
Do you accept the license terms? [yes|no]
[no] >>> y
Please answer 'yes' or 'no':'
>>> yes

Miniforge-pypy3 will now be installed into this location:
/root/miniforge-pypy3

- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below

[/root/miniforge-pypy3] >>>
PREFIX=/root/miniforge-pypy3
Unpacking payload ...
Extracting ca-certificates-2023.7.22-hcefe29a_0.conda
Extracting libgomp-13.1.0-h2b4548d_0.conda
Extracting libstdcxx-ng-13.1.0-h452befe_0.conda
Extracting pybind11-abi-4-hd8ed1ab_3.tar.bz2
Extracting python_abi-3.9-3_pypy39_pp73.conda
Extracting tzdata-2023c-h71feb2d_0.conda
Extracting _openmp_mutex-4.5-2_gnu.tar.bz2
Extracting libgcc-ng-13.1.0-h2b4548d_0.conda
Extracting bzip2-1.0.8-hf897c2e_4.tar.bz2
Extracting c-ares-1.19.1-h31becfc_0.conda
Extracting fmt-9.1.0-hdd96247_0.tar.bz2
Extracting icu-73.2-h787c7f5_0.conda
Extracting keyutils-1.6.1-h4e544f5_0.tar.bz2
Extracting libev-4.33-h516909a_1.tar.bz2
Extracting libexpat-2.5.0-hd600fc2_1.conda
Extracting libffi-3.4.2-h3557bc0_5.tar.bz2
Extracting libiconv-1.17-h9cdd2b7_0.tar.bz2
Extracting libzlib-1.2.13-h31becfc_5.conda
Extracting lz4-c-1.9.4-hd600fc2_0.conda
Extracting lzo-2.10-h516909a_1000.tar.bz2
Extracting ncurses-6.4-h2e1726e_0.conda
Extracting openssl-3.1.2-h31becfc_0.conda
Extracting reproc-14.2.4-hb4cce97_0.conda
Extracting xz-5.2.6-h9cdd2b7_0.tar.bz2
Extracting yaml-cpp-0.7.0-h4de3ea5_2.tar.bz2
Extracting expat-2.5.0-hd600fc2_1.conda
Extracting libedit-3.1.20191231-he28a2e2_2.tar.bz2
Extracting libnghttp2-1.52.0-h250e5c5_0.conda
Extracting libsolv-0.7.24-hd84c7bf_3.conda
Extracting libsqlite-3.43.0-h194ca79_0.conda
Extracting libssh2-1.11.0-h492db2e_0.conda
Extracting libxml2-2.11.5-h3091e33_1.conda
Extracting readline-8.2-h8fc344f_1.conda
Extracting reproc-cpp-14.2.4-hd600fc2_0.conda
Extracting tk-8.6.12-hd8af866_0.tar.bz2
Extracting zlib-1.2.13-h31becfc_5.conda
Extracting zstd-1.5.5-h4c53e97_0.conda
Extracting gdbm-1.18-h0a1914f_2.tar.bz2
Extracting krb5-1.21.2-hc419048_0.conda
Extracting libarchive-3.6.2-h566b526_1.conda
Extracting sqlite-3.43.0-h3b3482f_0.conda
Extracting libcurl-8.2.1-h4e8248e_0.conda
Extracting pypy3.9-7.3.11-h21982c9_0.tar.bz2
Extracting libmamba-1.4.2-h4a4fd89_0.conda
Extracting python-3.9.16-0_73_pypy.conda
Extracting boltons-23.0.0-pyhd8ed1ab_0.conda
Extracting brotli-python-1.1.0-py39hf5dec27_0.conda
Extracting certifi-2023.7.22-pyhd8ed1ab_0.conda
Extracting charset-normalizer-3.2.0-pyhd8ed1ab_0.conda
Extracting colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
Extracting cryptography-41.0.3-py39h44d04de_0.conda
Extracting idna-3.4-pyhd8ed1ab_0.tar.bz2
Extracting jsonpointer-2.0-py_0.tar.bz2
Extracting libmambapy-1.4.2-py39hd834c8c_0.conda
Extracting packaging-23.1-pyhd8ed1ab_0.conda
Extracting pluggy-1.3.0-pyhd8ed1ab_0.conda
Extracting pycosat-0.6.4-py39h03cc6c3_1.tar.bz2
Extracting pycparser-2.21-pyhd8ed1ab_0.tar.bz2
Extracting pysocks-1.7.1-pyha2e5f31_6.tar.bz2
Extracting ruamel.yaml.clib-0.2.7-py39h39acebd_1.conda
Extracting setuptools-68.1.2-pyhd8ed1ab_0.conda
Extracting toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
Extracting wheel-0.41.2-pyhd8ed1ab_0.conda
Extracting cffi-1.15.1-py39hc350d71_3.conda
Extracting jsonpatch-1.32-pyhd8ed1ab_0.tar.bz2
Extracting pip-23.2.1-pyhd8ed1ab_0.conda
Extracting pyopenssl-23.2.0-pyhd8ed1ab_1.conda
Extracting ruamel.yaml-0.17.32-py39h916293d_0.conda
Extracting tqdm-4.66.1-pyhd8ed1ab_0.conda
Extracting urllib3-2.0.4-pyhd8ed1ab_0.conda
Extracting requests-2.31.0-pyhd8ed1ab_0.conda
Extracting zstandard-0.19.0-py39h03cc6c3_0.tar.bz2
Extracting conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda
Extracting conda-package-handling-2.2.0-pyh38be061_0.conda
Extracting conda-23.3.1-py39h387a52e_0.conda
Extracting conda-libmamba-solver-23.3.0-pyhd8ed1ab_0.conda
Extracting mamba-1.4.2-py39h927961e_0.conda

Installing base environment...


__
__ ______ ___ ____ _____ ___ / /_ ____ _
/ / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/
/ /_/ / / / / / / /_/ / / / / / / /_/ / /_/ /
/ .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/
/_/

Transaction

Prefix: /root/miniforge-pypy3

Updating specs:

- conda-forge/linux-aarch64::ca-certificates==2023.7.22=hcefe29a_0[md5=95d7f998087114466fa91e7c2887fa2f]
- conda-forge/linux-aarch64::libgomp==13.1.0=h2b4548d_0[md5=eb95b60cbf85783b0fdd3fab2d8c320f]
- conda-forge/linux-aarch64::libstdcxx-ng==13.1.0=h452befe_0[md5=572f5798bb3d4cc79650f0ca3149aeaa]
- conda-forge/noarch::pybind11-abi==4=hd8ed1ab_3[md5=878f923dd6acc8aeb47a75da6c4098be]
- conda-forge/linux-aarch64::python_abi==3.9=3_pypy39_pp73[md5=178b4467ed19c65efb56eadb3cf7a16d]
- conda-forge/noarch::tzdata==2023c=h71feb2d_0[md5=939e3e74d8be4dac89ce83b20de2492a]
- conda-forge/linux-aarch64::_openmp_mutex==4.5=2_gnu[md5=6168d71addc746e8f2b8d57dfd2edcea]
- conda-forge/linux-aarch64::libgcc-ng==13.1.0=h2b4548d_0[md5=02619409d02932e28d694144b509597d]
- conda-forge/linux-aarch64::bzip2==1.0.8=hf897c2e_4[md5=2d787570a729e273a4e75775ddf3348a]
- conda-forge/linux-aarch64::c-ares==1.19.1=h31becfc_0[md5=92eb241dd6b9d9b782a299fdb95bc699]
- conda-forge/linux-aarch64::fmt==9.1.0=hdd96247_0[md5=9250db7b71768a227b5fb9e075b5e53b]
- conda-forge/linux-aarch64::icu==73.2=h787c7f5_0[md5=9d3c29d71f28452a2e843aff8cbe09d2]
- conda-forge/linux-aarch64::keyutils==1.6.1=h4e544f5_0[md5=1f24853e59c68892452ef94ddd8afd4b]
- conda-forge/linux-aarch64::libev==4.33=h516909a_1[md5=9eac5901791494108c9b9ab85ca8aa93]
- conda-forge/linux-aarch64::libexpat==2.5.0=hd600fc2_1[md5=6cd3d0a28437b3845c260f9d71d434d7]
- conda-forge/linux-aarch64::libffi==3.4.2=h3557bc0_5[md5=dddd85f4d52121fab0a8b099c5e06501]
- conda-forge/linux-aarch64::libiconv==1.17=h9cdd2b7_0[md5=efc27cfbc82a027f65c02c661832ecfc]
- conda-forge/linux-aarch64::libzlib==1.2.13=h31becfc_5[md5=b213aa87eea9491ef7b129179322e955]
- conda-forge/linux-aarch64::lz4-c==1.9.4=hd600fc2_0[md5=500145a83ed07ce79c8cef24252f366b]
- conda-forge/linux-aarch64::lzo==2.10=h516909a_1000[md5=ef5661339990c399c68c71cfb341e6d7]
- conda-forge/linux-aarch64::ncurses==6.4=h2e1726e_0[md5=40beaf447150c2760affc591c7509595]
- conda-forge/linux-aarch64::openssl==3.1.2=h31becfc_0[md5=fde5a105b2bc9d6eced8a23005492c7e]
- conda-forge/linux-aarch64::reproc==14.2.4=hb4cce97_0[md5=ce483bf1d751947c68ea525f55f00573]
- conda-forge/linux-aarch64::xz==5.2.6=h9cdd2b7_0[md5=83baad393a31d59c20b63ba4da6592df]
- conda-forge/linux-aarch64::yaml-cpp==0.7.0=h4de3ea5_2[md5=87d60487be313187187affcf70d32b29]
- conda-forge/linux-aarch64::expat==2.5.0=hd600fc2_1[md5=6dfca4be3e0080934b1105d009747e98]
- conda-forge/linux-aarch64::libedit==3.1.20191231=he28a2e2_2[md5=29371161d77933a54fccf1bb66b96529]
- conda-forge/linux-aarch64::libnghttp2==1.52.0=h250e5c5_0[md5=bfacd7a58ed56ff30d9454d32513d8d3]
- conda-forge/linux-aarch64::libsolv==0.7.24=hd84c7bf_3[md5=05dd2c60fcb727455ee33bfd89676990]
- conda-forge/linux-aarch64::libsqlite==3.43.0=h194ca79_0[md5=9df5c3004549dc17b49843e0ce88c0fe]
- conda-forge/linux-aarch64::libssh2==1.11.0=h492db2e_0[md5=45532845e121677ad328c9af9953f161]
- conda-forge/linux-aarch64::libxml2==2.11.5=h3091e33_1[md5=32df81aac32e3196589e176572d9c720]
- conda-forge/linux-aarch64::readline==8.2=h8fc344f_1[md5=105eb1e16bf83bfb2eb380a48032b655]
- conda-forge/linux-aarch64::reproc-cpp==14.2.4=hd600fc2_0[md5=f2ba4e3adf041e375c41fee047408952]
- conda-forge/linux-aarch64::tk==8.6.12=hd8af866_0[md5=7894e82ff743bd96c76585ddebe28e2a]
- conda-forge/linux-aarch64::zlib==1.2.13=h31becfc_5[md5=96866c7301479abaf8308c50958c71a4]
- conda-forge/linux-aarch64::zstd==1.5.5=h4c53e97_0[md5=b74eb9dbb5c3c15cb3cee7cbdf198c75]
- conda-forge/linux-aarch64::gdbm==1.18=h0a1914f_2[md5=66e416a6c1b043d0bf2cc7e3d6b15cd3]
- conda-forge/linux-aarch64::krb5==1.21.2=hc419048_0[md5=55b51af37bf6fdcfe06f140e62e8c8db]
- conda-forge/linux-aarch64::libarchive==3.6.2=h566b526_1[md5=cfffef8050fbc22190c85b3f9a45a27f]
- conda-forge/linux-aarch64::sqlite==3.43.0=h3b3482f_0[md5=de369c8cbf7efdf6a35713bed5491e3a]
- conda-forge/linux-aarch64::libcurl==8.2.1=h4e8248e_0[md5=8f4ee59f04f68c339e02947d8ae56ee2]
- conda-forge/linux-aarch64::pypy3.9==7.3.11=h21982c9_0[md5=3ce87385505aa945cc438338a3af523c]
- conda-forge/linux-aarch64::libmamba==1.4.2=h4a4fd89_0[md5=75d654bb24804a39788ed8c1dc863d71]
- conda-forge/linux-aarch64::python==3.9.16=0_73_pypy[md5=4c1326df947d0ade7b3e562fc2482616]
- conda-forge/noarch::boltons==23.0.0=pyhd8ed1ab_0[md5=033eb25fffd222aceeca6d58cd953680]
- conda-forge/linux-aarch64::brotli-python==1.1.0=py39hf5dec27_0[md5=319f9c1d88ebbdba4c84373f0c711730]
- conda-forge/noarch::certifi==2023.7.22=pyhd8ed1ab_0[md5=7f3dbc9179b4dde7da98dfb151d0ad22]
- conda-forge/noarch::charset-normalizer==3.2.0=pyhd8ed1ab_0[md5=313516e9a4b08b12dfb1e1cd390a96e3]
- conda-forge/noarch::colorama==0.4.6=pyhd8ed1ab_0[md5=3faab06a954c2a04039983f2c4a50d99]
- conda-forge/linux-aarch64::cryptography==41.0.3=py39h44d04de_0[md5=3743df6803a65bd17c1a61c8ac89bb72]
- conda-forge/noarch::idna==3.4=pyhd8ed1ab_0[md5=34272b248891bddccc64479f9a7fffed]
- conda-forge/noarch::jsonpointer==2.0=py_0[md5=07d85c22a3beb102a48cd123df84c2a6]
- conda-forge/linux-aarch64::libmambapy==1.4.2=py39hd834c8c_0[md5=4e68273caf9e1c200b52222e8301c582]
- conda-forge/noarch::packaging==23.1=pyhd8ed1ab_0[md5=91cda59e66e1e4afe9476f8ef98f5c30]
- conda-forge/noarch::pluggy==1.3.0=pyhd8ed1ab_0[md5=2390bd10bed1f3fdc7a537fb5a447d8d]
- conda-forge/linux-aarch64::pycosat==0.6.4=py39h03cc6c3_1[md5=a022ef2ffa89eb479a551a3156acfdb3]
- conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0[md5=076becd9e05608f8dc72757d5f3a91ff]
- conda-forge/noarch::pysocks==1.7.1=pyha2e5f31_6[md5=2a7de29fb590ca14b5243c4c812c8025]
- conda-forge/linux-aarch64::ruamel.yaml.clib==0.2.7=py39h39acebd_1[md5=a9b300a3c1e822ed1d46c6ce6b63f04e]
- conda-forge/noarch::setuptools==68.1.2=pyhd8ed1ab_0[md5=4fe12573bf499ff85a0a364e00cc5c53]
- conda-forge/noarch::toolz==0.12.0=pyhd8ed1ab_0[md5=92facfec94bc02d6ccf42e7173831a36]
- conda-forge/noarch::wheel==0.41.2=pyhd8ed1ab_0[md5=1ccd092478b3e0ee10d7a891adbf8a4f]
- conda-forge/linux-aarch64::cffi==1.15.1=py39hc350d71_3[md5=406476371be7621ba7f91ac752e58513]
- conda-forge/noarch::jsonpatch==1.32=pyhd8ed1ab_0[md5=09150b51b0528a31a0f6500b96fdde82]
- conda-forge/noarch::pip==23.2.1=pyhd8ed1ab_0[md5=e2783aa3f9235225eec92f9081c5b801]
- conda-forge/noarch::pyopenssl==23.2.0=pyhd8ed1ab_1[md5=34f7d568bf59d18e3fef8c405cbece21]
- conda-forge/linux-aarch64::ruamel.yaml==0.17.32=py39h916293d_0[md5=daa8c1918552f8ad11694b4269089226]
- conda-forge/noarch::tqdm==4.66.1=pyhd8ed1ab_0[md5=03c97908b976498dcae97eb4e4f3149c]
- conda-forge/noarch::urllib3==2.0.4=pyhd8ed1ab_0[md5=18badd8fa3648d1beb1fcc7f2e0f756e]
- conda-forge/noarch::requests==2.31.0=pyhd8ed1ab_0[md5=a30144e4156cdbb236f99ebb49828f8b]
- conda-forge/linux-aarch64::zstandard==0.19.0=py39h03cc6c3_0[md5=c0fb22556736a10171cd8ac752309f34]
- conda-forge/noarch::conda-package-streaming==0.9.0=pyhd8ed1ab_0[md5=38253361efb303deead3eab39ae9269b]
- conda-forge/noarch::conda-package-handling==2.2.0=pyh38be061_0[md5=8a3ae7f6318376aa08ea753367bb7dd6]
- conda-forge/linux-aarch64::conda==23.3.1=py39h387a52e_0[md5=39ceb6a075452ddae96dab2238e15e08]
- conda-forge/noarch::conda-libmamba-solver==23.3.0=pyhd8ed1ab_0[md5=2edd368915b8a1c3e294c9ac944390d9]
- conda-forge/linux-aarch64::mamba==1.4.2=py39h927961e_0[md5=00d1c6d111ff6edcc5ddfdc1e0d6214d]


Package Version Build Channel Size
───────────────────────────────────────────────────────────────────────────────────
Install:
───────────────────────────────────────────────────────────────────────────────────

+ _openmp_mutex 4.5 2_gnu conda-forge Cached
+ boltons 23.0.0 pyhd8ed1ab_0 conda-forge Cached
+ brotli-python 1.1.0 py39hf5dec27_0 conda-forge Cached
+ bzip2 1.0.8 hf897c2e_4 conda-forge Cached
+ c-ares 1.19.1 h31becfc_0 conda-forge Cached
+ ca-certificates 2023.7.22 hcefe29a_0 conda-forge Cached
+ certifi 2023.7.22 pyhd8ed1ab_0 conda-forge Cached
+ cffi 1.15.1 py39hc350d71_3 conda-forge Cached
+ charset-normalizer 3.2.0 pyhd8ed1ab_0 conda-forge Cached
+ colorama 0.4.6 pyhd8ed1ab_0 conda-forge Cached
+ conda 23.3.1 py39h387a52e_0 conda-forge Cached
+ conda-libmamba-solver 23.3.0 pyhd8ed1ab_0 conda-forge Cached
+ conda-package-handling 2.2.0 pyh38be061_0 conda-forge Cached
+ conda-package-streaming 0.9.0 pyhd8ed1ab_0 conda-forge Cached
+ cryptography 41.0.3 py39h44d04de_0 conda-forge Cached
+ expat 2.5.0 hd600fc2_1 conda-forge Cached
+ fmt 9.1.0 hdd96247_0 conda-forge Cached
+ gdbm 1.18 h0a1914f_2 conda-forge Cached
+ icu 73.2 h787c7f5_0 conda-forge Cached
+ idna 3.4 pyhd8ed1ab_0 conda-forge Cached
+ jsonpatch 1.32 pyhd8ed1ab_0 conda-forge Cached
+ jsonpointer 2.0 py_0 conda-forge Cached
+ keyutils 1.6.1 h4e544f5_0 conda-forge Cached
+ krb5 1.21.2 hc419048_0 conda-forge Cached
+ libarchive 3.6.2 h566b526_1 conda-forge Cached
+ libcurl 8.2.1 h4e8248e_0 conda-forge Cached
+ libedit 3.1.20191231 he28a2e2_2 conda-forge Cached
+ libev 4.33 h516909a_1 conda-forge Cached
+ libexpat 2.5.0 hd600fc2_1 conda-forge Cached
+ libffi 3.4.2 h3557bc0_5 conda-forge Cached
+ libgcc-ng 13.1.0 h2b4548d_0 conda-forge Cached
+ libgomp 13.1.0 h2b4548d_0 conda-forge Cached
+ libiconv 1.17 h9cdd2b7_0 conda-forge Cached
+ libmamba 1.4.2 h4a4fd89_0 conda-forge Cached
+ libmambapy 1.4.2 py39hd834c8c_0 conda-forge Cached
+ libnghttp2 1.52.0 h250e5c5_0 conda-forge Cached
+ libsolv 0.7.24 hd84c7bf_3 conda-forge Cached
+ libsqlite 3.43.0 h194ca79_0 conda-forge Cached
+ libssh2 1.11.0 h492db2e_0 conda-forge Cached
+ libstdcxx-ng 13.1.0 h452befe_0 conda-forge Cached
+ libxml2 2.11.5 h3091e33_1 conda-forge Cached
+ libzlib 1.2.13 h31becfc_5 conda-forge Cached
+ lz4-c 1.9.4 hd600fc2_0 conda-forge Cached
+ lzo 2.10 h516909a_1000 conda-forge Cached
+ mamba 1.4.2 py39h927961e_0 conda-forge Cached
+ ncurses 6.4 h2e1726e_0 conda-forge Cached
+ openssl 3.1.2 h31becfc_0 conda-forge Cached
+ packaging 23.1 pyhd8ed1ab_0 conda-forge Cached
+ pip 23.2.1 pyhd8ed1ab_0 conda-forge Cached
+ pluggy 1.3.0 pyhd8ed1ab_0 conda-forge Cached
+ pybind11-abi 4 hd8ed1ab_3 conda-forge Cached
+ pycosat 0.6.4 py39h03cc6c3_1 conda-forge Cached
+ pycparser 2.21 pyhd8ed1ab_0 conda-forge Cached
+ pyopenssl 23.2.0 pyhd8ed1ab_1 conda-forge Cached
+ pypy3.9 7.3.11 h21982c9_0 conda-forge Cached
+ pysocks 1.7.1 pyha2e5f31_6 conda-forge Cached
+ python 3.9.16 0_73_pypy conda-forge Cached
+ python_abi 3.9 3_pypy39_pp73 conda-forge Cached
+ readline 8.2 h8fc344f_1 conda-forge Cached
+ reproc 14.2.4 hb4cce97_0 conda-forge Cached
+ reproc-cpp 14.2.4 hd600fc2_0 conda-forge Cached
+ requests 2.31.0 pyhd8ed1ab_0 conda-forge Cached
+ ruamel.yaml 0.17.32 py39h916293d_0 conda-forge Cached
+ ruamel.yaml.clib 0.2.7 py39h39acebd_1 conda-forge Cached
+ setuptools 68.1.2 pyhd8ed1ab_0 conda-forge Cached
+ sqlite 3.43.0 h3b3482f_0 conda-forge Cached
+ tk 8.6.12 hd8af866_0 conda-forge Cached
+ toolz 0.12.0 pyhd8ed1ab_0 conda-forge Cached
+ tqdm 4.66.1 pyhd8ed1ab_0 conda-forge Cached
+ tzdata 2023c h71feb2d_0 conda-forge Cached
+ urllib3 2.0.4 pyhd8ed1ab_0 conda-forge Cached
+ wheel 0.41.2 pyhd8ed1ab_0 conda-forge Cached
+ xz 5.2.6 h9cdd2b7_0 conda-forge Cached
+ yaml-cpp 0.7.0 h4de3ea5_2 conda-forge Cached
+ zlib 1.2.13 h31becfc_5 conda-forge Cached
+ zstandard 0.19.0 py39h03cc6c3_0 conda-forge Cached
+ zstd 1.5.5 h4c53e97_0 conda-forge Cached

Summary:

Install: 77 packages

Total download: 0 B

───────────────────────────────────────────────────────────────────────────────────



Transaction starting
Linking ca-certificates-2023.7.22-hcefe29a_0
Linking libgomp-13.1.0-h2b4548d_0
Linking libstdcxx-ng-13.1.0-h452befe_0
Linking pybind11-abi-4-hd8ed1ab_3
Linking python_abi-3.9-3_pypy39_pp73
Linking tzdata-2023c-h71feb2d_0
Linking _openmp_mutex-4.5-2_gnu
Linking libgcc-ng-13.1.0-h2b4548d_0
Linking bzip2-1.0.8-hf897c2e_4
Linking c-ares-1.19.1-h31becfc_0
Linking fmt-9.1.0-hdd96247_0
Linking icu-73.2-h787c7f5_0
Linking keyutils-1.6.1-h4e544f5_0
Linking libev-4.33-h516909a_1
Linking libexpat-2.5.0-hd600fc2_1
Linking libffi-3.4.2-h3557bc0_5
Linking libiconv-1.17-h9cdd2b7_0
Linking libzlib-1.2.13-h31becfc_5
Linking lz4-c-1.9.4-hd600fc2_0
Linking lzo-2.10-h516909a_1000
Linking ncurses-6.4-h2e1726e_0
Linking openssl-3.1.2-h31becfc_0
Linking reproc-14.2.4-hb4cce97_0
Linking xz-5.2.6-h9cdd2b7_0
Linking yaml-cpp-0.7.0-h4de3ea5_2
Linking expat-2.5.0-hd600fc2_1
Linking libedit-3.1.20191231-he28a2e2_2
Linking libnghttp2-1.52.0-h250e5c5_0
Linking libsolv-0.7.24-hd84c7bf_3
Linking libsqlite-3.43.0-h194ca79_0
Linking libssh2-1.11.0-h492db2e_0
Linking libxml2-2.11.5-h3091e33_1
Linking readline-8.2-h8fc344f_1
Linking reproc-cpp-14.2.4-hd600fc2_0
Linking tk-8.6.12-hd8af866_0
Linking zlib-1.2.13-h31becfc_5
Linking zstd-1.5.5-h4c53e97_0
Linking gdbm-1.18-h0a1914f_2
Linking krb5-1.21.2-hc419048_0
Linking libarchive-3.6.2-h566b526_1
Linking sqlite-3.43.0-h3b3482f_0
Linking libcurl-8.2.1-h4e8248e_0
Linking pypy3.9-7.3.11-h21982c9_0
Linking libmamba-1.4.2-h4a4fd89_0
Linking python-3.9.16-0_73_pypy
Linking boltons-23.0.0-pyhd8ed1ab_0
Linking brotli-python-1.1.0-py39hf5dec27_0
Linking certifi-2023.7.22-pyhd8ed1ab_0
Linking charset-normalizer-3.2.0-pyhd8ed1ab_0
Linking colorama-0.4.6-pyhd8ed1ab_0
Linking cryptography-41.0.3-py39h44d04de_0
Linking idna-3.4-pyhd8ed1ab_0
Linking jsonpointer-2.0-py_0
Linking libmambapy-1.4.2-py39hd834c8c_0
Linking packaging-23.1-pyhd8ed1ab_0
Linking pluggy-1.3.0-pyhd8ed1ab_0
Linking pycosat-0.6.4-py39h03cc6c3_1
Linking pycparser-2.21-pyhd8ed1ab_0
Linking pysocks-1.7.1-pyha2e5f31_6
Linking ruamel.yaml.clib-0.2.7-py39h39acebd_1
Linking setuptools-68.1.2-pyhd8ed1ab_0
Linking toolz-0.12.0-pyhd8ed1ab_0
Linking wheel-0.41.2-pyhd8ed1ab_0
Linking cffi-1.15.1-py39hc350d71_3
Linking jsonpatch-1.32-pyhd8ed1ab_0
Linking pip-23.2.1-pyhd8ed1ab_0
Linking pyopenssl-23.2.0-pyhd8ed1ab_1
Linking ruamel.yaml-0.17.32-py39h916293d_0
Linking tqdm-4.66.1-pyhd8ed1ab_0
Linking urllib3-2.0.4-pyhd8ed1ab_0
Linking requests-2.31.0-pyhd8ed1ab_0
Linking zstandard-0.19.0-py39h03cc6c3_0
Linking conda-package-streaming-0.9.0-pyhd8ed1ab_0
Linking conda-package-handling-2.2.0-pyh38be061_0
Linking conda-23.3.1-py39h387a52e_0
Linking conda-libmamba-solver-23.3.0-pyhd8ed1ab_0
Linking mamba-1.4.2-py39h927961e_0
Transaction finished
installation finished.
Do you wish the installer to initialize Miniforge-pypy3
by running conda init? [yes|no]
[no] >>> yes
no change /root/miniforge-pypy3/condabin/conda
no change /root/miniforge-pypy3/bin/conda
no change /root/miniforge-pypy3/bin/conda-env
no change /root/miniforge-pypy3/bin/activate
no change /root/miniforge-pypy3/bin/deactivate
no change /root/miniforge-pypy3/etc/profile.d/conda.sh
no change /root/miniforge-pypy3/etc/fish/conf.d/conda.fish
no change /root/miniforge-pypy3/shell/condabin/Conda.psm1
no change /root/miniforge-pypy3/shell/condabin/conda-hook.ps1
no change /root/miniforge-pypy3/lib/python3.9/site-packages/xontrib/conda.xsh
no change /root/miniforge-pypy3/etc/profile.d/conda.csh
modified /root/.bashrc

==> For changes to take effect, close and re-open your current shell. <==


__ __ __ __
/ \ / \ / \ / \
/ \/ \/ \/ \
███████████████/ /██/ /██/ /██/ /████████████████████████
/ / \ / \ / \ / \ \____
/ / \_/ \_/ \_/ \ o \__,
/ _/ \_____/ `
|/
███╗ ███╗ █████╗ ███╗ ███╗██████╗ █████╗
████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
██╔████╔██║███████║██╔████╔██║██████╔╝███████║
██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
██║ ╚═╝ ██║██║ ██║██║ ╚═╝ ██║██████╔╝██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝

mamba (1.4.2) supported by @QuantStack

GitHub: https://github.com/mamba-org/mamba
Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████

no change /root/miniforge-pypy3/condabin/conda
no change /root/miniforge-pypy3/bin/conda
no change /root/miniforge-pypy3/bin/conda-env
no change /root/miniforge-pypy3/bin/activate
no change /root/miniforge-pypy3/bin/deactivate
no change /root/miniforge-pypy3/etc/profile.d/conda.sh
no change /root/miniforge-pypy3/etc/fish/conf.d/conda.fish
no change /root/miniforge-pypy3/shell/condabin/Conda.psm1
no change /root/miniforge-pypy3/shell/condabin/conda-hook.ps1
no change /root/miniforge-pypy3/lib/python3.9/site-packages/xontrib/conda.xsh
no change /root/miniforge-pypy3/etc/profile.d/conda.csh
no change /root/.bashrc
No action taken.
Added mamba to /root/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

If you'd prefer that conda's base environment not be activated on startup,
set the auto_activate_base parameter to false:

conda config --set auto_activate_base false

Thank you for installing Miniforge-pypy3!

*宝塔后台

一个简易又复杂的后台,集成了很多操作,点击鼠标即可完成快速安装各种项目。官方的跨平台自适应安装脚本如下:

1
sudo curl -sSO http://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh

arozOS自编译

1
curl -L https://raw.githubusercontent.com/tobychui/arozos/master/installer/install_for_pi.sh | bash

由于自编译时需要安装Go框架,但网络问题无法解决(谷歌连接太慢),遂放弃自编译,选择镜像进行烧录(见§第三方NAS系统)。

在SD卡刷镜像安装成功后,升级问题又难以解决,现在的固件时1.120,最新的beta时2.10,更新是OTA模式的,需要借用作者开发的一个名为aroz-online/launcher: The ArozOS launcher for over the air (OTA) updates (github.com)的工具,但我chmod 775后出现Segmentation fault错误,可能是用户组的问题,无妨无妨,1.120够用了。

*OpenMediaVault安装

openmediavault 是一个基于 Debian 的完整网络附加存储 (NAS) 解决方案。

  • 适用于 x86-64 和 ARM 平台
  • 具有完整的 Web 管理界面
  • 启用后可以通过 SSH 进行控制
  • 可以使用各种不同的协议访问文件存储,例如 作为 FTP、SMB/CIFS 或 NFS,对于用户和组,也可通过访问权限管理进行控制
    OpenMediaVault主要用于家庭环境或小型家庭办公室,但不限于这些场景。这是一个简单易用的开箱即用的(out-of-the-box)解决方案,每个人都可以安装和管理,无需网络和存储系统的专家级知识。该系统建立在模块化设计之上,安装基本系统后可以通过插件轻松扩展。其他第三方 插件可通过OMV-Extras存储库获得。

参考官方安装方法:在 Debian 上的安装 — openmediavault 6.x.y 文档与清华源帮助:OpenMediaVault | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
手动安装 openmediavault 密钥环:

1
2
3
apt-get install --yes gnupg
wget -O "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" https://packages.openmediavault.org/public/archive.key
apt-key add "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc"

添加包存储库:

1
2
3
4
5
6
7
8
9
10
11
cat <<EOF > /etc/apt/sources.list.d/openmediavault.list
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan main
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan main
## Uncomment the following line to add software from the proposed repository.
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan-proposed main
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public shaitan partner
# deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages shaitan partner
EOF

安装 openmediavault 软件包:

1
2
3
4
5
6
7
8
9
10
11
12
export LANG=C.UTF-8
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get --yes --auto-remove --show-upgraded \
--allow-downgrades --allow-change-held-packages \
--no-install-recommends \
--option DPkg::Options::="--force-confdef" \
--option DPkg::Options::="--force-confold" \
install openmediavault-keyring openmediavault

omv-confdbadm populate

正常的话,到这一步就结束了。但谁让我命途多舛,偏偏又遇到了一个问题,而且搜了好久都找不到解决办法,遂放弃OMV,如有人能解决,我感激不尽。

1
2
3
4
5
6
7
> Errors were encountered while processing:
proftpd-core
proftpd-mod-vroot
openmediavault
proftpd-mod-crypto
proftpd-mod-wrap
proftpd-basic

内网穿透

通过Cloudflare的cloudflared工具实现内网穿透。具体步骤如下:

  1. 打开域名管理页下的access,提示转移到Zero Trust,在Zero TrustAccess-Tunnels下新建tunnel (隧道)。
    打开access
    新建tunnel
  2. 填写隧道名称,选择操作系统(树莓派4B2023年系统,选择Debian-arm64-bit),生成安装代码(代码由三部分组成:下载、安装、自动配置,最主要的是最后一部分)。
    生成安装代码
  3. 由于网络问题,可以用其他方式下载cloudflared-linux-amd64.deb然后上传并安装,最后执行服务安装指令。成功时的状态
    这样以后,就可以在小小的树莓派上安装各种服务,大玩特玩了,跟VPS一样的体验!

成果

  1. 低成本NAS
  2. 小小的、低速的、无成本的、数据由自己掌握的云端服务器
    实体

Alist 网盘Hub

安装

1
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install
进行中
1
2
3
4
5
6
下载 Alist latest ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
18 12.3M 18 2395k 0 0 11032 0 0:19:33 0:03:42 0:15:51 9959

配置

Guide | AList文档 (nn.ci)

安装后进入localhost:5244即可进入管理界面,然后参照说明文档进行配置,并添加多个云盘。
成果