73 lines
2.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Exit on any error
set -e
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
# Create icecast-bot user and group if they don't exist
if ! getent group icecast-bot >/dev/null; then
groupadd icecast-bot
fi
if ! getent passwd icecast-bot >/dev/null; then
useradd -r -g icecast-bot -s /bin/false icecast-bot
fi
# Create necessary directories
mkdir -p /etc/icecast-irc-bot
mkdir -p /var/log/icecast-irc-bot
mkdir -p /opt/icecast-irc-bot
# Set ownership
chown icecast-bot:icecast-bot /etc/icecast-irc-bot
chown icecast-bot:icecast-bot /var/log/icecast-irc-bot
chown icecast-bot:icecast-bot /opt/icecast-irc-bot
# Create and activate virtual environment
python3 -m venv /opt/icecast-irc-bot/venv
export VIRTUAL_ENV="/opt/icecast-irc-bot/venv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
unset PYTHONHOME
# Install Python dependencies in virtual environment
pip3 install --upgrade pip
pip3 install hatchling
pip3 install -r requirements.txt
pip3 install .
# Install manager script
cp icecast-irc-bot-manager.py /usr/local/bin/icecast-irc-bot-manager
chmod +x /usr/local/bin/icecast-irc-bot-manager
# Update manager script shebang to use venv Python
sed -i "1c#\!$VIRTUAL_ENV/bin/python3" /usr/local/bin/icecast-irc-bot-manager
# Install service file
cp icecast-irc-bot-manager.service /etc/systemd/system/
systemctl daemon-reload
# Copy example config if it doesn't exist
if [ ! -f /etc/icecast-irc-bot/config.yaml ]; then
cp config.yaml.example /etc/icecast-irc-bot/config.yaml
chown icecast-bot:icecast-bot /etc/icecast-irc-bot/config.yaml
chmod 640 /etc/icecast-irc-bot/config.yaml
fi
echo "Installation complete!"
echo
echo "Next steps:"
echo "1. Configure your bot(s) in /etc/icecast-irc-bot/config.yaml"
echo "2. Start the service: systemctl start icecast-irc-bot-manager"
echo "3. Enable at boot: systemctl enable icecast-irc-bot-manager"
echo
echo "Usage:"
echo "icecast-irc-bot-manager list # List running bots"
echo "icecast-irc-bot-manager start --config FILE # Start a bot"
echo "icecast-irc-bot-manager stop BOT_ID # Stop a bot"
echo "icecast-irc-bot-manager restart BOT_ID # Restart a bot"
echo "icecast-irc-bot-manager quiet BOT_ID # Disable song announcements"
echo "icecast-irc-bot-manager unquiet BOT_ID # Enable song announcements"