部署原则
Sun-Panel
虚拟化平台
NAS 存储系统
Wireguard
Adguard Home
Nginx Proxy Manager
Uptime Kuma
Slink
Code Server
Portainer
Docker Copilot
GitLab
Gitea
Calibre-Web
Navidrome
Emby
Flatnotes
Memos
Wiki.js
Excalidraw
DrawIo
Mind-Map
Stash
网站推荐
结尾
个人认为家庭内网服务应该尽量遵守以下 2 个原则:
开源意味着所有人都能查看其源代码,至少在一定程度上能够尽可能的避免安全相关的问题。同时开源往往也意味着免费使用。
Docker 化部署屏蔽了硬件、环境以及其它依赖相关的各种问题,不用和特定的平台相互绑定,使得服务的后续迁移也非常便捷。
Sun-Panel 是一个漂亮的服务器、NAS 导航面板、Homepage 、浏览器首页。
Github: https://github.com/hslr-s/sun-panel
部署效果如下:
类似比较出名的个人导航页还有 Heimdall 。( https://github.com/linuxserver/Heimdall)
Sun-Panel 支持局域网和互联网 2 种模式,UI 更加简洁美观,个人更加倾向于使用 Sun-Panel 。
All in one 的玩家对虚拟化平台应该都非常熟悉。现在主流的虚拟化平台有 VMware ESXi 、PVE 、Unraid 、Hyper-V 等等。
个人使用过一段时间的 ESXi ,体验还是非常不错的。
但是 ESXi 存在对新硬件的支持不太友好的问题。个人就遇到过最新版本的 ESXi 无法原生驱动螃蟹网卡的问题。加上 ESXi 是需要付费使用的,所以最后放弃了 ESXi 。相对的,PVE 对新的硬件支持程度非常好。
遵从开源免费的原则,毫无疑问应该使用 PVE 。
另一方面,虚拟机的开销往往比较大,PVE 的 CT 容器是虚拟机的轻量级替代品。
没有特殊情况,推荐使用 CT 容器,而不是虚拟机。
PVE: https://pve.proxmox.com/wiki/Main_Page
部署效果如下:
个人长期使用的 NAS 存储是极空间 Z4 Pro 以及一台自己组装的黑群晖。
单纯的个人体验方面,极空间虽然存在一些无关紧要的小毛病,但是综合体验是大于群晖的,特别是手机应用方面。
上述只是个人体验方面的观点,为了避免引战,这里不再展开叙述。
黑群晖是自己组装的,机箱使用的是乔思伯 N2 ,PCIE 扩展了万兆网卡。
慢慢开始以极空间作为主力 NAS ,黑群晖只是当做备份存储。
Wireguard 是 Linus Torvalds 为数不多夸过的技术,称赞它是:it's a work of art 。
Wireguard 也是我个人使用体验过的最好的内网穿透软件。
Github: https://github.com/wg-easy/wg-easy
后面会专门写一篇文章来介绍《在外访问家庭内网服务的最佳姿势》。
部署使用的是 Docker 部署的方式:部署效果如下:
AdGuard Home 是一款非常出色的 DNS 服务器,支持广告过滤和拦截,可以和软路由中的 MosDNS 等 DNS 软件搭配使用。
Github: https://github.com/AdguardTeam/AdGuardHome
部署效果如下:
同样出色的 DNS 服务还有 Pi-hole ( https://github.com/pi-hole/pi-hole)。
之所以不选择 Pi-Hole ,是因为 Pi-Hole 的 DNS 重写不支持泛域名,而 AdGuard Home 支持。
Nginx Proxy Manager 是一款极其简单易用的 Nginx 反向代理软件。
Github: https://github.com/NginxProxyManager/nginx-proxy-manager
NPM 需要绑定 80 和 443 端口,推荐基于 PVE 的 CT 容器来部署。
部署效果如下:
除了反向代理之外,NPM 还支持泛域名 SSL 证书的申请,简单易操作。
Uptime Kuma 是一款简单易用的服务监控软件,界面非常的简洁,易上手。
Github: https://github.com/louislam/uptime-kuma
部署效果如下:
此外当服务出现异常的时候,Uptime Kuma 还支持微信消息提醒。
下面是升级 Wireguard 镜像的过程中,Uptime Kuma 检测到家庭内网 wireguard 服务不可用,自动发出的微信报警提醒:
Slink 是一款自建图床软件。
Github: https://github.com/andrii-kryvoviaz/slink
部署效果如下:
同样出色的自建图床软件还有 Picsur 。( https://github.com/CaramelFur/Picsur)
但是 Picsur 的 Docker 部署依赖较多,所以最后还是选择了 Slink 。
大家可以自行尝试部署体验。
VS Code in the browser 。程序员对 VS Code 应该不会陌生。
Github: https://github.com/coder/code-server
平常用来刷一刷 LeetCode 挺好的。
部署效果如下:
Portainer 是一款 Docker 管理 UI ,比较简单和易用。
不过个人还是倾向于命令行的方式来管理 Docker 。
Github: https://github.com/portainer/portainer
部署效果如下:
Docker Copilot 可以用来一键升级 Docker 镜像和容器。
Github: https://github.com/onlyLTY/dockerCopilot
部署效果如下:
同样功能的服务还有 watchtower 。( https://github.com/containrrr/watchtower )
由于极空间暂时没有开放 ssh (听说下一个大版本会开放),导致 Docker 相关的一些操作权限有限。
所以还是使用的上面 Docker Copilot 专门针对极空间的 Docker 镜像版本。
GitLab 是一款 Git 自托管一体化软件开发服务,社区版本 GitLab-CE 可以免费部署。
Website: https://about.gitlab.com/install/#debian
个人主要用来托管刷 LeetCode 的代码。
推荐基于 PVE 的 CT 容器来安装,这样编程语言的各种环境都可以自己配置。
部署效果如下:
轻量级的 Git 自托管一体化软件开发服务。基于 Go 语言开发,内存占用明显比 GitLab 少,速度也非常快。
Github: https://github.com/go-gitea/gitea
由于个人习惯问题,代码托管暂时使用的是 GitLab ,后续可能会迁移到 Gitea 。
部署效果如下:
Calibre-Web 是一款知名的电子书籍管理软件,支持主流的电子书格式,同时可以非常方便的在线阅读。
比较好的地方在于支持手动刮削调整书籍封面,支持大文件 PDF 的在线阅读。
Github: https://github.com/janeczku/calibre-web
部署效果如下:
Navidrome 是一款非常简洁好用音乐播放服务器。
Github: https://github.com/navidrome/navidrome
部署效果如下:
虽然极空间 NAS 自带极音乐,体验过一段时间,感觉非常不错,但是手机和电脑上没有单独的原生 APP 。
刚好 Navidrome + 音流可以完美的解决。
电脑和手机客户端推荐使用音流。( https://github.com/gitbobobo/StreamMusic )
Mac 安装效果如下:
Emby 、Jellyfin 、Plex 都是非常流行的个人媒体影音服务器。都有完善的各平台客户端,体验都非常不错。
Emby: https://github.com/MediaBrowser/Emby
Jellyfin: https://github.com/jellyfin/jellyfin
Plex: https://github.com/plexinc/pms-docker
部署效果如下:
自从买了 Apple TV 和极空间之后,由于极空间自带的极影视,在 Apple TV 上有单独的原生客户端,整体的体验还算不错,所以后续就很少再折腾影音服务器了。
笔记类的应用非常多,Flatnotes 是一款体验非常好的在线 markdown 编辑器。
极其轻量化、支持全局搜索。 减少了其它不相关的功能,让人更加专注于写作本身。
Github: https://github.com/dullage/flatnotes
个人所有的 markdown 文章都是由它编写。
部署效果如下:
Memos 是一款轻量级的碎片化笔记服务。可以轻松快速的捕捉和分享你的伟大想法。
Github: https://github.com/usememos/memos
部署效果如下:
Wiki.js 恰如其名,是一款 Wiki 软件。支持 markdown 语法,可以用来当做个人的系统知识库。
Github: https://github.com/requarks/wiki
部署效果如下:
Excalidraw 是一款非常方便的在线白板绘画服务。
Github: https://github.com/excalidraw/excalidraw
部署效果如下:
DrawIo 是一款在线流程图绘画服务。收费服务 Process On 的替代品。( https://www.processon.com/)
Github: https://github.com/jgraph/docker-drawio
个人所有的流程图都是使用 DrawIo 绘画。
部署效果如下:
Mac 和 Windows 上也有对应的客户端软件。( https://github.com/jgraph/drawio-desktop )
Mind-Map 是一款非常不错的在线思维导图绘制服务。
Github: https://github.com/wanglin2/mind-map
部署效果如下:
An organizer for your porn, written in Go.
Github: https://github.com/stashapp/stash
Demo image:
推荐一个非常好用的 Self-Hosted 的网站。( https://selfh.st )
该网站可以不同的应用分类查询比较流行和常用的开源应用,例如搜索 DNS 相关的应用:
该网站还贴心的附带了精美的应用图标下载功能,例如搜索 Adguard:
其他 icon 下载网址:
最后都看到这里了,希望大家能够在评论区分享一下自己觉得比较实用或者有趣的自托管项目。
后续我会继续分享《在外访问家庭内网服务的最佳姿势》。
1
NxxRngjnbgj 52 天前
基本和我之前一样,我还多个机柜,但那是之前,硬件现在已经全部出二手了,软件用现成的,管他开不开源,另已购入若干鱼竿,开启人生下一阶段😊
|
2
tool2dx 52 天前 via Android
@NxxRngjnbgj 还是看圈子,只要还在码农圈内,只会拿新键盘,拿不起鱼竿的。。
|
3
dhuzbb OP @NxxRngjnbgj 有机柜的是真正的大佬。有人享受折腾的乐趣,也有人喜欢悠闲的生活。
|
4
dhuzbb OP |
5
ismethre 52 天前
哎 曾经也挺折腾的,现在路由光猫用回最传统的,特殊需求自己的设备装客户端,dns 用运营商的,网络视频开会员,只有音乐 Navidrome 在车机上偶尔用用……哎
|
8
Jhma 52 天前
就稳定性而言,esxi 要稳定很多毕竟商业方案,至于授权,目前 esxi6/7/8/vcenter 都有序列号泄露,PVE 因为可设置的选项实在太多,反而会引起一些故障,还有安装 esxi 最好安装联想 oem 版的,每隔几个月会有更新驱动和安全补丁的 iso ,这是很多人不知道的。还有 WG 是 VPN 方案,并非内网穿透,FRP/tailscale/zerotier 才是内网穿透方案
|
9
dhuzbb OP @Jhma 你说的我都基本赞同,大部分安装 esxi 的都是随便搜索的一个序列号,不会真正的花钱去购买。esxi 的定位是服务器级别的,如果去官网搜索支持的硬件列表会发现很多都不支持。每次大的版本更新都会去掉一些硬件的支持。安装联想 oem 版确实不知道,没有体验过。PVE 毕竟是开源软件,也是有很多 esxi 比不上的地方。例如 PVE 的轻量级 CT 容器,以及支持硬件的广泛度都是 esxi 无法比的。我以前也是 esxi 的忠实用户,后面才切换到 PVE ,PVE 基于 Debian ,还是比较适合程序员的吧。其实使用 esxi 还是 PVE 都看个人的使用习惯。我觉得不用严格的纠结于 WG 是否是 VPN 还是内网穿透,能够真正的达到想要实现的目的才是最重要的。
|
10
roswellian 52 天前
求稳 ESXi ,求新 PVE 。网络和应用最好分开,All in one 不建议包括网络部分。
|
11
kimwang 52 天前 via Android
你的 docker 服务器是用什么设备?
硬路由刷机运行 docker 方案如何? 想用一下的文章提及的 wiki |
12
LogicDX342 51 天前 via Android
请问你的子域名 dns 是怎么设置的,把 docker 都放到一个 CT 里的话 NPM 要怎么转发流量
|
13
lazyyz 51 天前 via iPhone
生命不息,折腾不止!
|
14
dhuzbb OP |
15
dhuzbb OP @kimwang 我的主路由和旁路由都是软路由直接刷的 iStoreOS 系统,自带 Docker 服务。我还有极空间 Z4 Pro 和黑群晖 NAS ,也是自带 Docker 服务的。还有一台小主机,专门安装的 PVE 系统,在 CT 容器中部署了 Docker 。我倾向于大部分 Docker 部署到 极空间 Z4 Pro 中。少数 Docker 应用部署到旁路由和 PVE 的 Docker 中。
|
16
xbin 51 天前
细说一下 CT 容器部署,我都是虚拟机里 docker 部署
|
17
dhuzbb OP @xbin 和虚拟机里的 docker 部署没有任何区别。将 CT 容器看成轻量级的虚拟机就行。之所以推荐 CT 部署,是因为创建 CT 容器非常的简单和快速,更加轻量级,资源利用率更高,性能损失更少。
|
18
fuwu1245 51 天前
发现不少可以折腾的东西 谢谢 OP (
|
20
dhuzbb OP @kimwang 我自己的做法是建一个总的 docker 文件夹,所有的 docker 应用都在这个 docker 文件夹下建立一个单独应用名称的文件夹用于文件映射,这样只需要备份整个 docker 文件夹即可。
|
21
veapon 50 天前
请问 OP 是怎么用 443 端口访问到 self-host 服务的?家宽运营商应该屏蔽了 443 和 80 的,是用了 frp 吗?
|
22
dhuzbb OP @veapon 详见后续文章: https://www.v2ex.com/t/1074861
|
24
q958951326 47 天前
本贴很有启发,谢谢
|