CanaKit Raspberry Pi 4 (4GB) Starter Kit (Amazon Affiliate) ➡️ Purchase here: https://amzlink.to/az0ZfrkkOaE2j UK: https://amzlink.to/az0tldMyYgHkO CA: https://amzlink.to/az02dRfQRpSbE ES: https://amzlink.to/az0LjL2QjxrJf (similar) FR: https://amzlink.to/az03BF7ks0KJJ (similaire) IT: https://amzlink.to/az0TWmA9d7fFm (simile) DE: https://amzlink.to/az0cV12rz0zJb (ähnlich) IN: https://amzlink.to/az0KxgOoOocos AU: https://amzlink.to/az0cjN4OPfBBq NL: https://amzlink.to/az0yZHtGePHqS (vergelijkbaar)
Outstanding Issues
You can halt the boot process by holding down control-c. This doesn’t seem to allow the user to gain access to the system. This wasn’t working with Raspberry Pi 2 or 3 at first but I added “sudo adduser kiosk video” to the setup and it works now. I don’t think older models have enough RAM to make it feasible with this setup.
General Notes
To exit Nano text editor, type: control-o to save and control-x to exit
Type “shutdown -h now” to shutdown from the terminal
Type “shutdown -r now” to reboot from the terminal
Setup Raspberry Pi
sudo raspi-config
Configure these options:
Change User Password Boot Options > Desktop / CLI > Console Autologin Localization Options > All Advanced Options > Overscan Advanced Options > Resolution*
* This is only needed for Raspberry Pi 3 and older if you want a to change resolution.
Update System
sudo apt update && sudo apt upgrade
Install Packages
sudo apt install --no-install-recommends xorg openbox ufw nginx surf-display ttf-ancient-fonts
Add Kiosk User Account
sudo adduser kiosk
sudo passwd -l kiosk
sudo adduser kiosk video
Add startx to User .bashrc
sudo nano /home/kiosk/.bashrc
startx
Change Resolution (optional)*
sudo nano /home/kiosk/.xsessionrc
xrandr --output HDMI-1 --mode 1280x720
* Only needed for Raspberry Pi 4 and newer if you want to change resolution
Change Autologin to kiosk User
sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
ExecStart=-/sbin/agetty --autologin kiosk --noclear %I $TERM
Download Kiwix Server
https://www.kiwix.org/en/downloads/kiwix-serve/
Download Kiwix Content (Zim File)
https://wiki.kiwix.org/wiki/Content_in_all_languages
Send Kiwix Server and Zim File to Raspberry Pi (run on local computer)
scp ~/Downloads/kiwix-tools_linux-armhf*.tar.gz pi@raspberrypi.local:~/
scp ~/Downloads/*.zim pi@raspberrypi.local:~/
Decompress Kiwix Server
tar -zxvf kiwix-tools_linux-armhf*.tar.gz
Move Binaries to Executable Directory
sudo mv kiwix-tools_linux-armhf-*/* /usr/local/bin/
Move Zim File to Directory
sudo mv wikipedia*.zim /var/local/
Create Kiwix Service
sudo nano /etc/systemd/system/kiwix.service
[Unit]
Description=Kiwix Service
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/kiwix-serve -mb /var/local/wikipedia_en_simple_all_nopic_2020-02.zim -p 8080
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Start Kiwix Service
sudo systemctl enable kiwix
sudo systemctl start kiwix
Test Kiwix Server in a Web Browser
http://<ip_address_of_raspberry_pi>:8080
Configure Nginx Reverse Proxy
sudo nano /etc/nginx/sites-available/default
#try_files $uri $uri/ =404;
proxy_pass http://127.0.0.1:8080;
location /catch/ {
return 301 http://$host;
}
Restart Nginx
sudo systemctl restart nginx
Setup Surf Web Browser
sudo nano /etc/default/surf-display
DEFAULT_WWW_URI="http://127.0.0.1"
INACTIVITY__INTERVAL="300"
Add surf-display to Openbox autostart script
sudo nano /etc/xdg/openbox/autostart
surf-display http://127.0.0.1 &
Disable Keyboard Power Button (Choose One Option)
sudo nano /etc/systemd/logind.conf
HandlePowerKey=ignore # Do nothing
HandlePowerKey=reboot # Reboot
Disable Ctrl-Alt-Backspace
sudo nano /usr/share/X11/xorg.conf.d/dontzap.conf
Section "ServerFlags"
Option "DontZap" "true"
EndSection
Disable Virtual Console Switching
sudo nano /etc/X11/Xsession.d/65srvrkeys-none
setxkbmap -option srvrkeys:none
Disable tty Consoles
sudo nano /etc/systemd/logind.conf
NAutoVTs=0
ReserveVT=0
Disable Ctrl-Alt-Delete
sudo rm /lib/systemd/system/ctrl-alt-del.target
sudo ln -s /dev/null /lib/systemd/system/ctrl-alt-del.target
sudo systemctl daemon-reload
Disable Print Screen (and other key combinations)
sudo mkdir -p /home/kiosk/.config/openbox
sudo cp /etc/xdg/openbox/rc.xml /home/kiosk/.config/openbox/
sudo nano /home/kiosk/.config/openbox/rc.xml
Type control-w to search for ‘<keyboard>’
Go to the next line and press control-shift-6 to start selection
Select down to just before ‘</keyboard>’ and press control-k to remove configuration
You should end up with:
<keyboard>
</keyboard>
Setup Firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
Reboot System
sudo reboot
Set System to Read Only
sudo raspi-config
Advanced Options > Overlay FS