Update client setup

- get user input for client config
- update pulseaudio setup to run for all users
- add op25 installer
This commit is contained in:
Logan Cusano
2023-08-05 03:11:32 -04:00
parent 1078faa766
commit e0d1a4a2fe

View File

@@ -5,16 +5,38 @@ if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
echo "----- Starting Radio Node Client Install Script -----"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
ls -ld $SCRIPT_DIR | awk '{print $3}' >> ./config/installerName
# Copy the example env file
cp .env.example .env
# Setup user for service
useradd -M RadioNode
usermod -s -L RadioNode
echo "----- Collecting Setup Information -----"
# Change the ownership of the directory to the service user
chown RadioNode -R $SCRIPT_DIR
# Ask the user for input and store in variables
echo "\t \\Client Config"
read -p "Enter Node Name: " nodeName
read -p "Enter Node IP: " nodeIP
read -p "Enter Node Port: " nodePort
read -p "Enter Node Location: " nodeLocation
read -p "Enter Audio Device ID: " audioDeviceID
# Update the values in the env file using sed
sed -i "s/^AUDIO_DEVICE_ID=\".*\"$/AUDIO_DEVICE_ID=\"$audioDeviceID\"/" .env
sed -i "s/^CLIENT_NAME=\".*\"$/CLIENT_NAME=\"$nodeName\"/" env
sed -i "s/^CLIENT_IP=\".*\"$/CLIENT_IP=\"$nodeIP\"/" env
sed -i "s/^CLIENT_PORT=.*$/CLIENT_PORT=$nodePort/" env
sed -i "s/^CLIENT_LOCATION=\".*\"$/CLIENT_LOCATION=\"$nodeLocation\"/" env
# Display the updated values
echo "----- Config file has been updated -----"
echo "----- Start of Config File -----"
cat env
echo "----- End of Config File -----"
echo "----- Getting Dependencies -----"
# Check for updates
apt-get update
@@ -27,16 +49,44 @@ apt-get update
apt-get upgrade -y
# Install the necessary packages
apt-get install -y nodejs portaudio19-dev libportaudio2 libpulse-dev pulseaudio apulse python3 python3-pip
# Ensure pulse audio is running
pulseaudio
apt-get install -y nodejs portaudio19-dev libportaudio2 libpulse-dev pulseaudio apulse python3 python3-pip git
# Install the node packages from the project
npm i
# Install the python packages needed for the bot
pip install -r
pip install -r ./pdab/requirements.txt
echo "----- Setting up Pulse Audio -----"
# Ensure pulse audio is running as system so the service can see the audio device
systemctl --global disable pulseaudio.service pulseaudio.socket
# Update the PulseAudio config to disable autospawning
sed -i 's/autospawn = .*$/autospawn = no/' /etc/pulse/client.conf
# Add the system PulseAudio service
echo "[Unit]
Description=PulseAudio system server
[Service]
Type=notify
ExecStart=pulseaudio --daemonize=no --system --realtime --log-target=journal
[Install]
WantedBy=multi-user.target" >> /etc/systemd/system/PulseAudio.service
# Add the root user to the pulse-access group
usermod -aG pulse-access root
usermod -aG pulse-access
# Enable the PulseAudio service
systemctl enable PulseAudio.service
# Start the PulseAudio service
systemctl start PulseAudio.service
echo "----- Setting up Radio Node Service -----"
# Setup bot service
echo "[Unit]
@@ -44,32 +94,70 @@ Description=Radio Node Service
After=network.target
[Service]
WorkingDirectory="$SCRIPT_DIR"
WorkingDirectory=\"$SCRIPT_DIR\"
ExecStart=/usr/bin/node .
Restart=always
RestartDelay=10
User=RadioNode
Environment=DEBUG='client:*'
Environment=\"DEBUG='client:*'\"
[Install]
WantedBy=multi-user.target" >> /etc/systemd/system/RadioNode.service
echo "----- Setting up Radio Node Update Service -----"
# Setup bot update service
echo "[Unit]
Description=Radio Node Updater Service
After=network.target
[Service]
WorkingDirectory="$SCRIPT_DIR"
WorkingDirectory=\"$SCRIPT_DIR\"
ExecStart=/usr/bin/bash update.sh
Restart=on-failure
User=RadioNode
[Install]
WantedBy=multi-user.target" >> /etc/systemd/system/RadioNodeUpdater.service
# Enable the service
# Install OP25
echo "----- Installing OP25 from Source -----"
# Clone the OP25 Git
cd /opt/
git clone https://github.com/boatbod/op25.git
cd op25
# Run the OP25 install script
bash ./install.sh
# Create the config file for the client or user to update later
cp /opt/op25/op25/gr-op25_repeater/apps/p25_rtl_example.json /opt/op25/op25/gr-op25_repeater/apps/radioNodeOP25Config.json
# Create the OP25 service
echo "[Unit]
Description=OP25 Service
After=network.target
[Service]
WorkingDirectory=\"/opt/op25/op25/gr-op25_repeater/apps\"
ExecStart=./multi_rx.py -c radioNodeOP25Config.json
Restart=always
[Install]
WantedBy=multi-user.target" >> /etc/systemd/system/OP25.service
echo "----- OP25 Setup Complete -----"
# Enable the OP25 service, don't start it though as the user needs to config
systemctl enable OP25.service
echo "----- OP25 Enabled; Please ensure to update the configuration and start the service -----"
# Move back to the directory that the user started in (might not be needed?)
cd $SCRIPT_DIR
# Enable the Radio Node service
systemctl enable RadioNode.service
# Start the service
systemctl start RadioNode.service
# Start the Radio Nodeservice
echo "----- Starting the Radio Node Service -----"
systemctl start RadioNode.service
echo "----- Setup Complete! -----"