x-arcane:
icon-light: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/kiwix-light.svg
icon-dark: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/kiwix-dark.svg
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/kiwix.svg
urls:
- https://kiwix.org/en/
- https://wiki.kiwix.org/wiki/Kiwix-serve
- https://kiwix-tools.readthedocs.io/en/latest/kiwix-serve.html
- https://github.com/kiwix/kiwix-tools/tree/main/docker/server
services:
kiwix:
container_name: kiwix
image: ghcr.io/kiwix/kiwix-serve:latest
ports:
- ${APP_PORT:-8080}:8080
volumes:
- ${ZIM_PATH}:/data
environment:
- DOWNLOAD=${DOWNLOAD_URL:-}
command: ["*.zim"]
healthcheck:
test:
["CMD", "wget", "--spider", "--tries=1", "-q", "http://localhost:8080/catalog/v2/root.xml"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
restart: unless-stopped
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/kiwix.svg
APP_PORT=8080
# Ensure this directory exists and is writable on the host
ZIM_PATH=/data/zim
# Optional: URL to download a ZIM file on startup, comment/remove to disable. Only supports one URL.
DOWNLOAD_URL="https://lb.download.kiwix.org/zim/other/openzim_en_all_maxi_2026-08.zim"README
kiwix-serve is a lightweight web server that allows you to serve ZIM archives.
Before deploying
Review the template environment variables:
- Set
APP_PORTto the port you want to use for the Kiwix server (default is 8080). - Set
ZIM_PATHto the directory where you want to store ZIM files. This directory should be writable by the container and needs to contain at least one.zimfile. - Optionally set
DOWNLOAD_URLto the URL of a ZIM file to download on startup. This variable only takes one URL.