Last active
January 16, 2023 10:08
-
-
Save PJTewkesbury/0ee506d9029fae99ea81f305a35ccf30 to your computer and use it in GitHub Desktop.
Build Server PI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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