Kiwix
Offline Wikipedia and other content served from ZIM files.
Kiwix is an open-source tool for offline reading of web content. It serves Wikipedia, Project Gutenberg, Stack Overflow, and other knowledge bases packaged as ZIM files. Self-hosting Kiwix makes large knowledge bases accessible without internet connectivity and with very low latency.
Alternatives considered
Cloud Hosted
| Tool | Open Source | Free Tier | Monthly Cost |
|---|---|---|---|
| Wikipedia | Yes | Yes | Free |
| DevDocs | Yes | Yes | Free; dev docs only |
Self Hosted
| Tool | Open Source | Full Features | Notes |
|---|---|---|---|
| Zeal | Yes | Yes | Desktop-only offline docs browser |
Installation
Architecture
- Deployment: Single
kiwixdeployment in thekiwixnamespace - Image:
ghcr.io/kiwix/kiwix-serve:3.8.2(digest-pinned) - Storage: NFS volume from TrueNAS for ZIM files (read-only content serving)
- Networking: ClusterIP service on port 80, HTTPRoute via public gateway; NetworkPolicy allows ingress from Envoy Gateway and Homepage
Security
No securityContext configured. No secrets required — read-only content serving with no writable state.
Updates
Managed by Renovate. Image is digest-pinned.
Data Management
No PVCs. ZIM files reside on the TrueNAS NFS share and are managed by TrueNAS. To add content, download ZIM files from kiwix.org and place them in the NFS share directory.
User Management
No authentication configured. Public access via HTTPRoute.
Configuration Management
No ConfigMaps or Secrets. ZIM file path passed as command argument to the container.
Administration
Usage
Download ZIM files from the Kiwix library (kiwix.org/en/download) and place them in the data volume. Access the web UI to browse and search all loaded knowledge bases. Particularly useful as an offline reference for Wikipedia and technical documentation.
Cluster-specific deviations from the above live in the per-cluster README — see k8s/apps/talos/kiwix/README.md.
Cluster Deployment
Kiwix — Talos cluster
Cluster-specific notes only. General product info, "why we use it", and alternatives live in docusaurus/docs/apps/kiwix.mdx.
Deviations from defaults
Defaults live in docusaurus/docs/apps/kiwix.mdx — document anything this cluster does differently here, with a one-line reason.
- Image:
ghcr.io/kiwix/kiwix-serve:3.8.2@sha256:7431be257ac0b0b6f14633ef088774f6d5122246940b594b3017a70169058b08
Rendered manifests (kustomize build)
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kustomize.toolkit.fluxcd.io/force: enabled
labels:
app: kiwix
name: kiwix
namespace: kiwix
spec:
replicas: 1
selector:
matchLabels:
app: kiwix
ingress: public
strategy:
rollingUpdate: null
type: Recreate
template:
metadata:
labels:
app: kiwix
ingress: public
spec:
containers:
- args:
- '-M'
- '*.zim'
image: ghcr.io/kiwix/kiwix-serve:3.8.2@sha256:7431be257ac0b0b6f14633ef088774f6d5122246940b594b3017a70169058b08
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
name: kiwix
ports:
- containerPort: 8080
name: web
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- mountPath: /data/
name: kiwix-data
subPath: kiwix
volumes:
- name: kiwix-data
nfs:
path: /mnt/zima/reading
server: 192.168.100.200