← Package directory
Available on winget

Install Algernon

Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

Install with winget
winget install --id xyproto.algernon
Upgrade
winget upgrade --id xyproto.algernon
Uninstall
winget uninstall --id xyproto.algernon

About Algernon

Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

What's new in 1.17.10

- Also support case-insensitive file systems when checking for permissions (thanks @manus-use). - Fix issue #122, open the internal log file with different flags. - Fix the flag precedence issue, ref #145. - Make the path handling more robust in connection with React / Hot Module Replacement. - Render more types of Lua tables, ref #119. - Encode filenames in connection with the directory listing, ref #144. - Add the remoteaddr function, ref #114. - Let KeyValue also support table values, ref #113. - Add support for global.lua files for initializing the Lua pool, ref #103. - Also allow SIGUSR2 to clear the cache, thanks @MatrixNeoKozak, ref #174. - Make argument handling more robust. - Handle 127.0.0.1 and ::1 as localhost when serving domains. - Add -D as a short flag for --domain. - Use html/template for the error message page. - Escape filenames in error messages when in debug mode. - Make HMRUpdateHandler more robust. - Use encodeURIComponent in the registration for example. - Make two path-related errors into warnings. - Fix and update the dockerfiles. - Add container files and scripts for Podman. - Use the correct host for the auto-refresh feature. - Update dependencies. - Add an example that uses SQLite. - Update example projects. - Add more tests. - Add "make cover" for checking the test coverage. - Use build-time platform detection whenever possible.

Read release notes

Version history

Version Updated Notes
1.17.10 - Also support case-insensitive file systems when checking for permissions (thanks @manus-use). - Fix issue #122, open the internal log file with different flags. - Fix the flag precedence issue, ref #145. - Make the pat...
1.17.9 Unknown Security related - Add a check for special Windows/NTFS filenames (only applies on Windows). Thanks @Dredsen. Memory usage while processing data - Use io.Copy in the reverse proxy to bound memory usage. - Limit the reque...
1.17.8 Unknown Security related - Fix possible path traversal when --domain is used (thanks @fg0x0). Fixes - Fix a possible file descriptor leak after trying to write to /dev/shm. - Fix a possible issue with setting header values when...
1.17.7 Unknown Security related - Clamp handler.lua parent walk to server root, thanks @Dredsen. - Use the main mux when serving SSE for the auto-refresh feature, thanks @Dredsen. - Add a --hide-dotfiles for not serving hidden files, t...
1.17.6 Unknown What's Changed - Bump golang.org/x/crypto from 0.44.0 to 0.45.0 by @dependabot[bot] in #168 Full Changelog: v1.17.5...v1.17.6
1.17.5 Unknown Fixes - Fix HTML detection, ref #164 (thanks @astynax). Security - Add an initial Security.md file. - Add extra sanitation / XXS protection (thanks @Bnyt7). New features - Add support for serving the QOI image format. Co...
1.17.4 Unknown - Fix a missing m character when drawing the banner/logo at start. - Also show the banner/logo at start on Windows. - Add HTML sanitization of the filename for the "file not found" page". This fixes an XSS issue. - Switc...
1.17.3 Unknown Fixes - Only listen for the USR1 signal on some platforms. Fixes #157 (thanks for reporting, @kris6673). New features - Add a run3 function, ref #158 (thanks for reporting, @myselfghost). - Add print_nonl that can be use...
1.17.2 Unknown Fixes - Use net/http instead of fasthttp for serving regular HTTP to make the flush() function work again, ref #124 (thanks @diyism and @myselfghost). - Add support for SQLite, ref #134 (thanks @bearinld004 and @judell,...
1.17.1 Unknown Platform compatibility - Patch the pingcap/tidb dependency so that Algernon still compiles for ARM 6 and ARM 7. Ollama / LLMs - Add the oc:distance() Lua method for finding the distance between two LLM prompts. - Let the...
1.15.2 Unknown No notes