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。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案