news 2026/6/1 13:46:01

基于树莓派搭建私有文件服务器与加密备份系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于树莓派搭建私有文件服务器与加密备份系统

1. 项目概述与核心价值

手头有一堆项目文件、家庭照片、工作文档,既想随时随地访问,又担心存在网盘里不安全或者速度慢?如果你也有这个烦恼,那今天分享的这个基于树莓派搭建私有文件服务器和备份系统的方案,或许能给你提供一个全新的思路。这不仅仅是一个简单的“网络硬盘”教程,而是一套融合了本地存储的可靠性、私有云访问的便捷性以及端到端加密安全性的完整解决方案。核心思路是,利用闲置的树莓派作为硬件基石,通过特定的软件栈,将其打造成一个24小时在线、仅属于你个人的数据枢纽。

这个方案的核心价值在于“自主可控”。与依赖第三方服务的公有云不同,所有数据都物理存储在你家中的硬盘上,访问权限完全由你掌控。我们借助 Diode Drive 这类工具来实现安全的远程同步和访问,它通过加密隧道进行点对点(P2P)传输,数据不经过任何中心服务器,从根源上避免了数据泄露的风险。无论是作为程序员备份代码仓库,设计师同步大型素材文件,还是家庭用户集中管理照片和视频,这个小盒子都能胜任。整个搭建过程涉及操作系统配置、网络服务开启、安全工具部署以及自动化设置,我会把每一步的原理、实操细节以及我踩过的坑都讲清楚,让你不仅能照着做出来,更能明白为什么要这么做。

2. 硬件准备与系统初始化

2.1 硬件选型与组装要点

工欲善其事,必先利其器。硬件是整套系统稳定运行的物理基础,选择合适的组件并正确组装至关重要。

树莓派本体选择:虽然原文提到树莓派4、树莓派Zero都可以,但根据我的长期使用经验,强烈建议使用树莓派4B 4GB或8GB内存版本作为起点。树莓派Zero的性能(尤其是单核CPU和512MB内存)在处理文件加密、压缩和多个同步连接时会非常吃力,仅适合极轻量级的任务。树莓派4的千兆以太网口和USB 3.0接口是巨大优势,前者保障了内网传输速度,后者使得连接外部USB硬盘时不会因接口带宽成为瓶颈。如果你计划连接大容量机械硬盘(比如4TB以上),建议额外配备一个带独立供电的USB 3.0硬盘盒,因为树莓派自身的USB口供电可能不足以驱动大容量硬盘稳定工作,供电不足会导致硬盘频繁启停甚至损坏。

散热与供电:树莓派4在持续高负载下发热量不容小觑。一个带有散热风扇的金属外壳是必选项,它能有效控制芯片温度,避免因过热导致降频甚至死机。供电方面,务必使用官方推荐的5V/3A电源适配器,劣质电源引起的电压不稳是系统随机性故障的常见元凶。

存储介质:系统盘推荐使用至少32GB、Class 10或A1/A2级别的Micro SD卡。A1/A2标准针对应用程序随机读写做了优化,能提升系统响应速度。数据盘的选择更灵活:对于入门或数据量不大的用户,一个大容量(如1TB)的USB 3.0闪存盘足够;但对于正式的数据仓库,我强烈推荐使用2.5英寸的SATA固态硬盘(SSD)或机械硬盘(HDD),通过USB 3.0转SATA转换线连接。SSD速度快、安静、抗震动,是首选;HDD容量大、成本低,适合做冷备份或归档存储。别忘了,如果使用机械硬盘,最好选择为NAS设计的型号(如西数红盘、希捷酷狼),它们支持7x24小时运行和振动抑制。

2.2 Raspberry Pi OS安装与基础配置

系统安装现在变得异常简单,得益于官方的“Raspberry Pi Imager”工具。这里有几个关键细节决定了后续使用的便利性。

首先,在下载Imager工具后,不要急着写入。点击“选择操作系统”时,建议选择“Raspberry Pi OS (64-bit)”版本。64位系统能更好地利用4GB及以上内存,并且对新一代软件的兼容性更好。接着,点击右下角的齿轮图标(高级选项),这里有几个必选项:

  1. 启用SSH:直接勾选“Enable SSH”,并选择“使用密码认证”或“使用公钥认证”。如果选择密码,设置一个强密码;如果选择公钥,可以预先将你日常电脑的SSH公钥粘贴进去。这步操作相当于在烧录系统时就直接完成了SSH服务端配置,系统首次启动后即可远程登录,完全无需连接键盘和显示器,这是实现“无头模式”(Headless)运行的关键。
  2. 配置Wi-Fi和国家:如果你的树莓派将通过Wi-Fi联网,在此处预先填入SSID和密码,并务必正确设置国家代码(如CN)。错误的国家代码可能导致无法搜索到5GHz Wi-Fi网络。
  3. 设置主机名和用户名/密码:建议设置一个易识别的主机名,如pi-fileserver。用户名可以保持默认的pi,但密码一定要修改为强密码。

完成设置后,将镜像写入SD卡。首次启动树莓派,如果已预先配置了Wi-Fi和SSH,你只需要等待几分钟,然后在同一局域网内的电脑上,使用终端命令ssh pi@<树莓派主机名>.local(例如ssh pi@pi-fileserver.local)或ssh pi@<树莓派IP地址>即可连接。使用.local域名需要电脑支持mDNS(Bonjour服务),Windows用户可能需要安装“Bonjour Print Services”或使用IP地址。

连接成功后,第一件事是更新系统:sudo apt update && sudo apt full-upgrade -yfull-upgrade比单纯的upgrade更彻底,会处理依赖关系的变更。更新完成后,建议执行sudo raspi-config进行一些基础设置:

  • 扩展文件系统:在“Advanced Options”中,选择“Expand Filesystem”,将根分区扩展到整个SD卡。
  • 内存分配:如果不需要图形界面,可以在“Performance Options” -> “GPU Memory”中,将GPU内存调整为16(最低值),将更多内存留给系统。
  • 本地化选项:确保时区(Asia/Shanghai)和键盘布局正确。

注意:首次通过SSH登录时,系统会提示你接受主机的RSA密钥指纹,这是正常的安全机制,输入yes即可。如果未来重装系统后IP地址没变但密钥变了,连接时会报错。此时需要在你电脑的~/.ssh/known_hosts文件中删除对应树莓派IP的那一行,然后重新连接。

3. 核心服务部署:SSH、VNC与文件共享基础

3.1 加固SSH访问与密钥认证

SSH是我们远程管理树莓派的生命线,默认的密码登录方式存在被暴力破解的风险,因此必须加固。

启用密钥对认证并禁用密码登录是标准做法。首先,在你的个人电脑(客户端)上生成一对SSH密钥(如果还没有的话):ssh-keygen -t ed25519 -C “your_email@example.com”。Ed25519算法比传统的RSA更安全快速。将生成的公钥(~/.ssh/id_ed25519.pub)内容复制。

然后,在树莓派(服务器)上,为pi用户创建SSH授权密钥文件:mkdir -p ~/.ssh && echo “你的公钥内容” >> ~/.ssh/authorized_keys。接着,修改文件权限,这是非常关键的一步,权限过宽SSH会拒绝工作:

chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

现在,你可以尝试从个人电脑无需密码直接SSH登录树莓派。确认密钥登录成功后,开始加固SSH服务配置。编辑SSH服务端配置文件:sudo nano /etc/ssh/sshd_config。需要修改以下几项:

  • PermitRootLogin prohibit-password:禁止root直接登录,即使有密钥也不行,更安全。
  • PasswordAuthentication no禁用密码认证,强制使用密钥。在确认密钥登录绝对成功之前,不要修改此项!可以先改为no,但先不重启服务,开另一个终端窗口测试。或者,更稳妥的方法是先设置PasswordAuthentication yesPubkeyAuthentication yes,测试密钥登录成功后,再禁用密码并重启服务。
  • Port 22:可以考虑更改为一个非标准端口(如2222),这能减少自动化扫描脚本的攻击。修改后,连接命令需加-p参数,如ssh -p 2222 pi@host
  • AllowUsers pi:明确只允许pi用户通过SSH登录。

每次修改配置后,使用sudo systemctl reload sshsudo systemctl restart ssh使配置生效。务必在重启前,保留一个已建立的SSH连接会话作为“逃生通道”,以防配置错误导致无法连接。

3.2 配置VNC实现图形化远程桌面

虽然SSH对于大多数管理任务已经足够,但有时图形化界面(如配置Diode Drive)会更直观。RealVNC是树莓派官方推荐的方案,它已集成在系统中。

通过SSH登录树莓派后,使用sudo raspi-config命令,进入“Interface Options” -> “VNC”,选择“Yes”启用。这实际上是在系统服务中开启了VNC Server。你也可以通过命令行安装和启用:sudo apt update && sudo apt install realvnc-vnc-server -y,然后使用sudo systemctl enable vncserver-x11-serviced设置开机自启。

解决无显示器连接问题:树莓派的VNC服务默认依赖于活动的图形会话。如果树莓派没有连接物理显示器,VNC可能无法启动或显示黑屏。这就需要强制HDMI模拟输出。编辑配置文件:sudo nano /boot/config.txt,找到或添加以下两行:

hdmi_force_hotplug=1 hdmi_group=2 hdmi_mode=82

hdmi_force_hotplug=1强制系统认为HDMI已连接。hdmi_group=2hdmi_mode=82指定显示模式为1920x1080分辨率、60Hz刷新率(Group 2, Mode 82)。保存后重启树莓派。

在个人电脑上下载并安装VNC Viewer客户端。启动后,在地址栏输入树莓派的IP地址(如192.168.1.100:5900),端口5900是VNC的默认端口。首次连接会提示安全证书,点击继续。然后输入树莓派的用户名(pi)和密码即可登录到图形桌面。

实操心得:VNC的默认画质和帧率在局域网内尚可,但通过互联网远程访问可能会比较卡顿。对于远程管理,优先使用SSH命令行。VNC更适合进行那些必须在图形界面下完成的初始软件配置工作。为了安全,可以考虑结合后面介绍的Diode CLI,将VNC服务通过加密隧道暴露,而不是直接在路由器上做端口映射。

3.3 挂载大容量数据存储盘

我们的文件服务器需要一个稳定、大容量的存储位置,而不是系统所在的SD卡。这里以连接一个USB硬盘为例。

首先,将USB硬盘连接到树莓派。通过lsblksudo fdisk -l命令查看磁盘设备标识,通常新连接的硬盘会显示为/dev/sda/dev/sdb,其分区可能是/dev/sda1

假设硬盘是全新的,我们需要先分区和格式化(如果硬盘已有数据,请跳过此步,务必确认盘符,操作错误会导致数据丢失!):

sudo parted /dev/sda --script mklabel gpt sudo parted /dev/sda --script mkpart primary ext4 0% 100% sudo mkfs.ext4 /dev/sda1

这里我们创建了一个GPT分区表,并格式化为ext4文件系统,ext4是Linux下稳定可靠的选择。

接下来,创建一个挂载点,比如/mnt/usb_storagesudo mkdir -p /mnt/usb_storage。为了每次启动自动挂载,需要编辑文件系统表:sudo nano /etc/fstab。在文件末尾添加一行:

UUID=<你的分区UUID> /mnt/usb_storage ext4 defaults,nofail,noatime 0 2

如何获取UUID?使用命令sudo blkid /dev/sda1,复制输出中UUID=后面的值,替换上面的<你的分区UUID>

参数解释

  • defaults:使用默认挂载参数(rw, suid, dev, exec, auto, nouser, async)。
  • nofail:非常重要!即使启动时硬盘不存在或无法挂载,系统也会继续启动,而不是卡住。这对于移动硬盘或可能偶尔断电的硬盘至关重要。
  • noatime:不记录文件的访问时间,可以减少磁盘写操作,提升性能,对文件服务器场景非常有益。

保存后,可以先用sudo mount -a测试配置是否正确,若无报错,再用df -h查看是否挂载成功。最后,为了便于管理,将挂载点的所有权赋予pi用户:sudo chown -R pi:pi /mnt/usb_storage

4. 部署Diode Drive实现加密同步与远程访问

4.1 Diode Drive核心原理与安装

Diode Drive是实现我们“安全远程私有云”愿景的核心软件。它的工作原理不同于传统的中心化网盘(如Dropbox)或单纯的SFTP服务器。它基于P2P(点对点)技术,在您授权的设备之间建立端到端加密的隧道,直接同步文件。数据永远不会上传到Diode公司的服务器,他们只负责协助设备发现和连接协商(通过区块链网络),一旦连接建立,数据流仅在您的设备间传输。

这种架构带来了两个核心优势:一是隐私性极强,服务商无法访问你的任何文件内容;二是访问不受地域限制,只要设备能上网,就能相互发现并同步,无需公网IP或复杂的端口转发。

安装过程如下。首先通过SSH登录树莓派,安装必要的图形库依赖:sudo apt install libglu1-mesa -y。然后,前往Diode Drive官网下载Linux ARM版本(适用于树莓派)。通常可以使用wget直接下载链接。例如(请以官网最新链接为准):

wget https://diode.io/download/diode-drive-linux-arm64.deb

下载完成后,安装deb包:sudo dpkg -i diode-drive-linux-arm64.deb。如果遇到依赖问题,运行sudo apt --fix-broken install来解决。

安装完成后,可以在图形界面的应用菜单中找到Diode Drive,或者直接在终端输入diode-drive启动。首次启动会引导你创建账户(这个账户是Diode网络中的身份标识,用于设备间相互识别和邀请),并生成一个12词的备份助记词务必用笔和纸离线、安全地保存好这个助记词!它是你账户的唯一恢复凭证,丢失意味着无法找回账户和通过该账户同步的所有文件访问权限。

4.2 配置Diode Drive与创建同步空间(Zone)

创建账户后,进入Diode Drive主界面。首要任务是修改默认的同步目录。软件默认会将同步的文件放在/home/pi/Diode Drive目录下,这个目录位于SD卡上,空间有限。我们需要将其指向我们之前挂载的大容量USB存储盘。

点击设置(Settings),找到“Default folder location”或类似选项,将其路径修改为/mnt/usb_storage/DiodeDrive(你可以先创建这个文件夹:mkdir -p /mnt/usb_storage/DiodeDrive)。这样,所有未来新接受的同步任务(Zone)都会自动存储于此。

接下来,理解Diode Drive的核心概念——Zone(区域)。一个Zone就是一个同步文件夹。你可以在你的电脑(比如Mac或Windows,也需要安装Diode Drive客户端)上创建一个Zone,例如叫“ProjectDocs”,然后邀请树莓派的Diode Drive账户加入这个Zone。

在树莓派上操作:为了简化流程,避免每次都要在树莓派上点击“接受邀请”,我们需要设置“自动接受邀请”。在设置中找到“Auto-accept invites”或“Whitelist”,将你个人电脑的Diode Drive账户地址添加进去。这样,当你从电脑发起邀请时,树莓派会自动接受并开始同步。

在个人电脑上操作:打开你电脑上的Diode Drive,创建一个新的Zone,选择本地一个文件夹(如~/Documents/ProjectSync)与之关联。然后,在这个Zone的成员管理界面,输入树莓派的Diode Drive账户名(首次启动时设置的那个)进行邀请。由于树莓派设置了自动接受,邀请会立刻生效。

此时,奇迹发生了。树莓派会开始将电脑上ProjectSync文件夹内的所有文件,通过加密隧道同步到/mnt/usb_storage/DiodeDrive/ProjectDocs目录下。此后,任何一端(电脑或树莓派)对文件的增删改,都会自动同步到另一端。你的树莓派就此成为了一个实时的、加密的、远程文件备份节点。

4.3 使用Diode CLI建立安全管理隧道(进阶)

Diode Drive负责文件同步,而Diode CLI(命令行工具)则为我们提供了另一项强大能力:安全地远程访问树莓派上受保护的服务,如SSH和VNC。它的原理是,在树莓派和你的电脑之间建立一个加密的SOCKS5代理隧道,你将通过这个隧道来访问树莓派的服务,这些服务本身无需暴露在公网上。

在树莓派上安装和配置Diode CLI

curl -Ssf https://diode.io/install.sh | sh

安装后,运行diode time,会显示一个类似0xa334b4306bdc1c3cda9bf7781faa46f964213144的地址,这是树莓派在Diode网络中的唯一客户端地址,记下它(记为<PI_CLIENT_ADDRESS>)。

现在,让树莓派发布其本地服务到Diode网络,但只允许你的电脑访问。假设你的电脑的Diode CLI客户端地址是0x21334ab7F3d1b549012498c69A4120DE2ff03E51(记为<PC_CLIENT_ADDRESS>,你需要在电脑上也安装Diode CLI并运行diode time获取)。 在树莓派上执行:

diode publish -public 22:22,80:80,3030:3030 -private 5900,<PC_CLIENT_ADDRESS>

这条命令的意思是:将本地的5900端口(VNC服务端口)私有地发布给指定的电脑地址<PC_CLIENT_ADDRESS>。同时,它也象征性地公开发布了22、80、3030端口(这些端口实际上并未被外部访问,但Diode网络需要至少一个公开发布的端口来建立节点)。

在你的个人电脑上操作:你需要通过隧道连接树莓派的VNC服务。首先,在电脑终端建立一个绑定:

diode -bind 15900:<PI_CLIENT_ADDRESS>:5900 socksd

这个命令在本地电脑的15900端口启动了一个SOCKS5代理,所有发往这个代理的流量,都会被加密转发到树莓派(<PI_CLIENT_ADDRESS>)的5900端口。

然后,打开你的VNC Viewer客户端,不是连接树莓派的IP,而是连接localhost:15900。VNC Viewer的流量会先进入本地15900端口的SOCKS5代理,然后通过Diode加密隧道抵达树莓派的VNC服务。输入树莓派的用户名密码,即可实现远程图形化访问。SSH访问同理,可以通过配置SSH客户端使用该SOCKS5代理来连接。

4.4 配置Diode CLI开机自启与服务化

我们当然不希望每次树莓派重启后都手动去运行diode publish命令。这就需要将其配置为系统服务(systemd service)。

在树莓派上,创建一个服务文件:sudo nano /etc/systemd/system/diode.service。内容如下:

[Unit] Description=Diode CLI Tunnel Service After=network-online.target Wants=network-online.target [Service] Type=simple User=pi Restart=always RuntimeMaxSec=86400 ExecStartPre=/bin/sleep 30 ExecStart=/home/pi/opt/diode/diode publish -public 22:22,80:80,3030:3030 -private 5900,<PC_CLIENT_ADDRESS> StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target

关键参数解析

  • After=network-online.target:确保在网络就绪后再启动本服务。
  • Restart=always:服务意外退出时自动重启。
  • RuntimeMaxSec=86400:服务运行24小时后自动重启,这是一个预防性措施,避免长期运行可能的内存泄漏等问题。
  • ExecStartPre=/bin/sleep 30:延迟30秒启动,给系统和其他服务(特别是网络和Diode Drive)足够的初始化时间。
  • ExecStart:替换<PC_CLIENT_ADDRESS>为你电脑的实际地址。注意/home/pi/opt/diode/diode是默认安装路径,请用which diode命令确认你的实际路径。

保存文件后,执行以下命令启用并启动服务:

sudo systemctl daemon-reload # 重新加载systemd配置 sudo systemctl enable diode.service # 启用开机自启 sudo systemctl start diode.service # 立即启动服务 sudo systemctl status diode.service # 检查服务状态,确认是否为“active (running)”

现在,Diode CLI隧道服务就会在树莓派启动时自动运行,并始终保持活跃,等待你的远程连接。

5. 系统优化、维护与故障排查

5.1 性能优化与稳定性设置

树莓派作为长期运行的文件服务器,需要进行一些优化以确保其稳定和高效。

禁用不必要的服务:树莓派OS桌面版默认开启了一些对服务器无用的服务。例如,蓝牙、Avahi(mDNS)的某些功能、桌面相关的服务。你可以有选择地禁用它们以释放资源:

sudo systemctl disable bluetooth.service sudo systemctl disable avahi-daemon.service # 谨慎操作,禁用可能影响`.local`主机名发现 sudo systemctl disable lightdm.service # 如果你确定永远不需要图形界面登录

禁用后使用sudo systemctl stop <service_name>立即停止。

优化SD卡与USB存储寿命:对于SD卡系统盘,减少不必要的写入可以延长其寿命。可以修改日志设置,将日志存储在内存中(tmpfs)。编辑/etc/systemd/journald.conf,设置Storage=volatile。对于USB数据盘,我们在/etc/fstab中已经添加了noatime参数。此外,可以考虑启用TRIM支持(仅对SSD有效):在fstab的ext4选项中加入discard,但请注意,对于某些SSD,定期运行fstrim命令可能比实时discard更高效,可以使用sudo systemctl enable fstrim.timer启用每周一次的定时修剪。

监控系统状态:安装一些轻量级监控工具很有帮助。htop是一个强大的交互式进程查看器:sudo apt install htop,运行后可以直观看到CPU、内存、负载情况。glances功能更全面:sudo apt install glances。对于磁盘空间,可以设置一个简单的定时任务,每天检查一次并发送警告(如果配置了邮件功能)。更简单的方法是定期手动运行df -hdu -sh /mnt/usb_storage/*来查看总体和目录级的使用情况。

5.2 数据备份策略与实施

“不要把鸡蛋放在一个篮子里。” 树莓派服务器本身是数据的一个副本,但我们仍需要为这份数据建立额外的备份。

方案一:本地冷备份。定期(如每周一次)将/mnt/usb_storage下的数据,通过USB拷贝到另一个移动硬盘上,然后离线保存。这是最简单、最防勒索软件的方式。可以使用rsync命令进行增量备份,节省时间:

sudo rsync -avh --progress --delete /mnt/usb_storage/ /media/backup_disk/pi_backup/

参数解释:-a归档模式(保留属性),-vverbose,-h人类可读,--progress显示进度,--delete删除目标端源端已不存在的文件(保持完全同步)。

方案二:远程加密备份。使用rclone工具将数据加密后备份到另一个云存储服务(如Backblaze B2、Wasabi或另一个远程服务器)。首先安装rclone:sudo apt install rclone,然后通过rclone config配置远程存储。配置时可以选择加密(crypt)模式,这样数据在离开树莓派之前就已经被加密。之后可以设置一个cron定时任务,例如每天凌晨3点执行同步。

方案三:利用Diode Drive的多设备同步。这是最符合本项目理念的备份方式。你可以在另一处地点(如父母家、办公室)放置另一台树莓派,也安装Diode Drive并加入同一个Zone。这样,任何文件变更都会实时、加密地同步到三个位置(你的电脑、主树莓派、备份树莓派),实现了地理上分散的3-2-1备份策略(至少3份数据,2种不同介质,1份异地)。

5.3 常见问题与故障排查实录

在实际搭建和运行过程中,你可能会遇到以下问题。这里记录了我的排查思路和解决方法。

问题1:树莓派无法通过SSH连接,提示“Connection refused”或超时。

  • 排查思路:首先确认物理连接和电源。然后,检查网络:树莓派是否获得了IP地址?可以在路由器管理界面查看DHCP客户端列表。如果使用了.local域名,尝试直接使用IP地址。如果还是不行,可能是SSH服务未启动或防火墙阻止。
  • 解决方法:如果树莓派接了显示器,直接登录后运行sudo systemctl status ssh查看服务状态。如果未启动,用sudo systemctl start ssh启动。检查防火墙:sudo ufw status(如果安装了UFW)。最坏情况,重新烧录SD卡,并确保在Imager工具中预先启用了SSH。

问题2:USB硬盘在/etc/fstab配置后,系统启动失败,卡在启动界面。

  • 原因:极有可能是/etc/fstab配置错误,或者硬盘在启动时未就绪(特别是机械硬盘),而fstab中没有使用nofail参数,导致系统无限等待挂载。
  • 解决方法:将SD卡通过读卡器连接到另一台电脑,编辑/etc/fstab文件,在出问题的挂载行添加,nofail参数。如果还不行,可以先注释掉该行(在行首加#),让系统先正常启动,再排查UUID是否正确、文件系统是否损坏(用fsck检查)。

问题3:Diode Drive同步速度非常慢,或者一直显示“Connecting...”。

  • 排查思路:这通常与网络环境有关。Diode是P2P工具,需要两端能建立直接连接。如果设备都在同一个局域网内(NAT后),通常能直连,速度很快。如果设备在不同网络下(如公司/家庭),可能会因为对称型NAT或严格防火墙导致直连失败,此时会通过中继服务器(Relay)转发,速度会慢很多。
  • 解决方法:首先确保树莓派和电脑的Diode客户端版本都较新。在电脑和树莓派的Diode Drive设置中,查看“Network”状态,看是否显示“Direct”连接。如果不是,可以尝试在路由器上为树莓派设置DMZ主机或UPnP(有安全风险),或者进行端口转发(TCP/UDP 40346端口是Diode常用端口),这有助于建立直连。家庭网络通常支持UPnP,可以在路由器设置中启用它。

问题4:通过Diode CLI隧道连接VNC,画面卡顿或无法连接。

  • 排查思路:隧道连接成功但卡顿,通常是网络延迟和带宽所致,Diode CLI的加密和转发本身会带来开销。无法连接则可能是隧道建立失败。
  • 解决方法:对于卡顿,尝试降低VNC Viewer的画面质量设置(如改为“低画质”或“自适应”)。对于无法连接,首先检查树莓派上的diode.service服务状态是否正常。检查服务日志:sudo journalctl -u diode.service -f。确认ExecStart命令中的客户端地址是否正确。在电脑端,确保diode -bind ... socksd命令在运行,并且没有防火墙阻止本地15900端口的连接。

问题5:系统运行一段时间后,SD卡空间不足。

  • 原因:除了数据文件,系统日志、软件更新缓存、临时文件都可能占用空间。
  • 解决方法:定期清理:sudo apt autoremove -ysudo apt clean可以清理软件包缓存。使用sudo journalctl --vacuum-time=7d可以清理7天前的系统日志。使用du -sh /var/log/查看日志目录大小。最重要的是,确保Diode Drive的默认目录和所有Zone目录都设置在USB大容量存储上,而不是SD卡。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 13:43:58

Arduino IDE驱动Raspberry Pi Pico:无缝迁移C/C++代码到RP2040双核平台

1. 项目概述&#xff1a;为什么选择Arduino IDE来驱动Pico&#xff1f;如果你和我一样&#xff0c;是从Arduino Uno或者ESP8266这类开发板入门的嵌入式爱好者&#xff0c;那么你的代码库里大概率已经躺着一堆用C/C&#xff08;或者说Arduino语言&#xff09;写的传感器驱动、通…

作者头像 李华
网站建设 2026/6/1 13:41:58

告别EEPROM:用STM32F103内部Flash存储产品参数(基于HAL库和RT-Thread)

告别EEPROM&#xff1a;用STM32F103内部Flash存储产品参数&#xff08;基于HAL库和RT-Thread&#xff09; 在消费电子和物联网设备开发中&#xff0c;非易失性存储是保存设备配置、校准参数等关键数据的必备功能。传统方案通常采用外部EEPROM芯片&#xff0c;但随着成本压力增大…

作者头像 李华
网站建设 2026/6/1 13:38:28

HarmonyOS 6学习:文件下载保存的ArrayBuffer大小陷阱与完整解决方案

在HarmonyOS 6应用开发中&#xff0c;网络文件下载是常见的功能需求。开发者经常使用request.downloadFile接口从服务器下载图片、文档等资源文件。然而&#xff0c;一个看似简单的文件保存操作却隐藏着令人困惑的陷阱——下载完成的图片保存后显示为空白。本文将深入剖析这一问…

作者头像 李华
网站建设 2026/6/1 13:38:28

无线纳米传感器网络路由协议:原理、挑战与工程实践

1. 无线纳米传感器网络与纳米物联网&#xff1a;一场微观世界的通信革命 想象一下&#xff0c;未来在你的血管里&#xff0c;有数以百万计、比尘埃还小的传感器在巡逻&#xff0c;实时监测你的血糖、血脂和癌细胞&#xff1b;在农作物的根系周围&#xff0c;纳米传感器网络正在…

作者头像 李华
网站建设 2026/6/1 13:38:19

ESP32 DAC驱动示波器XY模式:将数字图像转换为模拟波形显示

1. 项目概述&#xff1a;在示波器上“画”一幅画几年前&#xff0c;我在一台老旧的模拟示波器上玩过这个把戏&#xff0c;用一块Arduino Nano生成了简单的利萨如图形。如今&#xff0c;手头的设备换成了更主流的RIGOL DS1054Z数字示波器和功能更强的ESP32开发板&#xff0c;我决…

作者头像 李华