如何从头开始搭建属于自己的家用nas实现内网穿透访问

最近我在家部署了群晖NAS923+,从而实现内网穿透,下面写一个新手向教程:

一、硬件安装与初始化设置

1. 硬盘安装(已完成可跳过)
  • 群晖 923 + 支持 4 块 3.5 英寸硬盘,开箱后取出硬盘架,将硬盘(建议至少 2 块,Basic 模式单盘独立使用)放入并固定螺丝。
  • 按硬盘架指示方向插入 NAS 硬盘舱,听到 “咔哒” 声即安装到位。
2. 连接设备
  • 用网线将 NAS 的网口(Rear 面板的 LAN 口)连接到家用路由器的 LAN 口(确保路由器正常联网)。
  • 插入电源适配器,按下 NAS 正面的电源键开机(首次开机约 2-3 分钟,指示灯从闪烁变为常亮即启动完成)。我这里黄线接的路由器,蓝线接的主机:
    img
3. 安装 DSM 系统(群晖操作系统)
  • 电脑连接同一路由器,打开浏览器访问「群晖助手下载页」,下载对应系统的「Synology Assistant」(群晖助手)。
  • 打开助手,会自动搜索局域网内的 NAS 设备,找到 “DS923+” 后双击,按提示点击「连接」。
  • 在弹出的网页中,选择「设置」→ 同意协议 → 点击「手动安装」,从群晖官网下载 DS923 + 对应的最新 DSM 固件(.pat 文件),上传并等待安装(约 10 分钟,期间 NAS 会自动重启)。
  • 重启后,设置管理员账号(用户名 + 密码,务必牢记)、设备名称(如 “HomeNAS”),关闭 “自动更新 DSM”(新手建议手动更新),完成初始化。

二、硬盘存储配置(Basic 模式)

1. 创建存储池
  • 登录 DSM 系统(浏览器输入 NAS 的局域网 IP,如 192.168.1.100,输入管理员账号)。
  • 打开「存储管理器」→ 左侧「存储池」→ 点击「创建」→ 选择「Basic」(单盘独立模式,适合新手,一块硬盘故障不影响其他盘)→ 下一步。
  • 勾选要使用的硬盘(如仅安装 1 块,直接勾选)→ 下一步 → 确认设置(默认容量即可)→ 点击「应用」,等待创建完成(约 5 分钟)。我这里4块硬盘全部采用的basic模式,有条件的可以采用冗余的raid实现数据备份。
    img
2. 创建共享文件夹
  • 打开「控制面板」→「共享文件夹」→「创建」→ 输入名称(如 “Movies” 存放电影,“Music” 存放音乐)→ 选择存储池(默认即可)→ 取消 “启用回收站”(节省空间)→ 点击「确定」。
  • 后续可通过电脑访问 NAS:在文件管理器地址栏输入 \\NAS的IP(如 \192.168.0.x),输入管理员账号,即可上传文件到共享文件夹。

三、安装 Jellyfin 打造家庭影院

1. 安装 Docker(推荐方式)
  • 打开 DSM 的「套件中心」→ 搜索 “Docker”→ 点击「安装」,等待完成(Docker 是容器工具,方便管理 Jellyfin)。
    img
2. 部署 Jellyfin 容器
  • 打开 Docker → 左侧「注册表」→ 搜索 “jellyfin”→ 选择官方镜像(jellyfin/jellyfin)→ 点击「下载」,选择 “latest” 版本。
  • 下载完成后,左侧「镜像」→ 双击 “jellyfin/jellyfin”→ 点击「高级设置」:
    • :点击「添加文件夹」→ 选择 NAS 的共享文件夹(如 “Movies”)→ 装载路径填写/media/movies(Jellyfin 内部访问路径);同理添加 “Music” 对应/media/music
    • 端口设置:本地端口填写 “8096”(Jellyfin 默认端口),容器端口保持 “8096”;再添加一行,本地端口 “8920”(HTTPS 端口),容器端口 “8920”。
    • 环境:点击「添加」→ 变量名 “PUID”,值 “1000”;变量名 “PGID”,值 “1000”(避免权限问题)。
  • 点击「应用」→「下一步」→「完成」,等待容器启动(状态变为 “运行中”)。
    img
3. 配置 Jellyfin
  • 浏览器访问

    NAS的IP:8096
    

    (如 192.168.0.x:8096),进入 Jellyfin 向导:

    • 选择语言→创建管理员账号→点击「添加媒体库」→ 选择 “电影”→ 点击「浏览」→ 选择/media/movies→ 保存。
    • 同理添加音乐库(路径/media/music)→ 完成设置。
      img
  • 此时 Jellyfin 已能识别共享文件夹中的媒体文件,可在局域网内通过手机 / 电视访问(下载 Jellyfin 客户端,输入 NAS 的 IP:8096)。

四、内网穿透:实现异地访问 NAS 和 Jellyfin

方法 1:Tailscale(推荐新手,无需公网 IP)
  • 原理:通过虚拟组网,让异地设备和 NAS 处于同一虚拟局域网,直接用内网 IP 访问。

  • 步骤 :

    1. 登录 NAS 的 DSM → 「套件中心」→ 搜索 “Tailscale”→ 安装(若没有,去 Tailscale 官网下载群晖套件.spk 文件,手动上传安装)。
    2. 打开 Tailscale → 点击「登录」,用邮箱注册账号后扫码 / 点击链接授权。
    3. 授权后,Tailscale 会给 NAS 分配一个虚拟 IP(如 100.xx.xx.xx),记住此 IP。
    4. 异地设备(手机 / 电脑)安装 Tailscale 客户端(官网下载),用同一账号登录,即可在设备列表看到 NAS。
    5. 异地访问:浏览器输入 NAS的虚拟IP:8096 访问 Jellyfin;输入虚拟 IP 访问 DSM(需在 DSM 的「控制面板」→「登录门户」→「DSM」开启端口,默认 5000/5001)。
方法 2:群晖 QuickConnect(简单但速度较慢)
  • 打开 DSM →「控制面板」→「QuickConnect」→ 勾选 “启用 QuickConnect”→ 注册群晖账号,设置 QuickConnect ID(如 “homeNAS123”)。
  • 异地访问:浏览器输入 https://quickconnect.to/你的ID,登录后可访问 DSM 和已安装的套件(包括 Jellyfin,需在 Jellyfin 设置中允许远程访问)。
方法 3:公网 IP + 端口转发(适合有公网 IP 的用户)
  • 联系运营商获取公网 IP(部分地区需申请),登录家用路由器管理后台(如 192.168.1.1)。
  • 找到「端口转发」设置→ 添加规则:
    • 外部端口:自定义(如 8096),内部 IP:NAS 的局域网 IP(如 192.168.1.100),内部端口:8096(Jellyfin)。
    • 再添加一条:外部端口 5000,内部端口 5000(DSM)。
  • 异地访问:通过路由器的公网 IP + 端口(如 210.xx.xx.xx:8096)访问,建议配合动态 DNS(如阿里云 DNS)绑定域名,避免 IP 变动。

五、新手注意事项

  1. 安全设置:DSM「控制面板」→「用户账号」开启两步验证;「防火墙」只开放必要端口(如 8096、5000)。
  2. 硬盘维护:Basic 模式无冗余,重要文件建议定期备份到移动硬盘或云盘。
  3. Jellyfin 优化:「设置」→「转码」选择 “硬件加速”(群晖 923 + 支持 QuickSync,提升播放流畅度)。
  4. 远程访问速度:Tailscale 依赖双方网络,建议异地设备连接稳定 WiFi;公网 IP 方式速度取决于带宽。

按以上步骤操作,即可完成从 NAS 搭建到家庭影院、异地访问的全流程。遇到问题可查看群晖官网手册或 Jellyfin 社区,新手建议先熟悉局域网内操作,再尝试内网穿透。

另附上Tailscale详细说明:

Tailscale 是一款基于 WireGuard 协议的异地组网工具,能将不同网络环境的设备组成虚拟局域网,实现内网互联访问。以下是使用 Tailscale 实现异地组网和内网互联访问的具体步骤:

  1. 注册与登录:打开 Tailscale 官网,点击右上角 “Log in”,可选择 Google、Microsoft 等方式授权登录。登录后会进入管理界面,该界面用于管理添加的设备和网络配置。

  2. 下载与安装 :根据设备类型,从 Tailscale 官网获取对应安装包。常见设备如 Windows、Android、Linux 安装方法各有特点:

    • Windows 设备:下载安装包后正常安装,安装完成后在电脑任务管理器会出现 Tailscale 图标,点击登录,设置主机名并可选择禁止密钥过期。
    • Android 设备:默认从 Google Play 下载安装,也可通过 F-droid 市场安装(需先下载 F-Droid 应用,更新国内源后下载 TailScale android app) 。
    • Linux 设备(以阿里云为例):若国内网络无法访问https://pkgs.tailscale.com,可采用官网提供的其他方式下载安装。
  3. 添加设备到网络:登录 Tailscale 管理端(https://login.tailscale.com/admin/machines),进入添加设备页面。添加成功后,设备会出现在设备清单中,此时设备已加入 Tailscale 网络。我这里添加到同一网络的有win11电脑、华为手机、苹果手机等。
    img

  4. 设备间访问:

    • 通过 Tailscale 分配的 IP 访问:连接到 Tailscale 的设备,能直接使用 Tailscale 分配的 IP 访问其他设备。比如,在资源管理器或远程连接工具中,输入目标设备的 Tailscale IP,再输入用户名和密码就能登录访问。
    • 使用原生内网 IP 访问(需配置子网路由):部分场景下,可配置 TailScale 子网路由实现使用原生内网 IP 远程访问,让异地组网访问体验更接近传统局域网。不同设备和网络环境下,子网路由配置步骤有差异,需参考官方文档或相关教程进行。
  5. 多局域网互联:若有多个局域网要互联,每个局域网只需一台设备安装 Tailscale(注意每个局域网的网段不能相同)。安装并配置好后,不同局域网内连接到 Tailscale 的设备就能相互访问,如同处于同一个局域网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91754.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 之多表

mysql之多表已知2张基本表:部门表:dept (部门号,部门名称);员工表 emp(员工号,员工姓名,年龄,入职时间,收入,部门号)CREATE table dep…

【Django】-6- 登录用户身份鉴权

一、🛡️ Django 鉴权 & 登录控制 Django 自带的鉴权系统(用户身份管理小管家)鉴权系统能干啥?Django 自带的鉴权系统,就像一个 “用户身份管家” ,帮你管好这些事儿:功能类比加密存储用户密…

winscp 连openwrt 返回127错误码

winscp 连openwrt 24.10返回127错误码。找了许多原因也没搞清为啥(客户端加密方式、winscp版本过低等都试过),用SecureFx试了一下,发现是openwrt 24.10固件没有安装Sftp服器,用下列命令安装即可。opkg install openssh…

Python编程基础与实践:Python文件处理入门

Python文件处理实战 学习目标 通过本课程的学习,学员将掌握如何在Python中打开、读取、写入和关闭文件,了解文本文件和二进制文件的区别,以及在文件处理中的一些最佳实践。 相关知识点 Python文件处理 学习内容 1 Python文件处理 1.1 文件的基…

Corrosion2靶机

打开靶机信息收集:kali里使用arp-scan -l或者netdiscover发现主机使用nmap扫描端口nmap -sS -sV -T4 -n -p- 192.168.31.20开启了22、80、8080端口 8080发现开启了tomcat服务扫出了他的ip以及他开放的端口,我们接下来拿浏览器访问一下两个页面都没有什么…

编程与数学 03-002 计算机网络 18_物联网与网络

编程与数学 03-002 计算机网络 18_物联网与网络一、物联网的基本概念(一)物联网的架构与层次(二)物联网的关键技术二、物联网网络的构建(一)物联网网络的通信协议(二)物联网网络的拓…

【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载

在Kubernetes中,配置管理是应用部署的重要环节。ConfigMap作为存储非敏感配置数据的资源对象,能帮助我们实现"配置与代码分离",让应用部署更灵活。一、什么是ConfigMap? ConfigMap是Kubernetes中用于存储非加密配置数据…

Promise和回调地狱

顺序执行 vs. 异步操作: 当我们说“顺序执行”,通常是指 操作按顺序发生。而 异步操作 指的是操作在后台执行,不会阻塞其他操作,通常会使用回调、Promise 或 async/await 来处理结果。 在 Promise 链式调用 的情况下,虽…

LeetCode 65:有效数字

LeetCode 65:有效数字问题本质与挑战 需判断字符串是否为有效数字,规则涉及整数、小数、指数(e/E)的复杂组合,如: 整数:123、-45、678小数:1.2、.3、4.、5.6指数:1e10、2…

数据结构之顺序表应用与双指针法

元素删除通过元素移动的方式来模拟删除操作:将指定下标后的所有元素依次向前移动一位,覆盖要删除的元素,从而达到 "删除" 的效果。 通过自定义函数实现删除功能,需要传入数组、数组长度的指针(因为要修改长度…

Python编程基础与实践:Python基础数据类型入门

Python变量与数据类型实践 学习目标 通过本课程的学习,学员可以掌握Python中变量的基本概念,了解并能够使用Python的基本数据类型,包括整型、浮点型、字符串和布尔值。此外,学员还将学习如何在实际编程中声明和使用这些数据类型。…

深入解析C/C++函数变量传递:栈、堆与全局变量的生命周期之旅

资料合集下载链接: ​https://pan.quark.cn/s/472bbdfcd014​ 在编程学习中,函数是构建程序的基石,而理解变量如何在函数之间正确、安全地传递,则是从入门到进阶的关键一步。我们经常会遇到这样的困惑:为什么一个指针在某个函数里工作正常,传递给另一个函数后却变成了“…

Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法

Ubuntu 18启动以后发现连接不上网络,执行 ip a命令或者ifconfig都显示不了正确的地址(192.168.xxx.xxx)。 刚装好系统是没问题的,打算使用FTP开启ftp服务与windows互传文件,安装了net-tools插件就突然连不上网络了,怀疑是网络配置被修改了。 经过了一段时间折腾终于解决了,…

【计算机网络】Socket网络编程

目录 一、主机字节序列和网络字节序列 二、套接字地址结构 1、IPv4 地址结构 (sockaddr_in) 2、IPv6 地址结构 (sockaddr_in6) 3、通用套接字地址结构 (sockaddr) 4、Unix域套接字地址结构 (sockaddr_un) 5、专用 socket 地址结构 6、套接字地址结构的转换 字符串转二进制地址 …

网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率

文章目录前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息5. 本地运行测试6. 安装内网穿透6.1 配置公网地址…

Pycharm的设置过程

20250802 用于记录pycharm的设置过程 编辑器相关 python语言设置文件注释 在设置的编辑器部分,按照需求设置模板! 函数生成注释

GaussDB as的用法

通过使用 SQL,可以为表名称或列名称指定别名(Alias)。1 别名的作用SQL 别名用于为表或表中的列提供临时名称。 SQL 别名通常用于使列名更具可读性。 SQL 一个别名只存在于查询期间。 提高SQL执行效率与编写SQL代码效率。2 使用别名的场景在下…

Prim算法

一,prim算法逻辑1.理解:克鲁斯卡尔算法关注的是边,普里姆算法关注的是点把图中每个顶点比作孤岛,点亮一座孤岛就可以解锁附近的孤岛每次解锁的点都是离自身最近的点2.普里姆算法流程a.采用邻接矩阵表示,考虑要查找最小…

嵌入式学习之硬件——51单片机 1.0

一、基础知识1.什么是嵌入式?嵌入式以应用为中心,计算机技术为基础,软硬件可裁剪的专用计算机系统;2.嵌入式的应用?消费电子、无人驾驶、储能、新能源........3.嵌入式发展?(1)第一阶…

51c大模型~合集161

自己的原文哦~ https://blog.51cto.com/whaosoft/14079111 #这家国内公司,在给xx智能技术栈做「通解」 打通机器人智能化的关键:眼脑手。 xx智能(Embodied Intelligence)是 AI 领域里热度极高的赛道:给大模型…