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 지원을 갖춘 단일 바이너리 웹 서버
무엇인가요 – Algernon은 HTTP/1, HTTP/2, HTTP/3 (QUIC) 트래픽을 처리하는 자체 포함형 Go 실행 파일입니다. Markdown, Pongo2, Amber, Sass/SCSS, GCSS, JSX/TSX, Lua, Teal 등 다양한 파일 형식을 렌더링할 수 있으며, Lua/Teal 스크립트를 요청 핸들러로 실행할 수 있습니다. 내장된 키-밸류 저장소(BoltDB)를 제공하며, Redis, Valkey, PostgreSQL, SQLite, MariaDB/MySQL, MSSQL와도 통신 가능합니다. 작은 플러그인 시스템을 통해 외부 프로그램으로 서버를 확장할 수 있습니다.
왜 중요한가요 – 웹사이트나 API를 빠르고 외부 의존 없이 프로토타이핑하고 싶은 개발자에게 Algernon은 별도의 웹 서버, 빌드 파이프라인, 데이터베이스 서버가 필요 없도록 합니다. 템플릿 엔진, 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만 지원).
- 플러그인 시스템 – 어떤 언어든 JSON-RPC를 통해
Lua.Code와Lua.Help를 구현하는 플러그인을 제공할 수 있습니다 (pie 라이브러리). - LLM 통합 – Ollama 서버에 접근 가능하면 Lua 스크립트에서
ollama()또는OllamaClient를 호출해 텍스트 생성, 코드 실행, 프롬프트 간 벡터 거리 계산이 가능합니다. - 패키징 – 애플리케이션은 ZIP (.zip 또는 .alg) 형식으로 압축해 직접 실행 가능. 약 17 MiB의 Docker 이미지도 제공됩니다.
일반적인 워크플로우
- 사이트용 디렉터리 생성.
- 선호하는 언어에 따라
index.lua,index.md,index.pongo2,index.jsx등을 추가. - 선택적으로
data.lua를 추가해 템플릿에 데이터 접근 함수를 노출. algernon -e(개발 모드) 또는algernon --autorefresh로 서버 시작.- 파일을 편집하면 브라우저가 자동으로 새로 고침.
- 본격적인 환경에서는 TLS 인증서(
--cert,--key)를 제공하고 HTTP/2 또는 HTTP/3로 전환.
누구에게 적합한가요 – 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로 작성된, 단일 실행 파일에서 정적 파일 제공, Lua/Teal 스크립트 실행, 최신 프론트엔드 자산 렌더링, 선택적 Ollama LLM 호출까지 가능한 완전 통합형 웹 서버입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트