家庭服务器的备份工具选择

家庭服务器的备份工具选择

[!summary]+
在搭建了 Immich 服务之后,考虑到数据本身的重要性,又对硬盘本身的寿命和各种数据安全的场景有所顾虑,对加密备份的需求就浮出水面了,希望能有一个备份的预案来对抗各种数据风险,因此有本篇文章,对各种备份工具做简单调研和选择。

image.png

👾Intro 调研对象介绍

👍出场选手介绍,节选来自以下网站的备份方案:awesome-sysadmin-backup

为了备份大量包含隐私的图像信息,这里最基础的需求有以下几点:加密支持云端存储服务/Webdav,增量备份免费

额外如果能够支持以下的需求则额外加分:压缩去重平台一致性用户界面友好(备份状态检查等)

🏓Compare 特性对比

Name PSWD Zip Webdav Add Type ui Consis free rate
kopia y y y y Full y y y 🔥🔥🔥🔥🔥
urbackup y n n y C/S y y y 🔥
restic y n r/o y CLI n y y 🔥
duplicity y n y y CLI n n y 🔥🔥
duplicati y n y y Full y n y 🔥🔥🔥🔥
duplicacy y y y y Full y- y y- 🔥🔥🔥🔥🔥

家庭服务器整体方案

家庭服务器整体方案

[!summary]+
本文主要介绍笔者的家庭服务器设计方案 V1。该方案中中涵盖影视、图像、图书&文献、博客、智能家居管理、密码管理服务,以及公网上内容分发的初步设计和选择的考量。

整体架构

整个服务中心在设计的时候主要考虑以下的几个方面:

  • 💻操作设备&系统(OS)和内容存储方案:如何经济实惠的选择合适的设备和系统
  • 🌦️服务需求:需要搭建哪些服务,应该选择哪个服务进行自托管
  • 🌍部署方案:如何保证在局域网+公网都能顺利且安全的访问
  • 📱访问策略:各个平台上的访问方式的选择

此外,并非所有服务都需要在公网上进行部署,这里的部分服务可以仅用于局域网,由于仅开放了 Nginx 端口,因此从公网中访问不到未分发的内容,因此,部分存储与敏感信息相关的服务可以仅保留在局域网中进行访问。

[!note]+
在这种情况下如果希望能够使用一致的域名访问方式,是否可以考虑使用 Nginx 鉴权限制访问 ip 为内网 ip,其他公网访问直接丢弃?

初版家庭服务中心的架构图如下,(这里并非列出所有的服务组件),该架构图中所有的应用都是为了方便日常生活中的各项活动,下面会对架构图自底向上的做一些简单的说明。

image.png


破解本地自托管Emby服务

破解本地自托管Emby服务

Intro 问题描述

以 emby 为例,学习如何对这种自托管的服务,请求验证网站的软件进行破解,破解的整体思路分为以下的两类:

一种是改客户端,一种是改服务端。两种方式的最终原理一样,都是搭建仿冒认证服务器,客户端访问伪服务器拿到授权信息;【3】

因此无论是那种方法我们都需要搭建伪验证服务器:所以以下的操作是必须的:

  1. 抓取定位到验证服务器的地址,并获取验证服务器返回的验证信息格式;
  2. 使用 Nginx 搭建虚拟的验证服务器,使其返回激活/验证信息;

如果是修改客户端,则在搭建完验证站后需要:

  • 修改 Host 文件,将请求验证服务器的请求劫持到本地搭建的服务上;
  • 需要伪服务器和客户端都要安装自签名证书

如果是修改服务端,则后续需要:

  • 修改服务端源文件,将默认的认证服务器 mb3admin.com 地址直接改成伪服务器
  • 这样就不需要安装自签名证书

如果是使用 Docker 进行部署的 emby 可以使用别人修改好的服务端的镜像进行部署安装(like 开心版)

本文主要介绍验证服务器的搭建、修改客户端的方法,以及一些其他的注意事项;


使用Ipv6部署服务03 DDNS-go 动态域名解析

使用Ipv6部署服务03 DDNS-go 动态域名解析

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第三篇,以 DDNS-go 开源项目为例,部署动态域名解析服务,自动更新主机记录值。

jeessy2/ddns-go: 简单好用的DDNS。自动更新域名解析到公网IP(支持阿里云、腾讯云、Dnspod、Cloudflare、Callback、华为云、百度云、Porkbun、GoDaddy、Google Domain) (github.com)

该工具使用起来非常简单,推荐需要动态域名解析的可以尝试使用该工具,简单介绍工具的使用如下:

配置 DDNS-GO

前往 release 页面下载对应系统的版本:

image.png

解压后双击打开 ddns-go.exe 会自动弹出配置的界面:locahost:9876,选择需要解析域名的 DNS 服务商,选择创建密钥并填入对应的密钥。

image.png

选择需要启用的 ipv4或者 ipv6解析服务,填写需要解析的域名(每个域名单独另起一行)

image.png

其他的保持默认即可,在这里完成了基础配置以后,记得点击保存,之后便可以安装对应的服务,使其后台自动更新,windows 使用管理员打开 powershell 或者 cmd,到对应目录下执行命令如下

1
.\ddns.go.exe -s install -f 10 -cacheTimes 360

通过合理的配置 -f-cacheTimes 可以实现 IP 变化即时触发更新且不会被 DDNS 服务商限流, 例如 -f 10 -cacheTimes 360 效果为每 10 秒检查一次本地 IP 变化, 每小时去公网对比一下 IP 变化

详细的配置可参考置顶的官网连接。

Fi


使用Ipv6部署服务02 Nginx和Https

使用Ipv6部署服务02 Nginx和Https

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第二篇,以腾讯云和 Nginx 为例,介绍如何将服务部署到 https://域名

需要以下的事前准备:

  • 腾讯云/阿里云/Cloudflare 等随便一个地方购买一个自己的域名
  • 公网 ipv4/ipv6 地址
  • 本地部署一个服务以供测试

Nginx(Docker) 安装

这里选择 Docker 来分离安装 Nginx 服务,Docker 部署的优势这里就不再赘述,这里建议使用 portainer 进行容器管理和运行状态查看。

首先创建存放 Nginx 配置文件和证书文件的目录,后续挂载给 Nginx Contrainer 使用:

1
2
mkdir -p /home/username/docker-file/nginx/conf.d
mkdir -p /home/username/docker-file/nginx/cert

配置文件存放到 conf.d 中,各种 SSL 证书则存放到 cert 文件夹中;

接着部署 Nginx,这次先不挂载目录,将 Nginx 中一些默认配置拷贝出来,以供后续使用和修改:

1
2
3
# run会自己执行镜像拉取,pull可以不执行
# docker pull nginx
sudo docker run --name nginx -p 80:80 -d nginx

将配置文件复制出来:

1
2
3
sudo docker cp nginx:/etc/nginx/conf.d/default.conf /home/username/docker-file/nginx/conf.d/default.conf
sudo docker cp nginx:/etc/nginx/nginx.conf /home/username/docker-file/nginx/conf.d/nginx.conf
sudo docker cp nginx:/etc/nginx/mime.types /home/username/docker-file/nginx/conf.d/mime.types

基于原始的配置文件挂载后查看 nginx 是否正常运行:

1
2
sudo docker rm -f nginx
sudo docker run --name nginx -p 80:80 -p 443:443 -v /home/username/docker-file/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf -v /home/username/docker-file/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /home/username/docker-file/nginx/conf.d/mime.types:/etc/nginx/mime.types -v /home/username/docker-file/nginx/cert:/etc/nginx/cert -d nginx

参考资料:使用docker部署nginx并配置https - 逊老头 - 博客园 (cnblogs.com)


使用Ipv6部署服务01 IPV6开启和设置

使用Ipv6部署服务01 IPV6开启和设置

本系列主要介绍通过公网的 ipv6 访问局域网设备并部署自己的服务供公网访问;本篇是其中的第一篇,以电信宽带为例,说明如何开启 ipv6 服务和外网访问放行。

开启 IPV6 服务主要需要修改两个地方的配置:光猫开启桥接模式和 IPV6 路由器修改为 pppoe 拨号模式以及防火墙设置;这里以本人的电信光猫和小米路由器为例:

背景介绍

需要在外网访问部署于家庭内网的一些服务,考虑了以下的几个方案,决定使用 ipv6作为核心

类型 方案 简要说明
内网穿透 Zerotier 免费,需要注册账户,支持移动端,国内速度极慢,且不稳定
内网穿透 Tailscale(备用) 免费,需要注册账号,支持移动端,国内速度一版,稳定性相 Zetotier 较好,但仍不够稳定
内网穿透 frp 申请一个有公网的服务器,使用 frp 自己作为内网穿透的中转,贵,较为麻烦
公网 IP Ipv4 难以申请,其他都好
公网 IP Ipv6(主力) 获取简单,需要配置一下光猫使用,一劳永逸,快,稳定,多,有暴露公网的危险,需要设置防火墙
其他 Cloudflare Zerotrust 简单,免费,可以绑定域名,但是网站根本登不进去配置页面,速度不快

光猫设置

查看光猫背面的管理员 url,进入光猫管理界面,登录超级管理员账户(非普通账户,会跳转到更详细的管理页面,大部分同地区的超级管理员账户应该是一致的,不对可以询问下宽带师傅)

  • 管理地址通常为:192.168.1.1
  • 超级管理员账号:useradmin
  • 超级管理员密码:nE7jA%5

开始之前准备 PPPoe 拨号的帐号和密码,不知道的话等询问好了再开始操作。

在天翼网关->网络->网络设置中进行如下的操作:(这里可以尝试改成 pppoe 并通过开发者模式查看密码,不知道密码不要轻易进行后续操作)

  1. 连接名称选择 +++INTERENT_R_VID_41
  2. 连接模式从路由改为桥接
  3. IP 模式确认为 IPv4&IPv6
  4. 点击保存/应用

image.png

在天翼网关->状态->网络侧信息中检查 IPv4 和 IPv6 是否都开启成功:

image.png

参考资料:个人宽带如何开启IPv6网络访问


HomeAssistant01 入门基础篇

HomeAssistant01 入门基础篇

接下来本文安装的是 Container 版本的 HA,并非 Supervised 的版本,所以其中是不包含 Add-on 的,如果需要特定的 Add-on 的版本请注意。

基于本篇流程安装 HA 的前置条件是系统上已经安装好了可用的 Docker,该文会介绍 HA 和 HACS 的安装以及一些基础的配置。

HA & HACS 安装

本文安装于 Raspberry pi 4B,与其他操作环境可能会存在一些差异,要注意甄别。

HA

安装过程主要参考 Raspberry Pi - Home Assistant 中 Install Home Assistant Container 的章节,如果为其他的 OS 也可以在官网找到类似的指引,不过 docker 版本的差异应该不会特别的大,个人的 Docker Compose File 也已经上传到 GITHUB 可自行取用。

修改完 -v 的挂载目录以后(将数据保存在本地的目录)和 -e 的时区后,即可执行拉取和安装 docker,这里-v 挂载的本地目录要记得,后面有用。

1
docker compose up -d 

安装完后基于 Host 模式的 HA 会运行在 http://localhost:8123 中,localhost 也可以用 ip 替代。安装完后随着指引完成一些基础的设置,设置好默认的账号密码即可重启 docker 进入 HA 的界面;

到这里已经可以做一些基础的使用了,但是为了支持更多智能家具产品,往往需要安装第三方用户商店 HACS ,从中去下载对于其他智能家具产品的支持。

HACS

Home Assistant Community Store 第三方用户商店,便于下载各种各样的集成实现对于各个不同智能家具品牌和产品的支持。

各种不同版本的安装方式可以参考官方网页,以下只介绍基于 Container 的安装方式,官方提供了安装脚本,因此现在下载已经相对简单,具体如下:

  • 进入挂载的本地目录,执行下面命令,即包含了下载和执行。
1
wget -O - https://get.hacs.xyz | bash -

如果下不下来也可以直接打开网页复制进.Sh 脚本中;也可以去我的仓库中拉下来

安装完重启 HA,在集成页面添加集成,搜索 HACS,搜索到直接进行安装,跟随配置进行安装,并打开 GITHUB 进行登录和授权即可。


内网穿透(NAT穿透)

内网穿透(NAT穿透)

本文简要介绍对内网穿透技术、对内网穿透技术的需求以及介绍一些用于”个人”进行内网穿透的工具和使用。

1. 什么是内网穿透(NAT traversal)

在计算机科学中,NAT穿越(NAT traversal)涉及TCP/IP中的一个常见问题,即在处于使用了NAT设备的私有TCP/IP网络中的主机之间创建连接的问题。

其中 NAT 即网络地址转换(Network Address Translation)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。

NAT 是作为一种解决IPv4地址短缺以避免保留 IP 地址困难的方案而流行起来的。NAT 成了家庭和小型办公室网络连接上的路由器的一个标准特征。

其中最为常见的 NAT 设备就是家家户户都有的路由器,将所有的设备在局域网中统一管理,并基于唯一的公网 ip 对互联网(私有网络)进行访问。

而 NAT 会带来以下的问题,因此会需要内网穿透的技术:

  • 外网主动发起的服务无法准确的定位到内网的指定机器,会被 NAT 设备丢弃,因此链接会变成单项的,无法双向交互。

因此无法在外网访问内网机器提供给局域网的服务,因此我们的机器,我们部署于 NAS、docker 的服务就只能在局域网中访问,在一定程度上就造成不便。


NAS

NAS

“NAS本质上就是一个可以开启文件共享的具有大存储的系统:无论是Windows,Linux或其他一切可基于诸如SMB、Internet提供文件共享或访问功能的系统都可以作为NAS的系统使用。”

不出意外,针对该应用场景,也有针对性的一些简化OS,故而在构建NAS之前,首先分析对NAS存储的需求,进而选择一个合适的系统去构建。

个人NAS需求分析

就像NAS:Network Attached Storage所说,NAS最基本的需求是“存储”与“共享”(随时存取),实际也是一个私有网盘(支持更多功能?),本文便基于该脉络分析需求。

存储/功能类型 使用场景说明 需求程度
图片、文件归档 存储,预览(基于AI识别分类,时间线,照片墙) -
大文件 内网快速传输 -
电影 流媒体服务器:多设备在线观看、封面集归纳和整理(PLEX) -
工作文档 历史版本,协作编辑 Option
下载功能 看到想看的电影的时候可以直接让他开始下载 -
支持docker扩充功能 可以使用Docker下载并部署一些其他的乱七八糟的功能 Core

在支持基本功能的基础之上,通过配置的选择来,尽量减少功耗,从而减少长时间启动带来的电费消耗,如果可以的话使用软件或者硬件来记录NAS每个月的耗电量。

  • 此外,还需要考虑数据的稳定性,好像叫做《阵列》?(后续进行补充了解

  • 断电自动重启

  • 文件共享服务:SMB、FTP‘
  • 加密和数据安全性

不需要显示器,只需要网络和SSH进行远程登陆和控制之类的。