Self-hosting Wikipedia using Kiwix
Do you have a need to host Wikipedia on your computer?
Or a StackExchange site, like Super User?
It’s easier than you think!
Step 1: download stuff!
The Kiwix project provides ZIM files for many popular websites, including Wikipedia. These files can be downloaded over at Kiwix wiki.
Take a look at the content packages available and download those that you are interested in.
Step 2: install Kiwix
Kiwix provides all sorts of clients for different operating systems. If you don’t want to go crazy with setting up a server and you just want to browser your offline copy of Wikipedia or any other resource, then go ahead and use that.
However, if you want to make the resources available for other people as well, then you need to install kiwix-serve
.
On Debian and Ubuntu systems, this is just a sudo apt install kiwix-tools
in your terminal.
Once you have it installed, all you have to do is to run kiwix-serve -p 8080 your-file-here.zim
and your content
package is served to anyone who can connect to your machine with a browser over port 8080.
If you have multiple ZIM files in the same folder, then you can serve all of them at once with something like
kiwix-serve -p 8080 *.zim
.
Step 3: enjoy!
You should now be up and running with your very own hosted Wikipedia instance! Just keep in mind that your copy might not be 100% up to date. The Kiwix project does repackage these sites quite regularly so keep an eye out for updates.
Tips and tricks
I have set up my own Kiwix instance and the way it works is quite simple.
I use Deluge to download and seed the content packs that I have downloaded.
Then I have also set up a systemd
service that automatically starts Kiwix on boot. It is located at
/etc/systemd/system/kiwix-serve.service
and looks like this:
[Unit]
Description=Serve all the ZIM files loaded on this server
[Service]
Restart=always
RestartSec=15
User=kiwix
ExecStart=/usr/bin/bash -c "/usr/bin/kiwix-serve -p 8080 /path/to/your/files/*.zim"
[Install]
WantedBy=network-online.target
Note that I have set up a separate non-interactive user for this purpose. The path to the ZIM files simply refers to the download folder of the Deluge torrent client.
Making this available to the world is simply a matter of either exposing the selected port to the world, or using nginx
as a reverse proxy. There are plenty of guides available on how to achieve the latter so I won’t go into detail about
that here.
That’s it!
2024-09-05 update
It’s been a fun experiment, but LLM-bots are overwhelming my Kiwix instance and I can’t be bothered with setting up
any protections right now, so the kiwix.ounapuu.ee
instance is shut down for now.
Subscribe to new posts via the RSS feed.
Not sure what RSS is, or how to get started? Check this guide!
You can reach me via e-mail or LinkedIn.
If you liked this post, consider sharing it!