返回列表 发布新帖

[Docker(含三方容器)] Tailscale虚拟局域网解决Gitea公网ssh问题

683 4
发表于 2026-3-26 16:31:51 | 查看全部 阅读模式 IP:–浙江–宁波

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
# Tailscale虚拟局域网解决Gitea公网ssh问题

## 问题

现状:

|资源|说明|备注|
| -----------| ---------------------------| ---------------------------------------------------|
|绿联NAS|已接入局域网,开启 Docker|需确保 Docker 网络模式正常;绿联 NAS 自带内网穿透|
|笔记本Win|可访问公网|平时通过绿联 NAS 桌面端访问服务|

1. 绿联 NAS 接入家庭局域网(无公网IP)。
2. NAS 通过 docker 安装了若干应用(例如 思源笔记 等),应用可以通过内网直接访问。公网访问,一般是通过先登录绿联云门户,然后再访问对应的 docker 应用快速访问端口(相当于通过绿联云中转访问)。我觉得这个对于 web 类应用挺好的,可以保留使用。(缺点是用户无妨操作云控制台,不能像其他云服务器那样控制安全组等。)
3. 问题在于,对于 gitea 等需要通过 ssh 或者 http 访问的应用(gitea 配置 `ROOT_URL`​ 需要确定域名或 IP,局域网通过绿联 NAS 的 IP 访问没有问题),通过公网访问会被绿联云重定向到nas桌面的登录门户。我现在希望解决这个问题。

我的要求是:尽量少增加资源,少折腾配置,尽量在保有现有服务和安全性的前提下,解决上述问题。

## 方案调研

|方案|是否需要公网IP|是否需要域名|是否需要维护|是否支持 Git/API|稳定|性能<br />|自由度|说明|
| -----------------------| --------------------------------| --------------| --------------| -------------------------| ------| --------| --------| ------------------------------|
|绿联 NAS 自带远程服务|❌|❌|❌|❌|稳定|一般|低||
|Lucky + 反向代理|❌(NAS不需要,但通常需要VPS)|❌(推荐有)|✅|✅|稳定|高|高|自建内网穿透,需要维护 VPS。|
|Cloudflare Tunnel<br />|❌|✅|⚠️ 少量|✅(HTTP很好,SSH一般)|高|中|中|零信任访问,服务在国外。|
|[Tailscale](https://tailscale.com/docs) 虚拟局域网|❌|❌|⚠️ 少量|✅|高|高|中|非公网服务,适合个人使用。|

Lucky和Cloudflare方案本质上都是自己实现内网穿透/反向隧道。Lucky 适合配合公网服务器(VPS)搭建 NAS 自建开发环境并长期运行;Cloudflare 适合个人网站或 Web 服务。

由于我进需要自己访问 NAS,故选择最简单+最安全的 Tailscale 方案。

## 实现过程

Tailscale 本质是通过将设备都添加到同一个局域网中实现设备访问,有端到端加密(所有通信通过 WireGuard 加密)、设备身份认证、不暴露公网端口的特点。

### 1. Tailscale 注册

登录 [Tailscale](https://tailscale.com/) 并注册账号(一般可以用 ms/github/gmail 注册)。

登录之后进入 web 端控制台。

### 2. 添加本地设备

以 win 平台为例,在本地安装 Tailscale 客户端并使用相同账号登录,会自动跳转连接设备。

成功之后可以在 Tailscale 控制台看到被添加的设备信息,包括设备名称和 IP。

### 3. 添加 NAS

在 Tailscale 控制台 -> Settings -> Personal Settings: Keys -> Generate auth key... 中,创建鉴权密钥。

- 可以选择密钥是否仅支持单设备、密钥过期时间等配置。
- 注意保存密钥值,下面需要用到。

接下来在 NAS 中配置 Tailscale 应用。

1. NAS 开启 docker 应用。
2. docker 拉取 [tailscale/tailscale:latest](https://hub.docker.com/r/tailscale/tailscale) 镜像。
3. 配置项目:

   docker-compose.yaml 如下(采取最小配置策略):

   ```yaml
   services:
     tailscale:
       image: tailscale/tailscale:latest
       container_name: tailscale
       hostname: my-nas                      # 显示的设备名称
       network_mode: host                        # 保证网络连通性最稳
       volumes:
         - /path/to/docker/tailscale/state:/var/lib/tailscale  # 仅保留状态存储
       environment:
         - TS_AUTHKEY=tskey-auth-<your-auth-key> # 替换为你的Key
         - TS_STATE_DIR=/var/lib/tailscale
         - TS_USERSPACE=true                     # 开启用户态模式,无需tun和特权
         - PUID=1000
         - PGID=10
   ```

4. 启动项目,确保容器正常运行。
5. 查看 Tailscale 控制台,有添加 my-nas 设备则成功。

记录 my-nas 设备的 IP。

### 4. 虚拟局域网访问

在本地设备和局域网 NAS 均成功添加到 Tailscale 之后,访问 NAS 和在家庭局域网访问没有差别,使用 Tailscale 中 NAS 设备的 IP 即可以等同于直接在家庭局域网访问。

以 Gitea 为例:

```yaml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: docker.gitea.com/gitea:1.25.4
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=<gitea-db>
      - GITEA__database__USER=<gitea-user>
      - GITEA__database__PASSWD=<strong-password>
    # restart: always
    networks:
      - gitea
    volumes:
      - /path/to/docker/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    depends_on:
      - db

  db:
    image: docker.io/library/postgres:15
    # restart: always
    environment:
      - POSTGRES_USER=<gitea-user>
      - POSTGRES_PASSWORD=<strong-password>
      - POSTGRES_DB=<gitea-db>
    networks:
      - gitea
    volumes:
      - /path/to/docker/postgres:/var/lib/postgresql/data
```

Gite 初始化配置 ROOT_URL 为:[http://<mynas.local>:3000/]()

- 这里的域名是在:NAS 控制面板 -> 设备连接 -> 局域网连接 -> 自定义域名
- 或者也可以用:[http://<ip>:3000/]() (其中 IP 就是 Tailscale 中的 NAS IP)

局域网访问 Gitea Web:[http://<mynas.local>:3000/]()

ssh 推送(需要先配置 ssh 密钥):

```bash
$ git remote add origin git@<tailscale-hostname>:<username>/<repo>.git
```

以上方案经测试可行。

评论4

v9gEJX楼主Lv.1 发表于 2026-3-26 16:35:48 | 查看全部 IP:–浙江–宁波
不能自动转换md我也是很无奈了
夏夏子Lv.7绿联NAS社区会员用户 发表于 2026-3-26 21:22:29 来自手机 | 查看全部 IP:–湖北–襄阳
v9gEJX 发表于 2026-3-26 16:35
不能自动转换md我也是很无奈了

已经在计划支持md编辑器了
playokLv.4 发表于 2026-3-26 21:30:43 | 查看全部 IP:–广东–佛山–高明区
夏夏子 发表于 2026-3-26 21:22
已经在计划支持md编辑器了

能不能换个编辑器
夏夏子Lv.7绿联NAS社区会员用户 发表于 2026-3-27 08:47:49 | 查看全部 IP:–湖南
playok 发表于 2026-3-26 21:30
能不能换个编辑器

在联系了~我也在催 不支持md我每次改样式都要改好久

评论

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2026 绿联NAS私有云社区 版权所有 All Rights Reserved. 粤公网安备44030002002555号| 粤ICP备12028978号
关灯 在本版发帖
联系技术支持
返回顶部
快速回复 返回顶部 返回列表