// ARCHIVE Words and Reflections · LONELY HORSE ## 一、需求背景 # 从云端到边缘:我的个人博客与监控体系迁移实录 ## 一、需求背景 由于云服务器的性能有限,挂载不了几个服务就会导致内存爆满,所以我觉得需要使用一些边缘策略,将原本挂载在服务器上的项目,迁移到本地设备上,实现多个项目的同时运行。 ## 二、网络攻坚 ### 1. 私人网域穿透 一般情况下,想要实现穿透,会使用 frp。但是我了解过一些 Tailscale 的知识,所以我觉得可以建立一个私人网络域,来实现各个设备之间的内部通讯问题,各个设备使用内部的 IP 地址,既安全又稳定。 ### 2. 公网反代访问 那如何实现公网访问内部的设备挂载的服务呢?我使用的是主流的反代流量,通过修改 `nginx.conf`,来实现遍历 `conf.d` 文件夹内的各种服务的配置,再在这些配置中使用 `upstream` 完成流量的去向问题,并做好子域名的指向和 SSL 的上锁。 ### 3. Docker 容器网络安全隔离 原本在服务器中,为了避免端口的暴露问题导致的安全性漏洞,所以我选择了关闭外界的 Nginx,在容器内封装了一个 Nginx 服务,并且将所有的服务的网络接入 Nginx 的大网络下,这样极大提高了安全性。 但是现在由于我决定使用 Nginx 反代,本身就隐藏了我本地设备的端口,甚至是设备本身,所以完全不用再使用 Docker 来封装 Nginx,直接使用 `network_mode: host` 来直接对接设备网络和端口,这样做既安全,也不会出现容器内的网络问题隐藏情况,排查更简单。 ## 三、Docker 的架构版本问题 在架构问题上,必须重点注意。由于我现在使用的是 ARM 架构设备,所以 AMD 架构的镜像不适用。我们需要在设备内直接构建新的镜像,这样才不会出现架构不一产生的问题。 所以在 Git Actions 的 Workflows 必须要原地构建镜像,并且最好拉取基础镜像时,我们可以使用“借”同一网络下的能够实现翻墙的设备的流量,来加速拉取 Dockerhub 的基础镜像。 ## 四、Tailscale 问题 由于 Tailscale 的权限受到 nftables 限制,只允许 80 端口的流量互相流通,所以导致了我们在同一个网域中的设备 ping 当前设备的默认 80 端口,并不会报错,流量正常接受和发送,但是其他端口会返还不存在问题。 这也就是 Tailscale 的端口流量被防火墙所挡,我们需要修改配置,不仅是 80 端口,所有的端口流量,只要是从 Tailscale 内部来的,都必须要放行,所以使用 `"tailscale0" accept`,不仅是输出,还有接收都需要开放。 ← RETURN HOME