xyproto/algernon

Small self-contained pure-Go web server with Lua, Teal, Markdown, HTTP/2, QUIC, Redis, TypeScript, npm-less React 19, SQLite, and PostgreSQL support ++

Algernon – 内置脚本和可选 LLM 支持的单二进制 Web 服务器

是什么 – Algernon 是一个自包含的 Go 可执行文件,可处理 HTTP/1、HTTP/2 和 HTTP/3(QUIC)流量。它能渲染多种文件类型(Markdown、Pongo2、Amber、Sass/SCSS、GCSS、JSX/TSX、Lua、Teal 等),并可将 Lua/Teal 脚本用作请求处理器。它自带嵌入式键值存储(BoltDB),也可连接 Redis、Valkey、PostgreSQL、SQLite、MariaDB/MySQL 或 MSSQL。一个小型插件系统允许你通过外部程序扩展服务器功能。

为何重要 – 对于希望快速、零依赖地原型化网站或 API 的开发者,Algernon 消除了对独立 Web 服务器、构建流水线和数据库服务器的需求。所有工具(模板引擎、CSS 预处理器、通过 esbuild 的 JSX/TSX 打包、通过 Server-Sent Events 的自动刷新)都内置于二进制文件中,因此你只需将一个文件复制到机器上即可开始提供内容。

核心功能

  • 协议支持 – 默认使用 TLS 的 HTTP/2,可选 HTTP/3(QUIC),支持明文 HTTP 回退。
  • 脚本支持 – 可通过 gopher-lua 使用 Lua 和类型化 Lua(Teal)作为请求处理器;data.lua 文件可向模板暴露函数。
  • 模板与标记 – Markdown → HTML、Pongo2、Amber、Sass/SCSS、GCSS、JSX/TSX(通过 esbuild 转译)、HyperApp、React 风格 JSX。
  • 数据库后端 – 内置 BoltDB,或连接外部 Redis/Valkey、PostgreSQL、SQLite、MariaDB/MySQL、MSSQL。
  • 速率限制 – 集成 tollbooth 中间件。
  • 自动刷新 – 通过 Server-Sent Events 在源文件更改时自动刷新浏览器(仅限 Linux/macOS)。
  • 插件系统 – 任何语言均可提供实现 Lua.CodeLua.Help 的插件,通过 JSON-RPC(pie 库)通信。
  • LLM 集成 – 当可访问 Ollama 服务器时,Lua 脚本可调用 ollama()OllamaClient 生成文本、运行代码或计算提示之间的向量距离。
  • 打包方式 – 应用程序可打包为 ZIP(.zip.alg)并直接运行;提供约 17 MiB 的 Docker 镜像。

典型工作流程

  1. 为你的网站创建一个目录。
  2. 根据偏好语言添加 index.luaindex.mdindex.pongo2index.jsx 等文件。
  3. 可选地添加 data.lua 以向模板暴露数据访问函数。
  4. 运行 algernon -e(开发模式)或 algernon --autorefresh 启动服务器。
  5. 编辑文件;浏览器将自动刷新。
  6. 生产环境时,提供 TLS 证书(--cert--key)并切换至 HTTP/2 或 HTTP/3。

适合谁使用 – 希望快速原型化 Web 栈而无需配置 Nginx、Node 或独立构建工具的爱好者、教育者和小团队开发者。也适合 Lua/Teal 爱好者,以及希望通过 Ollama 实现即时 LLM 调用的任何人。

局限性

  • 不是高性能 CDN 级别的服务器;专用服务器在吞吐量上会胜过它。
  • 自动刷新仅在 Linux/macOS 上有效。
  • 内嵌 Lua 解释器无法加载原生库(package.loadlib)。
  • LLM 功能依赖外部 Ollama 服务器;二进制文件本身不包含任何模型。

快速入门go install github.com/xyproto/algernon@latest 或下载预构建二进制文件,创建一个包含 print("Hello, World!")index.lua,然后访问 http://localhost:3000/。仓库包含 welcome.sh 脚本和 samples 集合,可探索所有支持的文件类型。


TL;DR – Algernon 是一个用 Go 编写的全功能 Web 服务器,可从单个可执行文件中提供静态文件、运行 Lua/Teal 脚本、渲染现代前端资产,并可选地调用 Ollama LLM。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目