自托管的AI软件工厂
tl;dr:它成功了!从一个提示,创建了一个代码库,编写了应用程序和测试,CI通过了,配置了Postgres,并在没有我其他消息的情况下通过HTTPS部署了完成的应用。如果你只想看看结果,可以在底部找到演示视频。大型语言模型又有趣了!也许它们一直是,我只是陷入了失望的低谷。最近,每当我需要一个小工具时,我就自己构建了。前几天我在健身房,想要一个重量追踪器。我心中的那个应用程序是尽可能简单的CRUD,但所有应用商店的版本都想要每月£12,所以我就用Claude一次性搞定了。非常有趣,但给大型语言模型自动模式下的根访问我的机器仍让我觉得不太对劲。所以,挑战是:我如何创造一个完全远程的自主开发环境,在这里我们结构性地限制大型语言模型,而不仅仅是信任它?我想给它一个指令,让它自主进行整个软件开发生命周期:研究正确的技术栈和包。规划和编写代码和测试。提交到Git,构建并运行CI管道。将工作部署到一个有数据库、监控和SSL域名的'生产'服务器上。所有这些都在我的家庭服务器上,不需要支付额外的云基础设施账单。这个实验唯一持续的费用是一项£20的Codex订阅。服务器们在这里,它们的光辉闪耀。底下的那个是一台2014年的双核i3,我已经运行了五年作为家庭实验室。它正在勇敢地托管这个博客和大约45个其他Docker容器,从Pi-hole到完整的Prometheus / Loki / Grafana堆栈。它还有从我的路由器转发的443端口。如果一台大型语言模型破坏了它,我会感到恼火,所以今天我们不使用它。顶部的是一台2021年10代i7,配有32GB内存,刚从eBay上新购入,没什么东西。完美。技术栈核心开发栈是通过Coolify自托管的。推理和集成如Tailscale、Telegram、DNS和ACME仍然离开了这台机器。你也可以托管推理,但我没有硬件,我更希望OpenAI能补贴我的实验。组件说明Pi-hole 本地DNS规则,附带减少烦人广告的附加好处。Tailscale 使我的家庭网络随时跟随我。Coolify 基于Docker的自托管、Heroku风格的PaaS。Forgejo(带有运行器) 自托管的Git和CI。Hermes(带有WebUI) 使用Codex进行推理的OpenClaw风格的虚拟助手。Telegram 随时随地与代理聊天。Firecrawl(自托管) 代理和网页之间的抓取/翻译层。Porkbun(注册商)和Let’s Encrypt 一个域名和即时SSL证书。其他 Postgres、Redis,任何你的应用所需的。这只是底层的Docker,对吗?来源这不是一个完整的操作指南。我可能可以编写一个Ansible一键脚本来设置一切;如果你需要一个,请在下面的GitHub仓库上留个问题。不过,如果你看到这里,你可能也能搞定。源码说明Coolify设置博客 我在Hetzner上的Coolify设置指南。Coolify Dockerfiles 实际上在Coolify上可用的生产Dockerfile。只需添加环境变量。Forgejo Hermes技能 Forgejo CLI的Hermes技能;只需提供一个密钥。网络第一个保护措施显而易见:它在自己的金属上。Hermes可以rm -rf /,而在最坏的情况下,这将让我花几个小时重新构建它。下一个坚固的保护层是网络。我的旧服务器有从路由器转发的443端口;这台没有。没有外部流入,减少了巨大的攻击面以及所有来自人们在我设置的每个DNS A记录上猜测性探测/wp-admin的互联网背景辐射。但是,如果没有流入,我怎么能做到:在我的手机上访问我们所有的新应用?在一个虚荣URL生成SSL证书,以便我可以访问https://cool-new-app.internal.jakeshomelab.me?我已将Tailscale设置为我的旧服务器作为出口节点。当我不在家时,选择它将我的流量路由通过该服务器和Pi-hole,我正使用它作为自定义DNS。Pi-hole让你添加dnsmasq规则,如下所示:address=/internal.jakeshomelab.me/192.168.1.201 现在请求*.internal.jakeshomelab.me的任何内容都解决到我的新服务器,在那里Coolify的反向代理拾取它并提供我光鲜新服务。SSL证书使用Caddy或Traefik和Docker标签,你可以从https://my-service.internal.jakeshomelab.me提供容器X上的3000端口。将A记录指向服务器,它将联系Let’s Encrypt,完成ACME挑战并获取SSL证书。我三年前学到这一点,现在仍然像魔法一样。问题是A记录。我不想将my-service.internal.jakeshomelab.me公然与我的IP关联,不管人们是否可以访问它。我要一个幽灵服务的SSL证书。为了解决这个问题,我转向了DNS-01。老实说,这对我来说是新的,但它是这样工作的:购买一个域名(在这种情况下来自Porkbun)。生成Porkbun API密钥并将其添加到Coolify的环境中。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡