标签 NAS 下的文章

绿联 NAS Docker 部署 · 扔掉 CF Tunnel · 一行命令公网访问 · 支持自定义域名 · 免费 HTTPS

背景

我之前用绿联 NAS 的 Docker 部署了 Cloudflare Tunnel,把家里的服务通过自己的域名暴露到公网。但 CF Tunnel 在国内环境下频繁掉线——QUIC 协议被运营商掐、NAT 超时回收、Docker 容器动不动就断连。日志里全是:

WRN Failed to dial a quic connection error="timeout: no recent network activity"
ERR Connection terminated

折腾了好几轮 --protocol http2restart: always、健康检查……治标不治本。

后来发现 Tailscale Funnel 才是正解。它直接复用你已经跑通的 Tailscale 网络底座,一行命令把服务暴露到公网,自带 HTTPS 和自定义域名绑定,彻底甩掉 CF Tunnel 这个不稳定因素。

这篇教程完整记录从迁移到上线的每一步。


前置条件

  • 绿联 NAS 已部署 Tailscale(Docker 或套件版均可)
  • Tailscale 已登录,设备在线
  • 有一个自己的域名,DNS 托管在任意服务商
  • NAS 上的服务正常运行(假设跑在 8080 端口)

第一步:确认 Tailscale 正常工作

SSH 登录 NAS,检查 Tailscale 状态:

tailscale status

应该能看到你的 NAS 设备在线,记住它的 Tailscale IP(形如 100.x.x.x)。

如果是 Docker 部署的 Tailscale:

docker exec tailscale tailscale status

第二步:启用 HTTPS 证书

Funnel 需要 TLS 证书。Tailscale 可以自动签发 Let's Encrypt 证书:

tailscale cert --cert-file /tmp/ts-cert.pem --key-file /tmp/ts-key.pem

如果是 Docker 部署:

docker exec tailscale tailscale cert \
  --cert-file /tmp/ts-cert.pem \
  --key-file /tmp/ts-key.pem

这一步 Tailscale 会自动完成域名验证,无需手动操作 DNS。


第三步:开启 Tailscale Funnel

假设你的服务跑在 NAS 的 8080 端口,一行命令暴露:

# 先开启 serve(HTTPS 反向代理)
tailscale serve --bg --https=443 8080

# 再开启 funnel(公网访问)
tailscale funnel 8080 on

Docker 环境:

docker exec tailscale tailscale serve --bg --https=443 8080
docker exec tailscale tailscale funnel 8080 on

现在已经可以通过 https://你的NAS主机名.tailnet名称.ts.net 从公网访问了。


第四步:绑定自定义域名

Funnel 默认用的是 Tailscale 的 ts.net 域名,但你可以绑定自己的域名(例如 sub.example.com):

4.1 在 Tailscale Admin Console 添加域名

  1. 打开 https://login.tailscale.com/admin/dns
  2. 点击 HTTPS Certificates 标签
  3. 点击 Add a custom domain
  4. 输入你的域名,例如 sub.example.com
  5. 页面会显示一组 TXT 验证记录

4.2 在域名 DNS 服务商添加 TXT 记录

去你的域名 DNS 管理后台(如 Cloudflare、阿里云 DNS、DNSPod),添加两条记录:

类型主机记录记录值
TXT_acme-challenge.subTailscale 提供的验证值
TXT_acme-challenge.sub第二条验证值(如果有)

4.3 等待验证

回到 Tailscale Admin Console,点击 Verify。通常几分钟内生效。验证通过后,证书会自动签发。

4.4 配置 Funnel 使用自定义域名

验证通过后,指定域名重新启用 Funnel:

# 先关闭之前的 funnel
tailscale funnel 8080 off

# 用自定义域名重新开启
tailscale serve --bg --https=443 --set-path / 8080
tailscale funnel --bg --set-path / 8080 on

Docker 环境:

docker exec tailscale tailscale funnel 8080 off
docker exec tailscale tailscale serve --bg --https=443 --set-path / 8080
docker exec tailscale tailscale funnel --bg --set-path / 8080 on

第五步:DNS 解析到 Tailscale IP(关键)

到你的域名 DNS 管理后台,添加一条 A 记录:

类型主机记录记录值
Asub你的 NAS 的 Tailscale IP(100.x.x.x)
⚠️ 注意:这一步是把域名指向 Tailscale IP,不是指向公网 IP。只有加入你 Tailnet 的设备能通过域名访问。如果需要完全公网访问,直接用 Funnel 自带的 ts.net 域名即可,不需要这一步。

第六步:验证

# 在任意设备上测试
curl -I https://sub.example.com

# 或用浏览器直接打开
# https://sub.example.com

看到 HTTP/2 200 就是成功了。


停掉旧的 Cloudflare Tunnel

既然 Tailscale Funnel 已经跑通了,可以停掉 CF Tunnel 容器:

docker stop cloudflared
docker rm cloudflared

不再需要维护这个不稳定的隧道了。


Docker Compose 长期运行配置

如果你想让 Funnel 在 Docker 里持久化运行,在当前运行 Tailscale 的容器里,servefunnel 命令加了 --bg 就会后台常驻。Tailscale 容器本身已经设了 restart: always,重启 NAS 后 Funnel 也会自动恢复。

不需要额外容器。


常见问题

Q: Funnel 跑起来后,从外网访问很慢?

Funnel 走 Tailscale 的 DERP 中继节点,速度取决于中继节点的位置。国内访问一般可以接受,但如果你的服务是流媒体/大文件传输,Funnel 不适合(Tailscale ToS 也禁止)。

Q: 自定义域名只能 Tailnet 内访问?

对。如果你把域名 A 记录指向 Tailscale IP(100.x.x.x),只有加入你 Tailnet 的设备能解析和访问。如果需要完全公网访问,直接用 Funnel 分配的 ts.net 域名,自动对全网开放。

Q: 和 Cloudflare Tunnel 比,少了什么?

Funnel 没有 CDN 缓存、没有 WAF、没有 DDoS 防护。但换来的是稳定不掉线。对于个人 NAS 服务来说,稳定比这些附加功能重要得多。

Q: 免费版有流量限制吗?

Tailscale 免费版 Funnel 没有明确的流量硬限制,但 ToS 禁止跑流媒体和大量文件传输。个人 Web 服务、Dashboard、API 完全够用。


总结

对比Cloudflare TunnelTailscale Funnel
稳定性国内频繁掉线极其稳定
配置量Docker + Token + 配置一行命令
HTTPS自动自动
自定义域名
费用免费免费
额外依赖依赖 CF 网络复用 Tailscale

CF Tunnel 在国内就是一个大坑,Tailscale Funnel 才是 NAS 玩家正确的公网暴露方式。


本文基于绿联 NAS + Docker + Tailscale v1.80+ 撰写,功能以官方最新版本为准。

NAS 自建图床完整实操手册:Lsky Pro + Docker


你为什么需要自建图床?

别人的服务器说关就关,你的 NAS 永远在线。图片数据 100% 自己掌控,零跑路风险,而且 0 月费

一、硬件与环境要求

条件最低要求推荐配置
NAS / 小主机任何能跑 Docker 的设备群晖 / 威联通 / Unraid / 绿联 / 树莓派 4B+
内存1 GB 空闲2 GB+
存储10 GB 空闲50 GB+(看你图片量)
Docker 环境Docker 20.x + Compose v2最新版
外网访问(可选)公网 IPv4 或 IPv6公网 IP + 自有域名

二、Docker 环境准备

如果你已经装了 Docker,直接跳到第三节。

2.1 群晖 NAS(DSM 7.x)

  1. 打开 套件中心
  2. 搜索 Container Manager(DSM 7.2+)或 Docker(DSM 7.1 及以下)
  3. 点击安装,等待完成

2.2 威联通 NAS(QNAP)

  1. 打开 App Center
  2. 搜索 Container Station
  3. 安装即可

2.3 绿联 NAS(UGOS)

  1. 打开 应用中心
  2. 搜索 Docker
  3. 安装

2.4 Linux 小主机 / 树莓派(通用)

# 安装 Docker
curl -fsSL https://get.docker.com | bash

# 安装 Docker Compose
sudo apt install docker-compose-plugin -y   # Debian/Ubuntu
# 或
sudo yum install docker-compose-plugin -y   # CentOS/RHEL

# 验证
docker --version
docker compose version

# 设置非 root 用户也能用 Docker(推荐)
sudo usermod -aG docker $USER
# 然后重新登录

2.5 Windows(WSL2 + Docker Desktop)

  1. 安装 WSL2:管理员 PowerShell 执行 wsl --install
  2. 下载 Docker Desktop:https://www.docker.com/products/docker-desktop
  3. 安装后启动

三、部署 Lsky Pro(推荐 Docker Compose 方式)

我们使用 MySQL + Redis + Lsky Pro 三容器架构,这是生产环境推荐方案。

3.1 创建项目目录

# SSH 登录 NAS 或小主机,创建目录
mkdir -p /volume1/docker/lsky-pro
cd /volume1/docker/lsky-pro
📌 路径替换:群晖一般是 /volume2/docker/.../volume1/docker/...,请改成你自己的路径。

3.2 编写 docker-compose.yml

nano docker-compose.yml

粘贴以下完整配置(⚠️ 务必修改密码):

version: '3.8'

services:
  # ========== MySQL 8.0 数据库 ==========
  mysql:
    image: mysql:8.0
    container_name: lsky-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: LskyRoot2025!    # ⚠️ 改成你自己的强密码
      MYSQL_DATABASE: lsky
      MYSQL_USER: lsky
      MYSQL_PASSWORD: LskyUser2025!         # ⚠️ 改成你自己的强密码
    volumes:
      - ./mysql-data:/var/lib/mysql
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    networks:
      - lsky-net

  # ========== Redis 缓存 ==========
  redis:
    image: redis:7-alpine
    container_name: lsky-redis
    restart: unless-stopped
    command: redis-server --appendonly yes --requirepass "LskyRedis2025!"  # ⚠️ 改成你自己的密码
    volumes:
      - ./redis-data:/data
    networks:
      - lsky-net

  # ========== Lsky Pro 图床主程序 ==========
  lsky-pro:
    image: 0xxb/lsky-pro:latest
    container_name: lsky-pro
    restart: unless-stopped
    ports:
      - "8000:8000"    # 主机端口 : 容器端口
    volumes:
      - ./storage:/app/storage/app        # 上传的图片存这里
      - ./themes:/app/themes               # 主题文件
    environment:
      DB_CONNECTION: mysql
      DB_HOST: mysql
      DB_PORT: 3306
      DB_DATABASE: lsky
      DB_USERNAME: lsky
      DB_PASSWORD: LskyUser2025!           # ⚠️ 跟上面 MYSQL_PASSWORD 保持一致
      REDIS_HOST: redis
      REDIS_PASSWORD: LskyRedis2025!       # ⚠️ 跟上面 Redis 密码保持一致
      REDIS_PORT: 6379
    depends_on:
      mysql:
        condition: service_started
      redis:
        condition: service_started
    networks:
      - lsky-net

networks:
  lsky-net:
    driver: bridge

3.3 启动服务

docker compose up -d
# 查看是否全部启动成功(3 个容器都是 Up 状态)
docker compose ps
# 输出应该类似:
# NAME          STATUS
# lsky-mysql    Up (healthy)
# lsky-redis    Up
# lsky-pro      Up

四、初始化安装向导

4.1 访问安装页面

浏览器打开:http://你的NAS_IP:8000

例如:http://192.168.1.100:8000

4.2 填写数据库信息

Lsky Pro 安装向导会要求填入:

配置项说明
数据库地址mysql(容器名,不要填 localhost)
数据库端口3306MySQL 默认端口
数据库名称lsky和 docker-compose.yml 一致
数据库用户名lsky和 docker-compose.yml 一致
数据库密码LskyUser2025!和 docker-compose.yml 一致

4.3 设置管理员

配置项说明
管理员邮箱用于登录 + Token 获取
管理员密码⚠️ 用强密码,这是图床的总钥匙
站点名称随便填,比如"我的图床"

4.4 点击安装

等待几秒 → 显示安装成功 → 自动跳转登录页。

用刚刚设置的管理员邮箱和密码登录。


五、配置存储策略(核心步骤)

登录后,左侧菜单 → 「储存」「储存策略」「新建储存策略」

5.1 本地存储(最简方案,图片直接存 NAS 硬盘)

配置项
角色组勾选管理员组(后面再给普通用户组)
名称本地存储
存储驱动本地(Local)
文件命名规则{Y}/{m}/{d}/{md5}.{ext}
访问域名填你当前的访问地址(后续配了域名再改)
文件路径/app/storage/app/uploads
💡 文件命名建议:{Y}/{m}/{d}/{md5}.{ext} → 按年月日分文件夹,MD5 避免重名。

5.2 接入外部云存储(进阶,双重保险)

Lsky Pro 支持把图片直接存到云存储上,即使 NAS 挂了也能访问。

5.2.1 阿里云 OSS

配置项
AccessKeyId阿里云 RAM 账号的 AccessKey
AccessKeySecret对应的 Secret
Bucket你的 OSS 桶名
地域节点(Endpoint)oss-cn-hangzhou.aliyuncs.com(改成你的区域)
自定义 CDN 域名CDN 加速域名(可选)

5.2.2 腾讯云 COS

配置项
SecretId腾讯云 API 密钥 SecretId
SecretKey对应的 SecretKey
BucketCOS 桶名 + APPID(如 mybucket-1250000000
所属地域ap-guangzhou(改成你的区域)

5.2.3 AWS S3 / Cloudflare R2 / MinIO

配置项
AccessKeyIdS3 兼容密钥
AccessKeySecret对应的 Secret
Bucket存储桶名
地域节点auto(R2 填 auto,真实 S3 填区域)

六、PicGo 客户端配置(自动化上传)

6.1 获取 Lsky Pro 的 API Token

⚠️ 这是最关键的一步,Token 是 PicGo 连接图床的钥匙。

方法一:在 Lsky 后台直接获取(推荐)

  1. 登录 Lsky Pro 后台
  2. 「系统」「接口」 → 查看接口地址
  3. 记录 API 基础 URL:http://你的IP:8000/api/v1
  4. 用下面的工具生成 Token:

方法二:用 curl 命令获取(一条命令搞定)

curl -X POST "http://你的NAS_IP:8000/api/v1/tokens" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"email":"你设置的管理员邮箱","password":"你设置的管理员密码"}'

返回示例:

{
  "status": true,
  "message": "success",
  "data": {
    "token": "1|aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890"
  }
}

方法三:用 Postman(图形界面)

配置
MethodPOST
URLhttp://你的NAS_IP:8000/api/v1/tokens
HeadersAccept: application/json
Content-Type: application/json
Body (raw JSON){"email":"admin@example.com","password":"your_password"}

从响应中复制 token 的值(那一段长字符串)。

6.2 配置 PicGo

6.2.1 安装 Lsky 插件

  1. 打开 PicGo
  2. 左侧 → 「插件设置」
  3. 搜索框输入 lankonglsky
  4. 找到 lankong(或 lsky-pro)插件 → 点击「安装」

6.2.2 配置 Lsky 连接

PicGo → 「图床设置」 → 找到 「lankong」「兰空图床」

配置项示例
Server你的 Lsky 地址http://192.168.1.100:8000
Auth Token上面获取的 token`1aBcDeFgHiJkLmNoPqRsTuVwXyZ1234`
策略 ID存储策略的 ID去 Lsky 后台 → 储存策略 → 看策略 ID 号
💡 策略 ID 可选填,不填则使用默认存储策略。

6.2.3 测试上传

  1. 拖一张图片到 PicGo 上传区
  2. 上传成功 → 链接自动复制
  3. 浏览器打开链接验证

七、Typora / Obsidian 自动上传集成

7.1 Typora 配置

  1. Typora → 文件偏好设置图像
  2. 插入图片时 → 选择 「上传图片」
  3. 上传服务 → 选择 「PicGo (app)」
  4. PicGo 路径 → 选 PicGo 安装目录(Windows 如 C:\Program Files\PicGo\PicGo.exe

✅ 之后在 Typora 粘贴截图,会自动调用 PicGo → Lsky → 返回链接!

7.2 Obsidian 配置

  1. 社区插件搜 Image Auto Upload
  2. 安装后在设置中选 PicGo
  3. 粘贴图片自动上传

7.3 VS Code 配置

安装 Paste ImageMarkdown Image 插件,配置 PicGo 路径。


八、外网访问完整方案

图床建好了,但在公司想用?有三种方式让外面能访问到你的 NAS 图床。

8.1 方案 A:群晖 DDNS + 反向代理(有公网 IPv4,最推荐)

前提:确认你有公网 IPv4

# SSH 登录 NAS,查看你的公网 IP
curl ifconfig.me

然后登录路由器管理页,查看 WAN 口 IP。两个一致 = 有公网 IP。

步骤 1:配置群晖 DDNS

  1. 群晖 DSM → 控制面板外部访问DDNS
  2. 点击「新增」
配置项
服务供应商Synology(免费送 xxx.synology.me 域名)
或选 阿里云 / 腾讯云 / Cloudflare(需自有域名)
主机名称mypic.synology.me
用户名/密码按提示填写
外部地址保持 WAN 自动获取
  1. 点击「测试联机」→ 正常后点「确定」

步骤 2:申请 SSL 证书(HTTPS 必备)

  1. DSM → 控制面板安全性证书
  2. 点击「新增」→ 「从 Let's Encrypt 获取证书」
  3. 域名填 mypic.synology.me
  4. 申请成功后,点「配置」→ 把对应服务绑上证书

步骤 3:配置反向代理

  1. DSM → 控制面板登录门户高级反向代理服务器
  2. 点击「新增」:
来源配置
协议HTTPS
主机名mypic.synology.me
端口443
HSTS勾选
目的地配置
协议HTTP
主机名localhost
端口8000
  1. 保存

步骤 4:路由器端口转发

登录路由器后台 → 端口转发 / 虚拟服务器 → 添加:

配置项
外部端口443(HTTPS)
内部 IP群晖的内网 IP(如 192.168.1.100
内部端口443
协议TCP

✅ 现在浏览器访问 https://mypic.synology.me 就能到你的图床了!

⚠️ 安全提示

  • 别开 8000 端口! 外网一律走 443(HTTPS)
  • 把 PicGo 和 Typora 里的 Server 地址改成 https://mypic.synology.me

8.2 方案 B:公网 IPv6 + DDNS(没有 IPv4 时)

如果你的宽带只有 IPv6(移动宽带常见),也能用。

步骤 1:确认 IPv6

ip -6 addr show | grep global
# 有 240e:xxx 或 2409:xxx 开头的地址就是公网 IPv6

步骤 2:用 DDNS-GO 做动态解析

# Docker 部署 DDNS-GO
docker run -d \
  --name ddns-go \
  --restart=always \
  --net=host \
  -v /volume1/docker/ddns-go:/root \
  jeessy/ddns-go
  1. 浏览器打开 http://你的NAS_IP:9876
  2. DNS 服务商选 阿里云腾讯云Cloudflare
  3. 填写 AccessKey → 输入你的域名
  4. IPv6 选择「通过接口获取」
  5. 保存

步骤 3:群晖反向代理(同方案A)

步骤 4:⚠️ 关键——客户端也需要 IPv6

只有访问你的设备也有 IPv6 时才能访问。手机用 4G/5G 一般都有 IPv6。


8.3 方案 C:内网穿透(啥公网都没有)

如果你没有公网 IP,只能用内网穿透。推荐三个:

服务免费额度速度稳定性
Cloudflare Tunnel免费无限一般(海外中转)⭐⭐⭐⭐⭐
frp(自建)免费(需一台云服务器)⭐⭐⭐⭐
ZeroTier免费 25 设备直连飞快⭐⭐⭐

Cloudflare Tunnel 配置(推荐,完全免费)

  1. 登录 Cloudflare → Zero Trust → Tunnels
  2. 创建 Tunnel → 选 Docker 部署
  3. 运行命令(在你的 NAS 上):
docker run -d \
  --name cloudflared \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run \
  --token 你的Tunnel_Token
  1. 在 Cloudflare Dashboard 配置 Public Hostname:

    • 域名:img.yourdomain.com
    • 服务:http://lsky-pro:8000

✅ 现在 https://img.yourdomain.com 就能访问图床了!(Cloudflare 自动签发 SSL)


九、日常维护与安全

9.1 数据备份(一定要做!)

# 每天凌晨 3 点自动备份(加入 crontab)
# 备份数据库
docker exec lsky-mysql mysqldump -u lsky -p'LskyUser2025!' lsky \
  > /volume1/backup/lsky/lsky_db_$(date +%Y%m%d).sql

# 备份图片文件
tar -czf /volume1/backup/lsky/lsky_images_$(date +%Y%m%d).tar.gz \
  /volume1/docker/lsky-pro/storage/uploads/

# 只保留最近 30 天的备份
find /volume1/backup/lsky/ -name "*.tar.gz" -mtime +30 -delete
find /volume1/backup/lsky/ -name "*.sql" -mtime +30 -delete

9.2 版本更新

cd /volume1/docker/lsky-pro
docker compose down
docker compose pull     # 拉取最新镜像
docker compose up -d    # 重新启动

9.3 安全清单

事项操作
✅ 管理员密码12 位以上,包含大小写字母 + 数字 + 符号
✅ MySQL 密码和 docker-compose.yml 里一样长就行
✅ 外网只开 443路由器别暴露 8000/3306 端口
✅ SSL 证书Let's Encrypt 自动续期
✅ Token 管理定期更换,泄露立刻删除重新生成
✅ 登录失败限制Lsky 后台 → 系统 → 安全设置 → 开启

9.4 容量管理

Lsky Pro 后台 → 用户 → 编辑用户 → 总容量,建议设置:

  • 每个用户:2GB ~ 10GB(够用很久)
  • 上传单文件限制:10MB(大部分图片 <10MB)

十、常见踩坑

问题原因解决
容器启动失败端口冲突`netstat -tlnp \grep 8000` 检查
数据库连接失败密码不一致检查 docker-compose.yml 三处密码
安装时连不上数据库地址填了 localhost改填 mysql(容器名)
图片上传 404存储路径权限chmod -R 755 ./storage
PicGo 上传超时插件 URL 不对Server 后面不要带 /api/v1
反向代理 502容器名解析不到确保反向代理目的填 localhost:8000
外网访问不了运营商封了 80/443换个非标端口(如 8443),端口转发
Token 获取失败邮箱密码不对用管理员邮箱 + 密码(不是 MySQL 密码)

十一、方案总结

┌─────────────────────────────────────────────────────┐
│                    Typora / Obsidian                 │
│                   粘贴图片,自动上传                   │
└───────────────────────┬─────────────────────────────┘
                        │
                        ▼
                ┌───────────────┐
                │     PicGo     │  ← lankong 插件 + Token
                └───────┬───────┘
                        │ HTTP API
                        ▼
┌─────────────────────────────────────────────────────┐
│                    你的 NAS                           │
│  ┌─────────────────────────────────────────────────┐│
│  │  Docker Compose                                 ││
│  │  ┌─────────┐  ┌────────┐  ┌──────────────────┐ ││
│  │  │  MySQL  │◄─┤ Lsky   ├─►│     Redis        │ ││
│  │  │  8.0    │  │  Pro   │  │       7          │ ││
│  │  └─────────┘  └───┬────┘  └──────────────────┘ ││
│  │                   │ 图片文件                      ││
│  │            ┌──────▼──────┐                       ││
│  │            │  本地硬盘    │  ← /volume1/...       ││
│  │            └─────────────┘                       ││
│  └─────────────────────────────────────────────────┘│
└───────────────────────┬─────────────────────────────┘
                        │ 反向代理 + SSL
                        ▼
              ┌─────────────────┐
              │  https://域名   │  ← 外网访问
              └─────────────────┘
                        │ (可选)
          ┌─────────────┼─────────────┐
          ▼             ▼             ▼
    阿里云 OSS    Cloudflare R2   腾讯云 COS
    (远程备份)     (远程备份)      (远程备份)
图片存在你自己的硬盘上,域名是你的,SSL 是你的,一切都在你手里。没有月费,没有数据审查,不会跑路。

手把手教你用 1Panel 在 NAS 上部署 Hermes

全程图形化操作,小白也能搞定。从注册 DeepSeek 到微信聊天,一步一步来。

前言:为什么用 1Panel?

玩 NAS 的朋友都碰到过这样的困境:想装个 Docker 应用,要去网上搜命令、改配置、写 docker-compose……一搞就是半天,还容易报错。

<strong>1Panel</strong> 就是来解决这个的——它是一款<strong>国产开源</strong>的服务器管理面板,类似宝塔,但:

  • 对 Docker 的支持更原生
  • 界面更现代
  • 完全免费
  • 支持应用商店一键部署
  • 有了它,部署 Hermes 就是填几个表格的事。

    一、准备物料清单

    序号物料说明

    1飞牛NAS 或 绿联NAS系统正常、能联网、内存 ≥ 4GB

    2FinalShellWindows 上好用的 SSH 工具,官网:<a href="https://www.hostbuf.com/t/988.html">hostbuf.com</a>

    3DeepSeek 开发者账号调用大模型需要 API Key

    二、先注册 DeepSeek API

    Hermes 的核心是"大模型驱动",它自己不跑 AI,而是调用云端 API。先准备好 API Key。

    (一)为什么选 DeepSeek?

    DeepSeek 是目前最便宜的大模型 API 之一,效果很好:

    410 块钱DeepSeek 充值,够你用几个月

    模型输入价格(每百万 token)输出价格(每百万 token)

    DeepSeek-V3¥1¥4

    deepseek-chat 始终指向最新模型,注册后直接用就行。

    (二)注册步骤

    1. 浏览器访问 <a href="https://platform.deepseek.com">platform.deepseek.com</a>

    2. 点右上角「登录 / 注册」

    3. 手机号注册或微信扫码登录

    4. 注册完自动进入开发者后台

    (三)创建 API Key

    1. 左侧菜单 →「API Keys」

    2. 点「创建新的 API Key」

    3. 起个名字,比如 <code>hermes-nas</code>

    4. ⚠️ <strong>立刻复制保存!</strong> 这串 Key 只显示一次

    5. Key 格式类似:<code>sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>

    <strong>把 Key 粘贴到记事本里存好</strong>,后面配置要用。

    (四)充值

    1. 左侧菜单 →「充值」

    2. 选金额:最低 10 元

    3. 微信/支付宝扫码支付

    ✅ DeepSeek 这边就搞定了。

    三、NAS 开启 SSH

    1Panel 需要通过 SSH 远程安装。

    (一)飞牛 NAS

    1. 浏览器打开飞牛 Web 管理页

    2. 左侧菜单 →「设置」→「终端」

    3. 勾选「开启 SSH」

    4. 默认端口 22

    (二)绿联 NAS

    1. 浏览器打开绿联 UGOS 管理页

    2. 「控制面板」→「终端机与SNMP」

    3. 勾选「启用 SSH 服务」

    4. 默认端口 22

    两种 NAS 操作差不多,找到 "SSH" 关键字打开就行。

    四、SSH 连接 NAS

    (一)Windows CMD(自带,无需安装)

    Windows 10/11 自带 SSH,按 <code>Win+R</code> 输入 <code>cmd</code> 回车,直接输入:

    
    ssh root@你的NAS_IP
    
    如果端口不是默认 22,加 <code>-p 端口号</code>,例如:<code>ssh root@192.168.1.100 -p 2222</code>

    第一次连接会提示确认,输入 <code>yes</code> 回车,然后输入 NAS 密码即可。

    (二)FinalShell(推荐新手)

    FinalShell 是 Windows 上好用的 SSH 客户端,界面友好、有中文、带文件管理,比 CMD 更好上手。

    官网:<a href="https://www.hostbuf.com/t/988.html">hostbuf.com</a>,下载 Windows 版,一路默认安装。

    (三)创建连接

    1. 打开 FinalShell → 左上角文件夹图标(新建连接)

    2. 选择「SSH 连接 (Linux)」

    3. 填写信息:

    DeepSeek-R1(推理增强)¥4¥16

    字段填什么

    名称随便写,比如「我的飞牛NAS」

    主机NAS 的 IP 地址(去路由器后台看,一般是 192.168.x.x)

    端口22

    用户名root

    4. 点「确定」→ 双击连接

    看到 <code>root@FNOS:~#</code> 就表示连上了!

    五、安装 1Panel 面板

    (一)获取安装命令

    浏览器打开 <a href="https://1panel.cn">1panel.cn</a>,首页就能看到大大的安装按钮,复制命令:

    
    curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
    

    (二)粘贴执行

    回到 SSH 终端(CMD 或 FinalShell),粘贴命令回车。

    安装程序会自动执行以下操作:

  • 检测你的 NAS 系统架构(x86/ARM64)
  • 自动安装 Docker(如果还没装)
  • 下载 1Panel 安装包
  • 配置面板服务
  • 整个过程 3-5 分钟,全程无需手动干预,等着就行。

    (三)设置面板账号

    安装到后半段,会弹出交互式配置,逐项输入:

    1. <strong>「请设置 1Panel 面板端口」</strong> → 直接回车,用默认 <code>10086</code>

    2. <strong>「请设置 1Panel 面板安全入口」</strong> → 设置一个后缀,比如 <code>/mypanel</code>。这是面板地址的路径部分,增加安全性。不设也行但建议设

    3. <strong>「请设置 1Panel 面板用户名」</strong> → 填 <code>admin</code>(或自定义)

    4. <strong>「请设置 1Panel 面板密码」</strong> → <strong>重点!</strong> 设复杂密码——大小写字母 + 数字 + 特殊符号,这是面板的唯一防线

    (四)保存登录信息

    安装完成后屏幕打印:

    
    ================================================
    面板地址: http://192.168.x.x:10086/mypanel
    用户名: admin
    密码: 你设的密码
    ================================================
    

    📸 <strong>截图或拍照保存!</strong> 马上要用。

    (五)访问面板验证

    浏览器打开面板地址 → 输入账号密码 → 看到蓝白仪表盘 → 安装成功!

    左侧「容器」菜单能看到 Docker 状态,说明 1Panel 已经把 Docker 也管理起来了。

    六、登录 1Panel

    1. 浏览器打开面板地址

    2. 输入用户名 <code>admin</code> 和密码

    3. 登录成功,看到蓝白配色的管理面板

    左侧菜单 →「容器」→ 能看到 Docker 运行状态,说明一切正常。

    (可选)配镜像加速

    国内访问 Docker Hub 有时很慢:

    1. 「容器」→「配置」→「镜像加速」

    2. 填入:

    
    https://docker.1panel.live
    

    3. 点「重启 Docker」

    七、部署 Hermes(三种方式任选)

    <strong>这就是装 1Panel 的目的!</strong> 1Panel 让 Hermes 部署变成了填表——不需要懂 Docker 命令,不需要写 docker-compose,甚至配置 DeepSeek API 都可以在面板里完成。对新手极其友好。

    下面提供三种方式,推荐新手用方式一。

    方式一:1Panel 应用商店一键安装(最推荐!⭐)

    这才是 1Panel 的核心优势——像手机装 App 一样部署 Hermes。

    1. 左侧菜单 →「应用商店」

    2. 搜索框输入 <code>hermes</code>

    3. 找到 <strong>Hermes Agent</strong>,点「安装」

    4. 填写配置:

    密码NAS 的管理员密码

    字段

    名称hermes

    端口8020

    5. 点「确认」→ 等 1-2 分钟 → 完成!

    这就是全部。不需要手动配端口映射、不需要配卷挂载、不需要写环境变量——1Panel 全部帮你处理好了。

    甚至配置 AI 模型都可以在应用商店的安装界面里直接填 DeepSeek API Key,不用进容器终端敲命令。

    方式二:Web 端手动创建(适合想了解参数的同学)

    1. 创建容器

    左侧菜单 →「容器」→「创建容器」,填写:

    数据目录/opt/hermes

    字段

    名称hermes

    ⚠️ 如果镜像拉不下来,换:<code>dockerpull.com/nousresearch/hermes-agent:latest</code>

    2. 端口映射

    「端口」栏 →「添加端口映射」:

    镜像ghcr.io/nousresearch/hermes-agent:latest

    主机端口容器端口

    3. 目录挂载

    「卷挂载」→「添加卷挂载」:

    80208020

    主机路径容器路径

    4. 环境变量

    「环境变量」→「添加环境变量」:

    /opt/hermes/opt/data

    变量名

    5. 启动

    点右下角「确认」,等待 1-2 分钟,容器状态变绿色「运行中」即可。

    方式三:一键 SSH 命令

    如果你更喜欢命令行,直接在 SSH 终端粘贴以下一整段:

    
    docker run -d \\
      --name hermes \\
      --restart=unless-stopped \\
      -p 8020:8020 \\
      -v /opt/hermes:/opt/data \\
      -e TZ=Asia/Shanghai \\
      ghcr.io/nousresearch/hermes-agent:latest
    
    如果镜像拉不下来,把最后一行换成 <code>dockerpull.com/nousresearch/hermes-agent:latest</code>

    执行后等 1-2 分钟,<code>docker ps | grep hermes</code> 看到状态 <code>Up</code> 就行。

    两种方式效果完全一样,选你喜欢的就好。

    八、配置 Hermes

    部署完成后需要配置 AI 模型,让 Hermes 接上 DeepSeek。同样两种方式任选。

    方式一:Hermes Web 管理界面配置(推荐!🌟)

    不用进终端,在浏览器里鼠标点击就能配好:

    1. 浏览器打开 <code>http://你的NAS_IP:8020</code>

    2. 左侧菜单 →「设置」→「模型配置」

    3. 1Panel / Hermes 提供了专门的模型配置页面,直接填表:

    TZAsia/Shanghai

    字段

    模型提供商自定义 (Custom)

    API 地址https://api.deepseek.com/v1

    默认模型deepseek-chat

    4. 点「保存」→ 立即生效!

    一行命令都不用敲,跟填注册表一样简单。这就是 1Panel 对新手最友好的地方。

    方式二:容器终端命令

    如果你想了解底层,也可以用命令行:

    1. 左侧「容器」→ 找到 <code>hermes</code>

    2. 点右边「终端」按钮 →「连接」

    3. 一行一行粘贴执行(<strong>把 Key 换成你自己的</strong>):

    
    hermes config set model.provider custom
    hermes config set model.base_url https://api.deepseek.com/v1
    hermes config set model.default deepseek-chat
    hermes config set model.api_key sk-你的APIKey粘贴到这里
    

    <strong>各参数含义:</strong>

  • <code>provider custom</code>:使用自定义 API
  • <code>base_url</code>:DeepSeek 的 API 地址
  • <code>default</code>:默认模型(deepseek-chat,始终使用最新版本)
  • <code>api_key</code>:你之前注册充值的那个 Key
  • 两种方式效果完全一样,推荐新手用方式一,填几个框就完事。

    (三)接入微信

    在同一个终端执行:

    
    hermes gateway setup
    

    终端会出现一个二维码。用<strong>微信扫这个码</strong>,按提示操作:

    1. 微信提示"发现一个新设备"

    2. 选择绑定到哪个聊天

    3. 确认授权

    绑定成功后执行:

    
    hermes gateway restart
    

    🎉 现在在微信里 @Hermes 就能跟它聊天了!

    九、验证一切正常

  • 🌐 浏览器打开下面这个地址,看到 Hermes Web 界面就成功了:
  • 
    http://你的NAS_IP:8020
    
  • 💬 微信里发一条消息 → 它应该会回复
  • 十、常见问题

  • <strong>镜像一直拉不下来?</strong> 换以下镜像之一:
  • 
    docker.1panel.live/nousresearch/hermes-agent:latest
    dockerpull.com/nousresearch/hermes-agent:latest
    
  • <strong>容器启动后马上退出?</strong> 点容器 →「日志」看错误信息,通常是网络不通或 API Key 没配对
  • <strong>FinalShell 连接提示 Connection refused?</strong> 检查 NAS 的 SSH 有没有开启,飞牛和绿联默认都是关闭的
  • <strong>微信扫码后没反应?</strong> 执行以下命令重启网关:
  • 
    hermes gateway restart
    
  • <strong>怎么升级到最新版?</strong> 1Panel → 容器 → hermes → 更多 → 重建 → 勾选「拉取最新镜像」
  • <strong>群晖/威联通/Unraid/OMV 能用吗?</strong> 完全可以!只要系统支持 Docker + 能开 SSH 就行
  • 十一、成本核算

    API Keysk-你的APIKey粘贴到这里

    项目费用

    NAS 硬件已有

    1Panel 面板免费

    Hermes 软件免费开源

    DeepSeek API≈ 10 元/2-3个月

    比腾讯云 VPS 一个月 50-100 元省太多了,而且数据全在自己手里!

    总结

    回顾整个过程:

    1. 注册 DeepSeek,拿到 API Key

    2. NAS 开 SSH → CMD/FinalShell 连接

    3. 一条命令装好 1Panel

    4. 应用商店一键安装 Hermes

    5. 配好 API Key + 绑微信

    6. 完成!

    全程不需要懂 Docker 命令,不需要写 docker-compose,不需要 vi 编辑器。<strong>1Panel 让部署 Hermes 变成了手机装 App 一样简单。</strong>

    这就是推荐 1Panel 的原因——对 NAS 玩家来说,简单就是王道。装 1Panel 就是为了用 1Panel 应用商店部署 Hermes,从注册 DeepSeek 到微信聊天,一条龙全搞定。

    <strong>排版:追梦学习库 文字:追梦学习库</strong>

    <strong>总计月均</strong><strong>≈ 3-5 元</strong>