install raspian lite dd bs=1M if=/home/me/Downloads/2019-07-10-raspbian-buster-lite.img of=/dev/sdd conv=fsync status=progress login as pi (password raspberry) pi@pidnc1:/ $ sudo passwd pi pi@pidnc1:/ $ sudo adduser david pi@pidnc1:/ $ sudo usermod -aG sudo david pi@pidnc1:/ $ su david david@pidnc1:/ $ sudo apt-get update david@pidnc1:/ $ sudo apt-get upgrade david@pidnc1:/ $ sudo nano /etc/default/keyboard Change keyboard layout from "gb" to "us" david@pidnc1:/ $ sudo nano /etc/hostname change the hostname (pimirror1 or pidnc1) save and exit david@pidnc1:/ $ sudo nano /etc/hosts change loopback name on pidnc1 add this line: 10.0.0.1 pidnc1 pidnc1.pinet.local save and exit david@pidnc1:/ $ sudo nano /etc/ssh/sshd_config add lines: PermitRootLogin no AllowUsers david save and exit Create a file named ssh in /boot. This tells raspbian to start the ssh server on boot. Raspbian lite does not start ssh by default. sudo nano /boot/ssh o x david@pidnc1:/ $ sudo reboot Make sure you can connect through ssh. ------------------------------------------------------------- pimirror1: plug in your flash drive. david@pimirror1:/ $ lsblk my flashdrive was sda1, so: david@pimirror1:/ $ sudo mkfs.ext4 /dev/sda1 david@pimirror1:/ $ sudo mkdir /home/mirror david@pimirror1:/ $ sudo mkdir /home/mirrorkeyring david@pimirror1:/ $ sudo nano /etc/fstab add this line: /dev/sda1 /home/mirror ext4 defaults 0 2 save and exit david@pimirror1:/ $ sudo reboot follow instructions found here: https://help.ubuntu.com/community/Debmirror david@pimirror1:~ $ sudo apt-get update david@pimirror1:~ $ sudo apt-get install debmirror david@pimirror1:~ $ sudo nano /usr/local/bin/mirrorbuild.sh ### Start Debmirror script ### #!/bin/bash export GNUPGHOME=/home/mirrorkeyring arch=armhf section=main,restricted release=buster server=raspbian.raspberrypi.org inPath=/raspbian proto=http outPath=/home/mirror debmirror -a $arch \ --no-source \ -s $section \ -h $server \ -d $release \ -r $inPath \ --progress \ --method=$proto \ $outPath ### End Debmirror script ### david@pimirror1:~ $ sudo chmod +x /usr/local/bin/mirrorbuild.sh david@pimirror1:~ $ sudo chown -R root:david /home/mirror david@pimirror1:~ $ sudo chmod -R 571 /home/mirror david@pimirror1:~ $ sudo gpg --no-default-keyring --keyring /home/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/raspbian-archive-keyring.gpg david@pimirror1:~ $ sudo mirrorbuild.sh Install apache: sudo apt-get install apache2 sudo ln -s /home/mirror /var/www/html/raspbian sudo chmod 755 /var/www/html/raspbian (needed?) sudo chmod 755 /home/mirror -R ------------------------------------------------------------- pidnc1: sudo nano /etc/dhcpcd.conf set hostname # define static profile profile static_eth0 static ip_address=10.0.0.1/24 static routers=10.0.0.1 static domain_name_servers=10.0.0.1 # fallback to static profile on eth0 interface eth0 fallback static_eth0 Next section of instructions come from here: http://www.noveldevices.co.uk/rp-dhcp-server sudo apt-get update sudo apt-get install isc-dhcp-server sudo nano /etc/dhcp/dhcpd.conf # dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... authoritative; option domain-name "pinet.local"; option domain-name-servers pidnc1.pinet.local; ddns-updates on; ddns-update-style interim; ignore client-updates; update-static-leases on; default-lease-time 600; max-lease-time 7200; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; include "/etc/dhcp/ddns.key"; zone pinet.local. { primary 10.0.0.1; key DDNS_UPDATE; } zone 0.0.10.in-appr.arpa. { primary 10.0.0.1; key DDNS_UPDATE; } subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.5 10.0.0.254; option routers 10.0.0.1; } sudo nano /etc/default/isc-dhcp-server set interfaces v4 to "eth0" (leave interfaces v6 commented out) sudo apt-get install bind9 sudo apt-get install dnsutils sudo nano /etc/default/bind9 OPTIONS = "-4 -u bind" Follow these instructions: https://wiki.debian.org/DDNS david@pidnc1:/ $ dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DDNS_UPDATE david@pidnc1:/ $ nano *.private (copy the algorithm and key lines) david@pidnc1:/ $ sudo nano /etc/bind/ddns.key key DDNS_UPDATE { algorithm HMAC-MD5; secret "igz0pDUU34ewdbjUEODNkA=="; }; david@pidnc1:~ $ sudo cp /etc/bind/ddns.key /etc/dhcp david@pidnc1:~ $ sudo chown root:bind /etc/bind/ddns.key david@pidnc1:~ $ sudo chown root:root /etc/dhcp/ddns.key david@pidnc1:~ $ sudo chmod 640 /etc/bind/ddns.key david@pidnc1:~ $ sudo chmod 640 /etc/dhcp/ddns.key david@pidnc1:~ $ sudo nano /etc/bind/named.conf.local add include "/etc/bind/ddns.key"; zone "pinet.local" { type master; notify no; file "/var/cache/bind/pinet.local"; allow-update { key DDNS_UPDATE; }; }; zone "0.0.10.in-appr.arpa" { type master; notify no; file "/var/cache/bind/10.0.0.in-addr.arpa"; allow-update { key DDNS_UPDATE; }; }; sudo mkdir /etc/bind/zones sudo nano /etc/bind/zones/pinet.local ; BIND data for pinet.local ; $TTL 86400 @ IN SOA pinet.local. admin.pinet.local. ( 1 ; Serial 3h ; Refresh 1h ; Retry 1w ; Expire 1h ) ; Minimum ; @ IN NS pidnc1.pinet.local. pidnc1 IN A 10.0.0.1 pimirror1 IN A 10.0.0.2 david@pidnc1:/ $ sudo nano /etc/bind/zones/10.0.0.in-addr.arpa ; ; BIND reverse file for 10.0.0.in-addr.arpa ; $TTL 86400 @ IN SOA pidnc1.pinet.local. admin.pinet.local. ( 1 ; Serial 3h ; Refresh 1h ; Retry 1w ; Expire 1h ) ; Minimum ; @ IN NS pidnc1.pinet.local. 1 IN PTR pidnc1.pinet.local. 2 IN PTR pimirror1.pinet.local. david@pidnc1:~ $ sudo ln -s /etc/bind/zones/pinet.local /var/cache/bind david@pidnc1:~ $ sudo ln -s /etc/bind/zones/10.0.0.in-addr.arpa /var/cache/bind david@pidnc1:/ $ sudo named-checkconf david@pidnc1:/ $ named-checkzone pinet.local /etc/bind/zones/pinet.local david@pidnc1:/ $ named-checkzone 10.0.0.in-addr.arpa /etc/bind/zones/10.0.0.in-addr.arpa david@pidnc1:/ $ sudo dhcpd -t david@pidnc1:/ $ sudo nano /boot/config.txt add dtoverlay=pi3-disable-wifi dtoverlay=pi3-disable-bt /*********************** /* To disable dhcp /* sudo systemctl disable isc-dhcp-server.service /* sudo update-rc.d -f isc-dhcp-server remove /* /* If you want to add DHCP Server to startup again, enter this command: /* sudo systemctl enable isc-dhcp-server.service /* sudo update-rc.d isc-dhcp-server defaults /*********************** client: sudo nano /etc/apt/sources.list deb http://pimirror1.pinet.local/raspbian/ buster main sudo nano /etc/apt/sources.list.d/raspi.list deb http://pimirror1.pinet.local/debian/ buster main david@pidnc1:/ $ sudo nano /boot/config.txt add dtoverlay=pi3-disable-wifi dtoverlay=pi3-disable-bt Create a file named ssh in /boot. This tells raspbian to start the ssh server on boot. Raspbian lite does not start ssh by default. sudo nano /boot/ssh o x Make the image: This tells you how much space is used: df Instructions came from here: https://www.raspberrypi.org/forums/viewtopic.php?t=5947&start=25 e2fsck -f /dev/mmcblk0p2 resize2fs -M /dev/mmcblk0p2 Run gparted to shrink the partition or use... fdisk /dev/sdb https://www.msp360.com/resources/blog/linux-resize-partition/ dd bs=1M if=/dev/mmcblk0 of=/home/robert/Downloads/buster_client.img conv=fsync status=progress count=3712 Get started: sudo raspi-config advanced options expand_rootfs