create daemon
This commit is contained in:
130
thrower_daemon/install.sh
Executable file
130
thrower_daemon/install.sh
Executable file
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Superball Thrower Daemon Installation Script
|
||||
# This script installs and configures the Superball Thrower daemon
|
||||
|
||||
set -e
|
||||
|
||||
echo "=== Superball Thrower Daemon Installation ==="
|
||||
echo
|
||||
|
||||
# Check if running as root
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo "This script should not be run as root for security reasons."
|
||||
echo "Please run as a regular user with sudo privileges."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Node.js is installed
|
||||
if ! command -v node &> /dev/null; then
|
||||
echo "Error: Node.js is not installed."
|
||||
echo "Please install Node.js 16 or later from https://nodejs.org/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check Node.js version
|
||||
NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||
if [ "$NODE_VERSION" -lt 16 ]; then
|
||||
echo "Error: Node.js version 16 or later is required."
|
||||
echo "Current version: $(node --version)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Node.js $(node --version) detected"
|
||||
|
||||
# Check if npm is installed
|
||||
if ! command -v npm &> /dev/null; then
|
||||
echo "Error: npm is not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ npm $(npm --version) detected"
|
||||
|
||||
# Get the directory where this script is located
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DAEMON_DIR="$SCRIPT_DIR"
|
||||
|
||||
echo "Installing to: $DAEMON_DIR"
|
||||
echo
|
||||
|
||||
# Install Node.js dependencies
|
||||
echo "Installing Node.js dependencies..."
|
||||
cd "$DAEMON_DIR"
|
||||
npm install
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to install Node.js dependencies"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Dependencies installed successfully"
|
||||
echo
|
||||
|
||||
# Create user for daemon (if it doesn't exist)
|
||||
DAEMON_USER="superball"
|
||||
if ! id "$DAEMON_USER" &>/dev/null; then
|
||||
echo "Creating system user: $DAEMON_USER"
|
||||
sudo useradd --system --no-create-home --shell /bin/false "$DAEMON_USER"
|
||||
echo "✓ User $DAEMON_USER created"
|
||||
else
|
||||
echo "✓ User $DAEMON_USER already exists"
|
||||
fi
|
||||
|
||||
# Create directories
|
||||
echo "Creating directories..."
|
||||
sudo mkdir -p /var/log/superball
|
||||
sudo mkdir -p /etc/superball
|
||||
sudo chown "$DAEMON_USER:$DAEMON_USER" /var/log/superball
|
||||
echo "✓ Directories created"
|
||||
|
||||
# Copy configuration file
|
||||
if [ ! -f "/etc/superball/config.json" ]; then
|
||||
echo "Installing default configuration..."
|
||||
sudo cp "$DAEMON_DIR/config.json" /etc/superball/config.json
|
||||
sudo chown "$DAEMON_USER:$DAEMON_USER" /etc/superball/config.json
|
||||
sudo chmod 600 /etc/superball/config.json
|
||||
echo "✓ Configuration installed to /etc/superball/config.json"
|
||||
echo "⚠️ IMPORTANT: Edit /etc/superball/config.json with your private key and settings"
|
||||
else
|
||||
echo "✓ Configuration already exists at /etc/superball/config.json"
|
||||
fi
|
||||
|
||||
# Install systemd service
|
||||
echo "Installing systemd service..."
|
||||
sudo cp "$DAEMON_DIR/superball-thrower.service" /etc/systemd/system/
|
||||
sudo sed -i "s|/path/to/thrower_daemon|$DAEMON_DIR|g" /etc/systemd/system/superball-thrower.service
|
||||
sudo systemctl daemon-reload
|
||||
echo "✓ Systemd service installed"
|
||||
|
||||
# Set permissions
|
||||
echo "Setting permissions..."
|
||||
sudo chown -R "$DAEMON_USER:$DAEMON_USER" "$DAEMON_DIR"
|
||||
sudo chmod +x "$DAEMON_DIR/daemon.js"
|
||||
echo "✓ Permissions set"
|
||||
|
||||
echo
|
||||
echo "=== Installation Complete ==="
|
||||
echo
|
||||
echo "Next steps:"
|
||||
echo "1. Edit the configuration file:"
|
||||
echo " sudo nano /etc/superball/config.json"
|
||||
echo
|
||||
echo "2. Add your private key and configure relays"
|
||||
echo
|
||||
echo "3. Enable and start the service:"
|
||||
echo " sudo systemctl enable superball-thrower"
|
||||
echo " sudo systemctl start superball-thrower"
|
||||
echo
|
||||
echo "4. Check service status:"
|
||||
echo " sudo systemctl status superball-thrower"
|
||||
echo
|
||||
echo "5. View logs:"
|
||||
echo " sudo journalctl -u superball-thrower -f"
|
||||
echo
|
||||
echo "Configuration file location: /etc/superball/config.json"
|
||||
echo "Log file location: /var/log/superball/daemon.log"
|
||||
echo "Service name: superball-thrower"
|
||||
echo
|
||||
echo "⚠️ SECURITY WARNING:"
|
||||
echo " Make sure to secure your private key in the configuration file!"
|
||||
echo " The config file should only be readable by the superball user."
|
||||
Reference in New Issue
Block a user