Skip to main content

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

ToolOpen SourceFree TierMonthly Cost
WikipediaYesYesFree
DevDocsYesYesFree; dev docs only

Self Hosted

ToolOpen SourceFull FeaturesNotes
ZealYesYesDesktop-only offline docs browser

Installation

Architecture

  • Deployment: Single kiwix deployment in the kiwix namespace
  • 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

Depends on

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.

Kubernetes Metadata
  • 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