本周精选 · 第2期 — 7款让自部署体验再上台阶的开源项目
又到了周六,按惯例该交一份本周精选清单。上一…
又到了周六,按惯例该交一份本周精选清单。上一期发完后台收到不少私信,说”这汇总太实用了,比我自己刷 GitHub 强”。那这一期咱们继续,挑 7 款 2026 年值得关注的开源自部署项目,覆盖 PaaS、日志、LLM 测试、位置管理、安全防护、书签归档、订阅追踪——全都是能直接 docker run 就上手的。
先上总览(按推荐优先级排序):
- Coolify — 59k+ ⭐,自托管 PaaS,替代 Heroku / Vercel
- SafeLine — 17k+ ⭐,自托管 WAF(Web 应用防火墙)
- Promptfoo — LLM 自动化评测与红队测试框架
- Linkwarden — 协同书签管理器,自动存档网页
- Dozzle — 轻量 Docker 日志实时查看器
- Dawarich — Google Timeline(位置历史)自托管替代
- Wallos — 个人订阅管理追踪
1. Coolify — 把 Heroku 搬回你自己服务器
如果你还在为 Vercel 的带宽账单肉疼,或者受够了 Heroku 的”维持模式”(2026 年 2 月起已经不怎么出新功能了),那 Coolify 是今年最值得关注的自托管 PaaS。截至七月底,GitHub 59k+ ⭐,社区 32 万+ 用户,280+ 一键部署模板。
v4.0 版本(2026 年 5 月发布)带来了几个硬核更新:原生多服务器编排、Ollama 一等支持(可以一键部署本地大模型推理服务)、GitLab 集成、PR 预览部署。本质上它就是把你手头的 VPS 变成一个私有 Heroku——连 Git 仓库,push 即部署,SSL 自动配好,PostgreSQL/MySQL/Redis/MongoDB 一键创建。
这是我部署一个 Node.js 项目的真实命令(Coolify 面板里填好仓库地址后):
# Coolify 面板操作:添加服务器 → 连接 Git 仓库 → 选择部署类型
# 底层实际执行的就是 Docker Compose,配置文件可以在面板里直接改
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@postgres:5432/mydb
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user"]
interval: 5s
timeout: 5s
retries: 5
适合谁:有多台 VPS 或独服、需要频繁部署前后端应用的开发者。最低配:1 核 2G 内存的 VPS 就能跑起来,推荐用 Hetzner CCX13(6 欧/月)起步。
🔗 github.com/coollabsio/coolify
2. SafeLine — 给你的自建站点套一层盔甲
自建服务多了以后,最头疼的不是功能实现,而是安全防护。Nginx 自带的基础防护加上 fail2ban 能挡住大部分脚本小子,但面对 SQL 注入、XSS、CC 攻击这些实打实的 Web 威胁,还是需要专业 WAF。
SafeLine 是长亭科技(Chaitin)开源的自托管 WAF,目前已保护全球超过 100 万个站点,GitHub 17k+ ⭐。它的核心亮点不是传统的规则匹配,而是基于语义分析的流量检测——简单说,它能理解 HTTP 请求的”意图”,而不是死板地匹配关键词。对于零日攻击和变种绕过,效果比 ModSecurity 好得多。
部署极其简单:
# 极速安装
sudo wget https://waf.chaitin.com/release/latest/compose.yaml
# 编辑 .env 配置管理员密码
sudo docker compose up -d
# 打开 https://你的IP:9443 配置防护站点
# 把你需要保护的域名源站地址填进去,开启防护即可
配置完成后,SafeLine 会作为反向代理挡在前面,所有流量先经过它过滤再转发到你的后端服务。防护面板能看到实时阻断记录、攻击来源 IP 排行、攻击类型分布。我跑了三个月,每天平均拦截 200+ 次扫描和攻击尝试。
3. Promptfoo — 给 LLM 写单元测试,这回是真的
如果你在对接大模型 API 或者搭 RAG 应用,一定遇到过这个问题:同一个 prompt,换了个模型版本,输出质量明显下降。以前只能手工点开对话一条条看,Promptfoo 的存在就是为了终结这种”人工回归测试”的原始状态。
这是一个 CLI + 库,让你像写单元测试一样定义评测用例,然后批量跑多个模型/多个 prompt 变体,自动比对输出质量。支持 GPT、Claude、Gemini、Llama、Ollama 本地模型……几乎市面上你能叫得出名字的全部支持。而且所有评测数据都在本地运行,不会被第三方看到。
一个最简单的示例:
# 安装
npm install -g promptfoo
# 初始化示例项目
promptfoo init --example getting-started
cd getting-started
# 配置文件 promptfooconfig.yaml 长这样:
prompts:
- "翻译成中文:{{text}}"
- "请把下面内容用中文表达:{{text}}"
providers:
- openai:gpt-4o
- ollama:deepseek-v4-flash
tests:
- vars:
text: "Hello, how are you?"
assert:
- type: contains-any
value: ["你好", "您好"]
- vars:
text: "The quick brown fox jumps over the lazy dog"
assert:
- type: contains
value: "狐狸"
# 跑评测
promptfoo eval
# 启动可视化面板查看结果
promptfoo view
除了评测,Promptfoo 还有红队测试模式——自动生成攻击 prompt 来测试你的 LLM 应用是否存在越狱、提示注入、敏感信息泄露等安全问题,并生成报告。我去年做本地 AI 知识库项目的时候,靠它抓到了 3 个 RAG 检索流程里的严重 BUG。
🔗 github.com/promptfoo/promptfoo
4. Linkwarden — 书签归档,对抗链接腐烂
你有没有遇到过这种情况:以前收藏的一篇好文章,几个月后点开——404。这就是互联网的”链接腐烂”(Link Rot),而 Linkwarden 就是为了解决这个问题而生的。
它不只是一个书签管理器,更重要的是每当你收藏一个网页,Linkwarden 会自动保存一份截图 + PDF 存档到你的服务器上。即使原站挂了,你自己服务器上的那份存档随时可读。它还支持直接在网页上做标注批注、多人协作共享收藏夹、公开分享你的精选合集。浏览器插件 Chrome/Firefox 都支持。
Docker 一键部署:
# docker-compose.yml
services:
linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
ports:
- "3000:3000"
volumes:
- ./data:/data/data
environment:
- DATABASE_URL=postgresql://user:pass@postgres:5432/linkwarden
- NEXTAUTH_SECRET=your-secret-key
depends_on:
- postgres
postgres:
image: postgres:16-alpine
volumes:
- ./pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=linkwarden
🔗 github.com/linkwarden/linkwarden
5. Dozzle — 告别 docker logs -f 来回切终端
排查 Docker 容器问题时,最原始的办法就是开五六个终端窗口,每个窗口跑一条 docker logs -f 盯着看。Dozzle 就是来终结这种混乱的——一个不到 7MB 的容器,启动后浏览器里就能同时看所有容器的实时日志。
功能不多废话,就一句话:实时日志、模糊搜索、正则过滤、SQL 查询、多主机支持(Agent 模式)、用户鉴权。没有持久化存储,没有学习曲线,纯浏览器版的”tail -f”。
# 一条命令启动
docker run --name dozzle -d \
--volume=/var/run/docker.sock:/var/run/docker.sock \
-v dozzle_data:/data \
-p 8080:8080 \
amir20/dozzle:latest
# 多主机模式(每台机器上跑一个 agent)
docker run -d -p 7007:7007 \
-v /var/run/docker.sock:/var/run/docker.sock \
amir20/dozzle:latest agent
# 浏览器打开 http://你的IP:8080 即可查看所有容器日志
适用场景:日常开发调试、线上故障排查、多容器服务实时观察。如果你需要历史日志归档,还是得上 ELK/Loki,但 Dozzle 作为”看一眼现在怎么样”的利器,没有对手。社区一直在积极维护,作为 Docker-OSS 官方赞助项目,质量有保障。
6. Dawarich — 你的位置历史,你自己存着
Google Timeline(原 Google 位置记录)在手机上体验其实不错,但有两个痛点:一是 2025 年底起网页版下线、数据只存在手机上且三个月后清空;二是不管你多信任 Google,把每天的行程轨迹交给第三方心里终究不踏实。
Dawarich 就是为此而生的自托管替代品。它把你的位置数据存在你自己的服务器上,提供交互式地图查看、行程分析、照片集成(支持 Immich / PhotoPrism),甚至能告诉你”你今年在巴黎一共待了 30 天”。支持导入 Google Maps Timeline 导出数据、OwnTracks、Strava、GPX、GeoJSON、照片 EXIF。
搭配 OwnTracks(手机端位置上报 App),你可以完全脱离 Google 的位置体系:
# OwnTracks 端配置地址指向你的 Dawarich 实例:
# Host: https://你的dawarich实例地址
# Identification → Username: 你的用户名, Device: 设备名
# Security → TLS: 开启
# 在 Dawarich 面板上登录后就能看到实时位置更新和历史轨迹
# 支持按日期范围筛选、按地点聚合、导出 GPX/GeoJSON
7. Wallos — 盯住你每一笔自动扣款
说个真实场景:我上个月翻信用卡账单,发现每个月莫名其妙被扣了 ¥88——追查了半天是一年前注册的某个会员,试用了就忘取消。这种”订阅吸血鬼”几乎人人都有,区别只是数量多少。Wallos 就是来帮你理清楚的。
开源自托管,纯 PHP + MySQL,可以跑在任何有 Web 环境的服务器上(甚至群晖的 Web Station 都行)。它能列出你所有的订阅服务,标清每月/每年费用、下次扣款时间、分类统计、货币换算(支持多币种 + Fixer API 汇率转换)。而且会自动搜索服务 Logo,界面看起来很舒服。
# Docker 部署
docker run -d --name wallos \
-v /path/to/config/wallos/db:/var/www/html/db \
-v /path/to/config/wallos/logos:/var/www/html/images/uploads/logos \
-e TZ=Asia/Shanghai \
-p 8282:80 \
--restart unless-stopped \
bellamy/wallos:latest
进去以后就是纯手动添加你的每一项订阅,虽然初始录入有点耗时,但录入完成后你会对自己”每个月到底在为什么付钱”有非常清晰的认知——我整理完之后直接取消了 4 个不必要的订阅,每年省下两千多。就冲这一点,花 20 分钟部署 + 录入就值回票价了。
总结
这一期的 7 个项目覆盖了从基础设施到日常管理的各个维度。如果你想动手试,我给的建议是:先装 Dozzle(3 分钟搞定,成本为 0),然后根据当前最痛的痛点选一个上车——部署频繁就上 Coolify,站点裸奔就上 SafeLine,玩 LLM 就上 Promptfoo。
下周同一时间,第 3 期继续。如果你有好项目推荐,评论区见。
