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.CodeLua.Help를 구현하는 플러그인을 제공할 수 있습니다 (pie 라이브러리).
  • LLM 통합 – Ollama 서버에 접근 가능하면 Lua 스크립트에서 ollama() 또는 OllamaClient를 호출해 텍스트 생성, 코드 실행, 프롬프트 간 벡터 거리 계산이 가능합니다.
  • 패키징 – 애플리케이션은 ZIP (.zip 또는 .alg) 형식으로 압축해 직접 실행 가능. 약 17 MiB의 Docker 이미지도 제공됩니다.

일반적인 워크플로우

  1. 사이트용 디렉터리 생성.
  2. 선호하는 언어에 따라 index.lua, index.md, index.pongo2, index.jsx 등을 추가.
  3. 선택적으로 data.lua를 추가해 템플릿에 데이터 접근 함수를 노출.
  4. algernon -e (개발 모드) 또는 algernon --autorefresh로 서버 시작.
  5. 파일을 편집하면 브라우저가 자동으로 새로 고침.
  6. 본격적인 환경에서는 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 호출까지 가능한 완전 통합형 웹 서버입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트