Web 服务器部署模式在爱好级规模失效

The web server deployment model breaks at hobby scale

传统的 Web 服务器部署模式在应对爱好级项目时显得捉襟见肘。对于个人开发者或小型团队而言,维护一套完整的服务器基础设施不仅成本高昂,而且技术门槛过高。文章深入探讨了为何现有的部署模型难以适应小规模需求,并指出在资源有限的情况下,过度复杂的架构反而成为负担。作者通过实际案例分析了这一现象,强调了简化部署流程、降低运维成本的重要性,为 hobby 开发者提供了新的思考方向。

当部署模型在爱好级规模失效时,我们需要的不是更复杂的工具,而是更简单的解决方案。
  1. SlavikCA

    我家有 5Gbps 的光纤,局域网主要是 10Gbps。

    我托管了几个业余爱好者用的公开网站。其中一个存放赞美诗、歌曲等的库——主要是 PDF、MP3 和 MIDI 文件。

    架构是:OpnSense 路由器 -> Traefik -> Docker 容器。

    该 Docker 容器运行在 NAS 上,而 NAS 通过 1Gbps 端口连接。

    突然,上周开始,我收到了超过 1000 RPS 的流量。是扫描器、解析器、爬虫还是 DDoS?我无法判断,因为 User-Agent 显示的是默认的 Mac OS。

    它占用了约 1Gbps 的带宽,来自许多不同的 IP。

    如果我把这个服务托管在 AWS 或 Azure 上,光带宽费用每小时就会超过 40 美元,除非我使用他们的 CDN。

    我的路由器 CPU 使用率飙升,但还能应付。

    NAS 的 CPU 使用率也飙升,但也能应付。

    Traefik 给服务器带来了沉重负担:它既要接收又要发送 1Gbps 的数据,还要为所有请求写入访问日志。我的 Alloy 和 Loki 日志系统也负载过重。

    NAS 本身已经有缓存。

    我尝试在 Traefik 上启用缓存,结果 2 分钟内就 OOM(内存溢出)了:

    https://github.com/darkweak/souin/issues/844

    搜索后发现,具备正确内存管理的 Traefik 缓存功能仅在企业版中提供。

    最终解决方案是将该站点放在 Cloudflare 代理后面,并启用其“魔法”功能来抵御机器人。

  2. smashed

    我能理解 TLS 终止这个问题。想要提供一个自托管的 Web 应用版本,并配置一套合理的 TLS 环境,确实很难。

    最好的办法几乎就是干脆别做。直接提供一个仅通过 http/1.1 服务的 Docker 镜像,并在文档中说明需要反向代理才能暴露该服务。

    实现方式实在太多,每个系统管理员或爱好者都有自己的偏好。

    至于作者深入探讨的匿名和认证缓存问题,我认为对于自托管场景来说,这再次证明是多余的。直接嵌入一个高性能的 Web 服务器(例如 nginx),并预配置好静态文件服务。使用正确的头部信息和可预测/简单的路径。自托管版本的流量通常很低,只要能跑通就行。

    可以提供高级设置以获得更多控制权,但默认配置应保持简单,开箱即用,且依赖最小化。

  3. lee_ars

    > 你记录了哪些需要反向代理的内容,并反复给出 caddy 和 nginx 的示例,同时不断咒骂 nginx 没有那个有用的 if 指令。

    看来有人没读过文档,也不理解 nginx 的 "if" 是如何工作的,因为它其实非常有用。

  4. turtlebits

    在业余规模下,你不必纠结于细节。直接发布一个 zip 包或容器镜像,附带文档,让用户自己去搞定剩下的部分。自托管本来就需要一定的专业知识。

    我个人不喜欢那些把整个“堆栈”(复杂的技术栈)都打包发货的应用,尤其是我自己已经有一套包含 TLS、访问控制等功能的既定方案时。

  5. bradly

    我不太确定这篇帖子的意思。这是在讨论家庭实验室环境中自托管 Caddy,还是仅仅在 VPS 上托管静态网站?

同日更多故事

2026-08-07