Skip to content

Instantly share code, notes, and snippets.

@PJTewkesbury
Last active January 16, 2023 10:08
Show Gist options
  • Save PJTewkesbury/0ee506d9029fae99ea81f305a35ccf30 to your computer and use it in GitHub Desktop.
Save PJTewkesbury/0ee506d9029fae99ea81f305a35ccf30 to your computer and use it in GitHub Desktop.
Build Server PI
#!/bin/bash
# wget -O - Url | bash
# This script requires the following enviroment variables to be defined before calling this script.
IPADDR_ETH0="192.168.0.14"
IPADDR_WLAN0="192.168.0.15"
ROOTPW="ServerPI@ssword"
DISKLABEL=""
USBDISKLABEL=""
wget -O ./BuildPiCore.sh https://gist.githubusercontent.com/PJTewkesbury/142815aace9f37f36fe8ef90cb683102/raw/fdbcadb3393e28640ed24369086b4f9b340ac26e/BuildPICore.sh
chmod +x ./BuildPiCore.sh
source "./BuildPiCore.sh"
# Install Extra Shares
echo "Add extra Samba Shares"
echo
sudo echo "[Backups]"| sudo tee -a /etc/samba/smb.conf
sudo echo "comment = Backups"| sudo tee -a /etc/samba/smb.conf
sudo echo "path = /media/Data/Backups"| sudo tee -a /etc/samba/smb.conf
sudo echo "Browseable = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Writeable = Yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "only guest = no"| sudo tee -a /etc/samba/smb.conf
sudo echo "create mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "directory mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "Public = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Guest ok = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "read only = no"| sudo tee -a /etc/samba/smb.conf
sudo echo "[Documents]"| sudo tee -a /etc/samba/smb.conf
sudo echo "comment = Documents"| sudo tee -a /etc/samba/smb.conf
sudo echo "path = /media/Data/Documents"| sudo tee -a /etc/samba/smb.conf
sudo echo "Browseable = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Writeable = Yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "only guest = no"| sudo tee -a /etc/samba/smb.conf
sudo echo "create mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "directory mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "Public = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Guest ok = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "read only = no"| sudo tee -a /etc/samba/smb.conf
sudo echo "[EBooks]"| sudo tee -a /etc/samba/smb.conf
sudo echo "comment = EBooks"| sudo tee -a /etc/samba/smb.conf
sudo echo "path = /media/Data/EBooks"| sudo tee -a /etc/samba/smb.conf
sudo echo "Browseable = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Writeable = Yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "only guest = no"| sudo tee -a /etc/samba/smb.conf
sudo echo "create mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "directory mask = 0777"| sudo tee -a /etc/samba/smb.conf
sudo echo "Public = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "Guest ok = yes"| sudo tee -a /etc/samba/smb.conf
sudo echo "read only = no"| sudo tee -a /etc/samba/smb.conf
sudo systemctl restart smbd
# Make Application Directories
sudo mkdir /Apps
sudo mkdir /Apps/TewkysWebsite
sudo mkdir /Apps/AskMarpleTown
sudo mkdir /Apps/AskMyChurch
sudo mkdir /Apps/Rainloop
# Install NGINX reverse Proxy
sudo systemctl disable apache2
sudo apt purge apache2
sudo apt install php php-xml php-curl nginx socat sshpass -y
# Install ACME
#
cd /Apps
sudo git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
sudo ./acme.sh --install -m [email protected]
# Install TewkysWebsite
echo
echo "Create TewkysWebsite service and enable it"
echo
sudo echo "[Unit]"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# https://swimburger.net/blog/dotnet/how-to-run-a-dotnet-core-console-app-as-a-service-using-systemd-on-linux"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "Description=Tewkys Website service"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "After=syslog.target"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "[Service]"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# Use your username to keep things simple."| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# If you pick a different user, make sure dotnet and all permissions are set correctly to run the app"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# To update permissions, use 'chown yourusername -R /srv/HelloWorld' to take ownership of the folder and files,"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# Use 'chmod +x /srv/HelloWorld/HelloWorld' to allow execution of the executable file"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "User=root"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "WorkingDirectory=/Apps/TewkysWebsite"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# systemd will run this executable to start the service"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# if /usr/bin/dotnet doesn't work, use `which dotnet` to find correct dotnet executable path"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "ExecStart=/Apps/TewkysWebsite/TewkysWebSite2"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "RestartSec=10"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "Restart=Always"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "KillSignal=SIGINT"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "SyslogIdentifier=dotnet-TewkysWebsite"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# This environment variable is necessary when dotnet isn't loaded for the specified user."| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "# To figure out this value, run 'env | grep DOTNET_ROOT' when dotnet has been loaded into your shell."| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "Environment=ASPNETCORE_ENVIRONMENT=Production"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "[Install]"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo echo "WantedBy=multi-user.target"| sudo tee -a /etc/systemd/system/TewkysWebsite.service
sudo systemctl enable TewkysWebsite.service
sudo echo "echo Deploying publish.zip to TewkysWebsite" | tee -a /Apps/TewkysWebsite.Deploy.sh
sudo echo "systemctl stop TewkysWebsite.service" | tee -a /Apps/TewkysWebsite.Deploy.sh
sudo echo "cd /Apps/TewkysWebsite" | tee -a /Apps/TewkysWebsite.Deploy.sh
sudo echo "unzip -u -o /Apps/TewkysWebSite2.zip" | tee -a /Apps/TewkysWebsite.Deploy.sh
sudo echo "systemctl start TewkysWebsite.service" | tee -a /Apps/TewkysWebsite.Deploy.sh
sudo echo "exit 0" | tee -a /Apps/TewkysWebsite.Deploy.sh
# Install AskMyChurch
echo
echo "Create IPlayer service and enable it"
echo
sudo echo "[Unit]"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "Description=AskMyChurch Website service"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "After=syslog.target"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "[Service]"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "User=root"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "WorkingDirectory=/Apps/AskMyChurch"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "ExecStart=/Apps/AskMyChurch/AskMyChurch3" | sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "RestartSec=10"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "Restart=Always"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "KillSignal=SIGINT"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "SyslogIdentifier=dotnet-AskMyChurch"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "Environment=ASPNETCORE_ENVIRONMENT=Production"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "[Install]"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo echo "WantedBy=multi-user.target"| sudo tee -a /etc/systemd/system/AskMyChurch.service
sudo systemctl enable AskMyChurch.service
sudo echo "echo Deploying publish.zip to AskMyChurch3" | tee -a /Apps/AskMyChurch3.Deploy.sh
sudo echo "systemctl stop AskMyChurch.service" | tee -a /Apps/AskMyChurch3.Deploy.sh
sudo echo "cd /Apps/AskMyChurch" | tee -a /Apps/AskMyChurch3.Deploy.sh
sudo echo "unzip -u -o /Apps/AskMyChurch3.zip" | tee -a /Apps/AskMyChurch3.Deploy.sh
sudo echo "systemctl start AskMyChurch.service" | tee -a /Apps/AskMyChurch3.Deploy.sh
sudo echo "exit 0" | tee -a /Apps/AskMyChurch3.Deploy.sh
# Install AskMarpleTown
echo
echo "Create AskMarpleTown service and enable it"
echo
sudo echo "[Unit]"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "Description=AskMarpleTown Website service"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "After=syslog.target"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "[Service]"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "User=root"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "WorkingDirectory=/Apps/AskMarpleTown"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "ExecStart=/Apps/AskMarpleTown/AskMarpleTown"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "RestartSec=10"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "Restart=Always"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "KillSignal=SIGINT"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "SyslogIdentifier=dotnet-AskMarpleTown"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "Environment=ASPNETCORE_ENVIRONMENT=Production"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "[Install]"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo echo "WantedBy=multi-user.target"| sudo tee -a /etc/systemd/system/AskMarpleTown.service
sudo systemctl enable AskMarpleTown.service
sudo echo "echo Deploying publish.zip to AskMarpleTown" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo echo "systemctl stop AskMarpleTown.service" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo echo "cd /Apps/AskMarpleTown" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo echo "unzip -u -o /Apps/AskMyStreet.zip" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo echo "systemctl start AskMarpleTown.service" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo echo "exit 0" | tee -a /Apps/AskMarpleTown.Deploy.sh
sudo chmod +x /Apps/*.sh
# Install Ebook Server - CalibreWeb
echo "Install CalibreWeb"
echo
sudo apt install calibre python3-pip python3-venv git -y
cd /Apps
sudo git clone https://github.com/janeczku/calibre-web.git
# sudo mkdir /Apps/calibre-web
sudo cd /Apps/calibre-web
sudo pip install calibreweb
sudo pip install calibreweb[metadata]
sudo pip install calibreweb[comics]
sudo pip install calibreweb[goodreads]
sudo echo "[Unit]" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "Description=Calibre-Web" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "[Service]" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "Type=simple" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "User=root" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "ExecStart=/usr/bin/python3 /Apps/calibre-web/cps.py" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "WorkingDirectory=/Apps/calibre-web" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "[Install]" | sudo tee -a /etc/systemd/system/calibre.service
sudo echo "WantedBy=multi-user.target" | sudo tee -a /etc/systemd/system/calibre.service
sudo systemctl enable calibre.service
# Install RainLoop webmail
cd /Apps/Rainloop
sudo apt install php7.4 php7.4-fpm -y
echo "<?php phpinfo();" > test.php
php7.4 test.php
curl -sL https://repository.rainloop.net/installer.php | php
# Tidy Up, notify me, and reboot
wget -O ./BuildComplete.sh https://gist.githubusercontent.com/PJTewkesbury/7227ef172ed1da7f8f0cd41f533565ce/raw/7215ccc990fecc230ad0bb0f6389b062eab21e58/BuildPiComplete.sh
chmod +x ./BuildComplete.sh
source "./BuildComplete.sh"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment