惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
C
Cybersecurity and Infrastructure Security Agency CISA
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
AWS News Blog
AWS News Blog
Security Latest
Security Latest
L
LINUX DO - 热门话题
Blog — PlanetScale
Blog — PlanetScale
T
Threatpost
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
S
Securelist
I
Intezer
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Heimdal Security Blog
T
The Exploit Database - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
The Register - Security
The Register - Security
NISL@THU
NISL@THU
S
Schneier on Security
M
MIT News - Artificial intelligence
The Last Watchdog
The Last Watchdog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
Know Your Adversary
Know Your Adversary
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
美团技术团队
W
WeLiveSecurity
P
Privacy International News Feed
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
小众软件
小众软件
博客园 - 【当耐特】
P
Proofpoint News Feed
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog

szhshp 的第三边境研究所

假设, AI 把我代替的那一刻真的到来 | szhshp 的第三边境研究所 小傻瓜都能懂的 AstrBot QQ 机器人集成 MCP 功能实战指南 | szhshp 的第三边境研究所 《智人之上: 从石器时代到 AI 时代的信息网络简史》阅读笔记 | szhshp 的第三边境研究所 iPadOS 26 无法设置空间场景图片壁纸的解决方法 | szhshp 的第三边境研究所 《一路云海》(终) | szhshp 的第三边境研究所 《一路云海》(四): 如何不按套路旅行 | szhshp 的第三边境研究所 《一路云海》(三): In Ya Mellow Tone | szhshp 的第三边境研究所 《一路云海》(二): 关西世博参观纪实 | szhshp 的第三边境研究所 《一路云海》(一): 新的征程 | szhshp 的第三边境研究所 2025 大阪世博会 [ 3 天前-先到先得 ] 阶段 场馆预约必中独家攻略 | szhshp 的第三边境研究所 Hackathon 随想 | szhshp 的第三边境研究所 一杯双皮奶 | szhshp 的第三边境研究所 Docker 构建镜像报错: error getting credentials - err: exit status 1, out: `` | szhshp 的第三边境研究所 Disqus RIP! 论过高的维护成本如何治疗固执的坏习惯 | szhshp 的第三边境研究所 炸弹猫桌游变体规则 | szhshp 的第三边境研究所 《小岛经济学》阅读笔记 | szhshp 的第三边境研究所 《金钱心理学》阅读笔记 | szhshp 的第三边境研究所 为知笔记 RIP: 迁移剩余的笔记 | szhshp 的第三边境研究所 2025 博客第十年展望 - 再见我的过去 | szhshp 的第三边境研究所 我在独立游戏里面致敬的作品 | szhshp 的第三边境研究所 《How to make thing faster》阅读笔记 | szhshp 的第三边境研究所 《The Art of Clean Code》阅读笔记 | szhshp 的第三边境研究所 《Clean Architecture: A Craftsman Guide to Software Structure and Design》阅读笔记 | szhshp 的第三边境研究所 《How AI Works》阅读笔记 | szhshp 的第三边境研究所 游戏策划废案 - Project Uranus | szhshp 的第三边境研究所 游戏策划废案 - Project X | szhshp 的第三边境研究所 人生第一款独立游戏开发复盘 | szhshp 的第三边境研究所 Trap of Life | szhshp 的第三边境研究所 如果我用手搓了个暗物质雏形 | szhshp 的第三边境研究所 《Rust Programming Language》- EX - Cheatsheet | szhshp 的第三边境研究所 新的播放器上线了 | szhshp 的第三边境研究所 Cypress - End-to-End Testing: OKTA Authentication with MFA | szhshp 的第三边境研究所 VSC x VIM - 反正多学几个快捷键没有坏处 | szhshp 的第三边境研究所 两小时 Docker 速成 - Getting Started | szhshp 的第三边境研究所 《The Joy of Javascript》- 5 - Data | szhshp 的第三边境研究所 《The Joy of Javascript》- 4 - Meta Programming | szhshp 的第三边境研究所 《The Joy of Javascript》- 3 - ADT(Algebraic Data Type) | szhshp 的第三边境研究所 Web-Automation Testing | szhshp 的第三边境研究所 《The Joy of Javascript》- 2 - Functor/Monad | szhshp 的第三边境研究所 《The Joy of Javascript》- 1 - Object/Function | szhshp 的第三边境研究所 EvalError: Possible side-effect in debug-evaluate | szhshp 的第三边境研究所 前端 QA 工具链指南 - husky,commitlint,commitizen,eslint,typescript,express | szhshp 的第三边境研究所 效率工具 & 软件推荐 | szhshp 的第三边境研究所 站点开源 Project Titan | szhshp 的第三边境研究所 cmd/powershell-命令速查-Cheatsheet | szhshp 的第三边境研究所 Git-命令速查与相关问题解决-Cheatsheet & Troubleshooting | szhshp 的第三边境研究所 Tailwind.css not included in NextJS Production | szhshp 的第三边境研究所 Github GraphQL API - Data Integration | szhshp 的第三边境研究所 尝试 Windows Terminal + z.lua | szhshp 的第三边境研究所 StrokePlus.net - Powerful Hotkey Boost | szhshp 的第三边境研究所 优雅地 Hack 一台黑苹果 | szhshp 的第三边境研究所 一杯关东煮 | szhshp 的第三边境研究所 Gitee x PicGo 管理图床 | szhshp 的第三边境研究所 Create Your Own Redux (Typescript) | szhshp 的第三边境研究所 Getting Started: Ionic + Capacitor + React + Typescript + Android | szhshp 的第三边境研究所 GraphQL: File Upload & Troubleshooting | szhshp 的第三边境研究所 吉祥航空随心飞刷票工具循环查票工具 | szhshp 的第三边境研究所 NVM Windows Portable Installation | szhshp 的第三边境研究所 NextJS x Typescript - Integration & Troubleshooting | szhshp 的第三边境研究所 全站点升级 - Project Titan | szhshp 的第三边境研究所 AWS-EC2-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 Workbox-Getting Started | szhshp 的第三边境研究所 《时间简史》阅读笔记 | szhshp 的第三边境研究所 《时间的秩序》阅读笔记 | szhshp 的第三边境研究所 ESLint-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 站点索引 | szhshp 的第三边境研究所 个人知识库搭建 - Hexo 实现 Github/Coding 持续集成 | szhshp 的第三边境研究所 BMOB-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 React + Typescript: 开启 HMR/Hot Loader | szhshp 的第三边境研究所 Yarn & NPM | szhshp 的第三边境研究所 ESLint: Typescript + React + TSX 集成 | szhshp 的第三边境研究所 《10101》EP15:过年 2020 | szhshp 的第三边境研究所 Cmder-Usage | szhshp 的第三边境研究所 Redux-DOM not refreshed | szhshp 的第三边境研究所 React Semantic UI-CheatSheet | szhshp 的第三边境研究所 Typescript: Getting Started | szhshp 的第三边境研究所 Flutter-Getting Started | szhshp 的第三边境研究所 Typescript: Access window object with type check | szhshp 的第三边境研究所 VSC Extension Development-Create A Code Formatter Extension | szhshp 的第三边境研究所 OneNote Extension-Main API | szhshp 的第三边境研究所 TortoiseGit Win10 Icon not showing correctly | szhshp 的第三边境研究所 Mongoose: aggregate() 方法实现聚合函数 | szhshp 的第三边境研究所 React In Depth - React 源码解析 - render() & Fiber | szhshp 的第三边境研究所 MongoDB x Mongoose: 实现类似 Join 的功能 | szhshp 的第三边境研究所 Disqus 评论框改造工程-实现 Disqus 代理的 Serverless 服务 | szhshp 的第三边境研究所 GUI, CLI, Terminal, Shell, TTY, Console, Bash | szhshp 的第三边境研究所 Jest Async Best Practise: No Nested Async | szhshp 的第三边境研究所 关系型数据库与非关系型数据库优缺点分析 | szhshp 的第三边境研究所 New Edge & Chromium Error - Package is invalid: 'CRX_VERSION_NUMBER_INVALID' | szhshp 的第三边境研究所 选择 GraphQL 的 N 个理由 | szhshp 的第三边境研究所 StrokePlus - 鼠标手势神器的代码编写技巧 | szhshp 的第三边境研究所 嗨,好久不见 | szhshp 的第三边境研究所 Vue + ElementUI 集成 Vue Router | szhshp 的第三边境研究所 IE8 - Unknown Runtime Error Using innerHTML & Ajax | szhshp 的第三边境研究所 React: Handling Events | szhshp 的第三边境研究所 React-Navigation Integration with Redux | szhshp 的第三边境研究所 React: States is tricky | szhshp 的第三边境研究所 《10101》EP14:小剧场 | szhshp 的第三边境研究所 ColdFusion - Basic - arguments in cffunction | szhshp 的第三边境研究所 ColdFusion - Basic - cfset | szhshp 的第三边境研究所
Armbian + CasaOS + NAS 配置指南 | szhshp 的第三边境研究所
2025-05-04 · via szhshp 的第三边境研究所

Meta

目录

以下基于 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 迁移到外部存储

免密登录

# 1. 生成 SSH 密钥对 (使用默认路径和空密码) 
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519 -N ""

# 2. 将公钥复制到远程服务器  
ssh-copy-id username@remote_host

# 3. 验证 SSH 免密登录  
ssh username@remote_host

U 盘挂载各类常见问题

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

这里有多种情况:

  • 盲猜是读写权限问题
    • 进入外部存储文件夹后, 尝试运行 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!

docker volume 已经映射到外部存储, 依然下载到了内部存储?

比如 QBittorrent 或者 Aria2 之类的, 明明已经在 CASAOS 的 Docker Volume 中映射了外部存储, 但是下载的时候依然占用内部存储, 这可能是因为:

  1. Volumes 写错了呗, 可能自己傻傻地选择了一个并没有挂载 USB 的目录
  2. 外部存储根本没有 mount, 尝试执行 lsblk 查看当前挂载情况:
    lsblk
    
    NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    mmcblk0      179:0    0    29G  0 disk # 如果你的 USB 这里没有路径, 那就说明没有挂载
    mmcblk1      179:16   0   7.3G  0 disk 
    ├─mmcblk1p1  179:17   0   256M  0 part /boot
    └─mmcblk1p2  179:18   0   6.9G  0 part /
    mmcblk1boot0 179:32   0     4M  1 disk 
    mmcblk1boot1 179:48   0     4M  1 disk 
    zram0        253:0    0 496.6M  0 disk [SWAP]
    zram1        253:1    0    50M  0 disk /var/log
    这时候就重新挂载一下外部存储:
    mount /dev/mmcblk0 /media/devmon/MyUSB01
    然后更新一下 QB 和 Aria2 的 Volumnes 配置, 下载个文件试试, 应该就不会占用内部磁盘的空间了

开机自动挂载

fstab 配置格式

UUID=设备UUID 挂载点 文件系统类型 挂载选项 备份 检查

关键参数详解

挂载选项 (mount options)
参数作用说明
defaults默认选项使用系统默认的挂载选项
user用户挂载允许普通用户挂载/卸载设备
noauto不自动挂载系统启动时不会自动挂载此设备
nofail容错处理如果设备不存在,系统启动不会失败
ro只读以只读模式挂载
rw读写以读写模式挂载

实际配置示例

❌ 错误配置(不会自动挂载)
UUID=132a1111-b10b-411e-ae14-3dad111105d4 /media/devmon/usb_32G auto defaults,user,noauto 0 0
✅ 正确配置(会自动挂载)
UUID=132a1111-b10b-411e-ae14-3dad111105d4 /media/devmon/usb_32G auto defaults,user,nofail 0 0

配置步骤

  1. 获取设备 UUID

    sudo blkid /dev/mmcblk0
  2. 创建挂载点

    sudo mkdir -p /media/devmon/usb_32G
  3. 编辑 fstab

    sudo nano /etc/fstab
  4. 添加配置行

    UUID=你的设备UUID /media/devmon/usb_32G auto defaults,user,nofail 0 0
  5. 测试配置

    sudo mount -a

常见问题

  • Q: 为什么 sudo mount -a 显示 “ignored”?
    • A: 因为配置中包含了 noauto 参数,系统会忽略此配置。
  • Q: 如何确保设备不存在时系统不会启动失败?
    • A: 使用 nofail 参数替代 noauto
  • Q: 为什么要使用 UUID 而不是设备路径?
    • A: UUID 是唯一的,不会因为设备插入顺序变化而改变。

总结

  • 移除 noauto 参数才能实现自动挂载
  • 使用 nofail 参数提高系统稳定性
  • 使用 UUID 确保设备识别准确
  • 测试配置使用 sudo mount -a 命令

内网穿透

我常用的两种:

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

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

Tailscale

安装: Using Tailscale with Docker

只需要两个环境变量:

  1. 用户配置页面 生成一个 Auth Key
  2. 需要广播的路由: TS_ROUTES:
    • 192.168.1.0/24 会将内网 192.168.1 开头所有 IP 广播到虚拟网络
    • 简而言之: 我在其他设备上输入 192.168.1.100 就能访问到内网 192.168.1.100 的服务

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

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

 新的设备

新的设备

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

Hints

  • 偶尔有时候不同的 subnet 里面的服务 IP 是相同的会冲突, 这时候一样跑到上面三个点关闭一些 设备的 subnet 就可以了, 多简单
  • 电信的网比移动的访问 Tailscale 明显更卡
  • Auth Key 的有效期最多未 180 天, 因此需要定期更新

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 各配置一份, 方便后面根据需要修改

申请证书

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

SSL 证书信息填写的弹窗里,域名列表也一定要添加两行:

  • 一个是 abc.top,这个可以保证主域名在访问时浏览器提示是可信任的
  • 一个是 *.abc.top,这个可以保证二级域名在访问时浏览器提示是可信任的

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

开启 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 访问服务.

端口转发与内网穿透

我的网络状况非常简单, 没有多层 NAT 的情况, 所以我不需要进行额外的端口转发设置

Hints

  1. 证书发放成功后, 使用 HTTPS 协议访问可能仍显示 Not Secure , 通常是刷新延迟, 等待即可.
  2. 外部访问时需永久带上端口, 例如: https://filebrowser.szhshp.org:16666 .
  3. 配置完成后, 记得在外网使用流量测试:
    • 一开始内网访问成功了我还以为就直接搞定了, 当天晚上遛弯儿的时候用手机试了试才注意到外网不行
    • 浏览器 -> 绑定的域名 -> DNS 解析 -> 主机地址 -> 建立 TCP 连接 -> 发送 HTTP 请求 -> 服务器响应 -> 渲染网页
    • 你在内网的话主机就在你身边啊, 当然秒访问啊
    • 就这一点可以直接体会到 Edge Function 和 分布式部署的优势, 离得近就是快啊
  4. 外网无法访问多数是路由器设置问题:
    • 检查 DMZ 主机是否开启, 确保配置后已启用. (配置后忘记开启就很尴尬了)
    • 检查路由器防火墙, 必要时关闭防火墙. (我的一台路由器就是这个问题, 关闭 Ipv4SpiIpv6Spi)

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 协议地址即可

飞跃大气层的魔法 (旧 Clash + YACD)

这个方案配置起来比较麻烦, 现在有更好的方案, 见下文

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

  • 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 ) .

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

飞跃大气层的魔法 (新 V2rayA)

TL’DR: V2rayA in Docker, 不用像以前那样安装 Clash + YACD 俩服务了

Compose 文件:

name: cool_antonio
services:
  v2raya:
    cpu_shares: 90
    command: []
    container_name: v2raya
    deploy:
      resources:
        limits:
          memory: 993M
    environment:
      - IPTABLES_MODE=legacy
      - TZ=Asia/Shanghai
      - V2RAYA_LOG_FILE=/tmp/v2raya.log
      - V2RAYA_V2RAY_BIN=/usr/local/bin/xray
    hostname: v2raya
    image: mzz2017/v2raya:v2.2.6.3
    labels:
      icon: v2raya
    ports:
      - target: 2017
        published: "2017"
        protocol: tcp
      - target: 20170
        published: 20170-20173
        protocol: tcp
    privileged: true
    restart: always
    volumes:
      - type: bind
        source: /lib/modules
        target: /lib/modules
      - type: bind
        source: /volume1/docker/v2raya/data
        target: /etc/v2raya
    devices: []
    cap_add: []
    network_mode: host
x-casaos:
  author: self
  category: self
  hostname: ""
  icon: v2raya
  index: /
  is_uncontrolled: false
  port_map: "2017"
  scheme: http
  store_app_id: cool_antonio
  title:
    custom: v2raya

配置完成后, 添加订阅, 启动服务, 然后使用预设的走 HTTP 协议的端口号 {ip}:20171 访问即可.

简单粗暴.