Raspbian 'stretch' - system build notes 1. Copy os disk image to SD card. 2. Mount the SD card to the host computer and navigate to the boot volume of the SD card. 3. If using wired Ethernet, skip to step 6. 4. Edit the wpa_supplicant.conf file with your wifi ssid and wifi password. 5. Copy the wpa_supplicant.conf file to the root of the boot volume. 6. Create an empty file named "ssh" in the root of the boot volume. 7. Unmount the SD card and install in the Pi Zero. Apply power and boot up the Pi Zero. 8. Secure shell into the Pi Zero by running ssh pi@raspberrypi.local The password is 'raspberry' 9. Configure the following by running sudo raspi-config In System Options modify the following hostname: nodepower password: YOUR_PASSWORD In Interface Options modify the following I2C: ON In Localisation Options modify the following Locale: en_US.UTF-8 UTF-8 Timezone: PACIFIC Keyboard: US WLAN: US 10. If using wired Ethernet, disable wifi by adding the following line to the end of the /boot/config.txt file dtoverlay=disable-wifi This helps to conserve power. 11. Disable Bluetooth by adding the following line to the end of the '/boot/config.txt' file: dtoverlay=disable-bt This helps to conserve power. [Optional] Run the once off command: sudo systemctl disable hciuart 12. Set up ssh keys on client and import the public key to the Pi Zero .ssh directory. Create .ssh directory on the Pi Zero. In .ssh create a file authorized_keys and copy the public key to it. 13. Backup and then modify /etc/ssh/sshd_config as follows #PermitRootLogin prohibit-password PermitRootLogin no #X11Forwarding yes X11Forwarding no Optionally turn off password authentication #PasswordAuthentication yes PasswordAuthentication no 14. Setup tmpfs by backup and then modifying /etc/fstab. Add the following lines to the bottom of the file. # uncomment if needed for web apps # These changes store all non-essential logs in ram to reduce # stress on the SD card due to frequent writes. tmpfs /tmp tmpfs nodev,nosuid,size=20M 0 0 tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=20m 0 0 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=20m 0 0 tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=20m 0 0 15. Reboot the Pi Zero by running sudo reboot 16. Run updates by running the commands sudo apt-get update Optionally run all software updates sudo apt-get upgrade sudo reboot 17. Install vim apt-get install vim 18. Optionally copy pi backup archive from the ssh client to the /home/pi folder scp pi.zip pi@nodepower.local:~ 19. Restore files and directories from backup archive by running unzip pi.zip Use 'mv' to move folders and files to their appropriate locations. 20. Make backups of /etc/rc.local, /etc/motd. Then, acting as superuser copy to /etc from the unzipped directory the files rc.local and motd. 21. Install rrdtool sudo apt-get install rrdtool 22. Install web server Apache2 ====== sudo apt-get install apache2 -y sudo a2enmod rewrite sudo service apache2 restart PHP === sudo apt-get install php libapache2-mod-php -y sudo service apache2 restart 23. Acting as superuser, backup and then modify /etc/apache2/mods-available/userdir.conf # changed {date} by {name} to allow user .htacess file #AllowOverride FileInfo AuthConfig Limit Indexes AllowOverride All 24. Enable user directories in apache2 sudo a2enmod userdir 25. Acting as superuser, backup and then modify /etc/apache2/sites-available/000-default.conf # changed 12-06-2019 by JLO to make user pi the html document root #DocumentRoot /var/www/html DocumentRoot /home/pi/public_html 26. Acting as superuser, backup and then modify /etc/apache2/mods-available/php7.3.conf to allow user directories by commenting the lines at bottom of file. E.g., # # # php_admin_flag engine Off # # 27. Enable php in apache2 sudo a2enmod php7.3 28. Acting as superuser, backup and then modify /etc/apache2/envvars to create apache2 logs in tmpfs. Add the following lines at the top of the file if [ ! -d /var/log/apache2 ]; then mkdir /var/log/apache2 fi 29. Acting as superuser, enable apache2 to access files the tmpfs /tmp directory by backing up and then modifying /lib/systemd/system/apache2.service # changed {date} by {name} to allow apache to follow symlinks # to the /tmp folder in tmpfs #PrivateTmp=true PrivateTmp=false 30. Reload system deamons sudo systemctl daemon-reload 31. Restart apache2 service sudo systemctl restart apache2 32. Install i2c smbus python library by running sudo apt-get install python-smbus 33. Reboot the Pi Zero by running 'sudo reboot'. 34. Test all above modifications.