金就砺则利
——荀子
✍文章痕迹
楔子
春节期间拾掇了过去一年中各个设备上的照片,并转移到了家里专门备份的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,最后通过电脑连接上树莓派。
[{"url":"../../../images/20240104/树莓派NAS-20240313103018941.webp","alt":"基本配置"},{"url":"../../../images/20240104/树莓派NAS-20240313103019286.webp","alt":"开启密码登陆ssh"},{"url":"../../../images/20240104/树莓派NAS-20240313103019784.webp","alt":"进行烧录"}]
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
换源
一切正常的话,会进入到树莓派的终端,现在就可以自由操作了,第一步先解决网络情况:
树莓派更换清华源(直接参考清华源的说明文档即可)
raspbian | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
新增github临时hosts(救急用)
Github hosts地址
更改DNS解析配置/etc/resolv.conf
中的nameserver
为8.8.8.8
或其他大厂的DNS,不然之后内网穿透会报错。
VPN(特殊情形)
下载gephARMv7,并上传至树莓派(ssh附带的scp命令可以实现)
更改文件访问权限 chmod u+x geph4-client-linux-armv7
运行该程序 ./geph4-client-linux-armv7 connect --username xxx --password xxx --socks5-listen 0.0.0.0:9909
更改节点:先获取节点地址 ./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 是一个基于 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-8export DEBIAN_FRONTEND=noninteractiveexport APT_LISTCHANGES_FRONTEND=noneapt-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
工具实现内网穿透。具体步骤如下:
打开域名管理页下的access,提示转移到Zero Trust ,在Zero Trust 的Access-Tunnels
下新建tunnel
(隧道)。
填写隧道名称,选择操作系统(树莓派4B2023年系统,选择Debian-arm64-bit
),生成安装代码(代码由三部分组成:下载、安装、自动配置,最主要的是最后一部分)。
由于网络问题,可以用其他方式下载cloudflared-linux-amd64.deb
然后上传并安装,最后执行服务安装指令。
这样以后,就可以在小小的树莓派上安装各种服务,大玩特玩了,跟VPS一样的体验!
成果
低成本NAS
小小的、低速的、无成本的、数据由自己掌握的云端服务器
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
即可进入管理界面,然后参照说明文档进行配置,并添加多个云盘。