Repository navigation
Zimi v1.1.0 — Rate Limiting, Auto-Update, UI Polish
Production hardening release with safe downloads, rate limiting, deep linking, and UI polish.
Server
- Safe downloads —
.tmp+ atomic rename with HTTP Range resume and size verification - Rate limiting — configurable per-IP rate limiting (
ZIMI_RATE_LIMIT, default 60 req/min) - Auto-update — background ZIM update checking (
ZIMI_AUTO_UPDATE=1,ZIMI_UPDATE_FREQ) - Search cache — 5-minute TTL, auto-invalidated on library changes
- Version in
/health— version number included in health check response - Password protection — optional password for library management (
ZIMI_MANAGE_PASSWORD)
Web UI
- Deep linking — article and search URLs survive page reload (bookmarkable)
- Flavor picker — switch between ZIM variants (full/nopic/mini) from the installed list
- Browse library shortcut — empty state links directly to the Kiwix catalog browser
- Amber "Z" favicon — custom branded favicon
- Version in footer — server version displayed in page footer
Security
- Download URL validation (domain whitelist, path traversal prevention)
X-Forwarded-Foronly trusted from known proxy IPs- Search cache cleared on library changes (prevents stale results)
- Auto-update thread race condition fixed
Bug Fixes
- Search results could reference deleted ZIMs for up to 5 minutes
- Rapid auto-update toggle could spawn duplicate download threads
- Malformed percent-encoded URLs crashed SPA routing
titlevariable scoping issue in article reader
New Environment Variables
| Variable | Default | Description |
|---|---|---|
ZIMI_AUTO_UPDATE |
0 |
Enable auto-update. Set to 1. |
ZIMI_UPDATE_FREQ |
weekly |
Frequency: daily, weekly, monthly |
ZIMI_RATE_LIMIT |
60 |
Requests/min per IP. 0 to disable. |
ZIMI_MANAGE_PASSWORD |
(none) | Password for library management |
Upgrade
# Docker
docker pull epheterson/zimi:latest
# Docker Compose
docker compose pull && docker compose up -dFull Changelog: v1.0.0...v1.1.0