以下基于 Armbian + CasaOS 进行配置

外部存储挂载与卸载

挂载外部存储

# 查看当前的存储设备以及挂载的位置
# 使用 fdisk -l 命令列出所有存储设备及其挂载点
fdisk -l

运行上述命令后,会得到类似如下的输出,从中找到外部存储的路径,例如:/dev/mmcblk0

注意:多次插拔 U 盘后,存储路径可能会发生变化。

Disk /dev/mmcblk0: 28.97 GiB, 31104958464 bytes, 60751872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
# 创建一个目录用于挂载外部存储设备
mkdir /mnt/udisk

# 使用 mount 命令将外部存储设备挂载到刚创建的目录
mount /dev/mmcblk0 /mnt/udisk
# 提示:一般情况下直接使用 mount 命令即可完成挂载

卸载外部存储

# 使用 umount 命令卸载挂载的存储设备
# 记得提前停止相关进程
umount /mnt/udisk

CasaOS Docker 迁移到外部存储

CasaOS Docker 迁移到外部存储

U 盘挂载各类常见问题

Aria2 无法下载到外部存储: Task Status: Error Occurred (16)

这里有多种情况:

  • 盲猜是读写权限问题
    • 进入外部存储文件夹后, 尝试运行 chmod 777 {PATH} 更改权限
    • 如果上述 chmod 无效, 可能是外部存储的文件系统 (如 FAT32 或 NTFS) 导致的。
  • 外部存储文件系统不支持标准的 unix 权限模型
    • 检查外部存储的文件类型:
      df -T {PATH}
      
    • 示例输出:
      Filesystem     Type 1K-blocks  Used Available Use% Mounted on
      /dev/sda2      vfat    204560 74356    130204  37% /mnt/udisk2
      
    • 如果文件系统类型为 vfat ,基本可以确认是文件系统问题。
    • 解决方法: 一劳永逸格式化
      # 先卸载外部存储, 然后格式化为 `ext4` 文件系统
      umount {PATH}
      sudo mkfs.ext4 {PATH}
      

Bad magic number in super-block while trying to open

重新插拔优盘,可能和重复的挂载 UUID 有关。

mount: /media/devmon/SDCard4G: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error.

这种情况通常出现在格式化后的 SD 卡上,建议重新到 CASAOS UI 中格式化后解决问题。

dev/mmcblk0 is apparently in use by the system; will not make a filesystem here!

如果设备正在使用中,那么说明已经被 CASAOS 识别了,可以到 CASAOS 前端进行格式化。

内网穿透

我常用的两种:

  • Tailscale/Zerotier 等 Private VPN 方法
    • 虚拟网络, 虚拟局域网
    • 多设备支持
    • 每个设备都要客户端
    • 在服务商方面集中管理
  • DDNS-GO/Lucky 等 Reverse Proxy 方法
    • 通过动态域名解析 (DDNS) 将内网设备或者 Web 服务的地址绑定到一个固定的域名, 方便外网访问.
    • 配合反向代理工具可以实现内网穿透
    • 一般需要一个公网域名
    • 适合需要长期稳定访问的场景, 例如搭建个人博客, NAS 文件共享等.

TL'DR: 想要虚拟局域网选 Tailscale , 想要通过网站访问家里内网的服务选 Lucky

Tailscale

安装: Using Tailscale with Docker

只需要两个环境变量:

  1. 用户配置页面 生成一个 TS_AUTHKEY
  2. 需要广播的路由: TS_ROUTES , 192.168.1.0/24会将内网 192.168.1 开头所有 IP 广播到虚拟网络

启动服务, 然后在其他设备上下载 App, 安装并开启.

这时跑到后台管理页面应该就有一个新设备:

 新的设备
新的设备

下方可以看到有个 subnets 感叹号, 需要到右边三个点激活一下.

然后就可以直接使用 192.168.1 访问内网服务了.

Hints

  • 偶尔有时候不同 subnet 里面的服务 IP 是相同的会冲突, 这时候一样跑到上面三个点关闭一些 设备的 subnet 就可以了, 多简单
  • 电信的网比移动的访问 Tailscale 明显更卡

Lucky

你需要一个域名

略,懒得写了。

添加动态域名

Vercel 的配置细节, Teram 这个怎么看都是个 Typo 吧
Vercel 的配置细节, Teram 这个怎么看都是个 Typo 吧

  1. 获取域名商提供的 Token
  2. 配置 TeamID :
    • TeamID 是 Vercel 的用户 ID. 一开始以为是某些数字, 后来发现可以直接在 URL 中找到. 例如, 在 https://vercel.com/szhshps-projects/szhshp-blog 中, TeamIDszhshps-projects
  3. 配置完成后, 动态域名解析即可生效

IPV4 和 IPV6 各配置一份, 方便后面根据需要修改
IPV4 和 IPV6 各配置一份, 方便后面根据需要修改

申请证书

需要填写的内容在上一步骤中已经获取:

配置后等待几分钟即可生效.

开启 Web 服务

启动所需的 Web 服务, 并确保其可以通过动态域名访问.

规则组会选择一个主要端口, 我用了 16666

规则组需要开启 TLS.

两种策略访问不同服务:

  1. 多个规则组, 每个设置一个端口:
    • https://filebrowser.szhshp.org:16666
    • https://filebrowser.szhshp.org:16688
  2. 一个规则组多个子规则, 使用子域名区分:
    • https://filebrowser.szhshp.org:16666
    • https://media.szhshp.org:16666
    • https://backup.szhshp.org:16666

我记不住端口, 因此选择 #2 , 子域名更好记.

为每个本地端口的服务添加多个子规则:

配置完成后, 你应该可以通过 https://filebrowser.szhshp.org:16666 访问服务.

端口转发与内网穿透

对我无用, 根本不需要配置转发.

我不理解外部教程里面为什么都要写一个 16666 端口转发的.

加了那一段 16666 转发直接提示端口冲突并没有效果.

最终我也没开启端口转发的功能.

Hints

  1. 证书发放成功后, 使用 HTTPS 协议访问可能仍显示 Not Secure , 通常是刷新延迟, 等待即可.
  2. 外部访问时需永久带上端口, 例如: https://filebrowser.szhshp.org:16666 .
  3. 配置完成后, 记得在外网使用流量测试:
  • 系统或某些浏览器会缓存 DNS 记录, 而你本身就在内网, 目标主机就在身边, 因此访问你的域名可以秒开(当然啦毕竟你在内网访问一个指向内网的域名), 但外网不行.
  1. 外网无法访问多数是路由器问题, 解决方法:
  • 检查 DMZ 主机是否开启, 确保配置后已启用. (配置后忘记开启就很尴尬了)
  • 检查路由器防火墙, 必要时关闭防火墙. (我的一台路由器就是这个问题)

Aria2

核心点就是需要下载 2 个镜像:

  • p3terx/ariang : Client
  • p3terx/aria2-pro : Server

Hints

Server 配置

在配置 Server 时,需要关注以下几个关键点:

  • RPC_SECRET:用于前端连接后端的密码,确保安全性。
  • Volumes 的映射:将文件下载路径映射到外部存储目录。具体操作可参考外部存储挂载与卸载一节。

Client 配置

在配置 Client 时,需要使用对应 Server 的端口和 RPC_SECRET:1. 打开 AriaNg Setting,进入 RPC 设置页面。2. 配置以下内容:

  • 地址:填写 Server 的 IP 和端口,例如:192.168.1.105:8800
  • 密码:填写 Server 配置的 RPC_SECRET

如果使用了 Lucky 进行端口映射,则需要填写映射到外部的地址和端口,例如:https://aria.server.szhshp.org:16666

示例界面

以下为配置完成后的示例界面:

媒体服务

我不喜欢个人媒体中心, 我听的音乐非常偏门导致基本刮削不出什么信息, 电影也不是经常看. 我觉得折腾很久最后收益只是孤芳自赏, 因此 Jellyfin 之类的我搭建最后都删了

最有用的还是 xiaoya 库, 这里是最方便的安装方式

WebDAV - nPlayer

配置细节:

小雅默认 webdav 账号密码

用户: guest 密码: guest_Api789

端口根据小雅配置端口写

SMB - Nova Video Player

这个配置就简单得多了, 直接写 smb 协议地址即可

飞跃大气层的魔法

开启穿越大气层魔法需要两个镜像:

  • dreamacro/clash : Client
  • haishanh/yacd : Server

配置细节

准备配置文件

首先需要获取 Clash 的配置文件 (YAML 格式) . 最简单的方法是从 PC 或手机上的 Clash 客户端中导出配置文件.

Clash 配置导出示例
Clash 配置导出示例

导出后, 需要对配置文件进行一些修改, 主要是调整 External Controller 的设置.

修改后的配置文件示例
修改后的配置文件示例

修改内容包括:

  • External Controller 的广播地址改为 0.0.0.0 , 以便允许外部设备访问.
  • 设置 mixed-port , 用于暴露 SOCKS5 代理端口.
  • 启用 allow-lan , 允许局域网设备连接.

将修改后的配置文件保存到路径 /clash/sub.yaml .

YACD 连接配置

在 YACD 中连接 Clash 时, 需要使用刚才修改的 External Controller 地址.

注意:

  • 必须使用实际的设备 IP 地址, localhost 无法用于外部设备连接.
  • 端口号与配置文件中设置的 External Controller 端口保持一致.

YACD 连接示例
YACD 连接示例

其他设备代理设置

在其他设备上进行代理设置时:

  • 使用本地设备的实际 IP 地址.
  • 代理端口为配置文件中设置的 mixed-port (默认值为 7890 ) .

完成以上配置后, 其他设备即可通过代理访问网络.