diff --git a/SYSTEMD_SETUP.md b/SYSTEMD_SETUP.md new file mode 100644 index 0000000..b0aaae5 --- /dev/null +++ b/SYSTEMD_SETUP.md @@ -0,0 +1,74 @@ +# Systemd Service Setup + +This guide explains how to set up the Button Refresh Bot as a systemd service on Linux. + +## Prerequisites + +- Linux system with systemd +- Node.js installed +- Bot configured with `.env` file + +## Installation Steps + +1. **Edit the service file** + + Open `buttonrefreshbot.service` and update the following: + - `User`: Your Linux username (e.g., `michael`) + - `Group`: Your Linux group (usually same as username) + - `WorkingDirectory`: Full path to the project directory + - `EnvironmentFile`: Full path to your `.env` file + - `ExecStart`: Full path to `node` executable (find with `which node`) + + Example: + ```ini + User=michael + Group=michael + WorkingDirectory=/home/michael/Buttonrefreshbot + EnvironmentFile=/home/michael/Buttonrefreshbot/.env + ExecStart=/usr/bin/node /home/michael/Buttonrefreshbot/bot.js + ``` + +2. **Copy the service file to systemd directory** + + ```bash + sudo cp buttonrefreshbot.service /etc/systemd/system/ + ``` + +3. **Reload systemd daemon** + + ```bash + sudo systemctl daemon-reload + ``` + +4. **Enable the service (start on boot)** + + ```bash + sudo systemctl enable buttonrefreshbot.service + ``` + +5. **Start the service** + + ```bash + sudo systemctl start buttonrefreshbot.service + ``` + +6. **Check service status** + + ```bash + sudo systemctl status buttonrefreshbot.service + ``` + +## Useful Commands + +- **View logs**: `sudo journalctl -u buttonrefreshbot.service -f` +- **Stop service**: `sudo systemctl stop buttonrefreshbot.service` +- **Restart service**: `sudo systemctl restart buttonrefreshbot.service` +- **Disable auto-start**: `sudo systemctl disable buttonrefreshbot.service` + +## Troubleshooting + +- If the service fails to start, check logs: `sudo journalctl -u buttonrefreshbot.service -n 50` +- Ensure the `.env` file has correct permissions and contains `BOT_TOKEN` +- Verify Node.js path is correct: `which node` +- Check file permissions: the service user must have read access to all project files + diff --git a/buttonrefreshbot.service b/buttonrefreshbot.service new file mode 100644 index 0000000..e15481b --- /dev/null +++ b/buttonrefreshbot.service @@ -0,0 +1,29 @@ +[Unit] +Description=Button Refresh Bot - Telegram bot that removes reply keyboard buttons +After=network.target + +[Service] +Type=simple +# Update these to match your system user and group +User=YOUR_USERNAME +Group=YOUR_GROUP +# Update this to the absolute path of your project directory +WorkingDirectory=/path/to/Buttonrefreshbot +Environment="NODE_ENV=production" +# Update this path to point to your .env file +EnvironmentFile=/path/to/Buttonrefreshbot/.env +# Update this path to your node executable (use 'which node' to find it) +ExecStart=/usr/bin/node /path/to/Buttonrefreshbot/bot.js +Restart=always +RestartSec=10 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=buttonrefreshbot + +# Security settings +NoNewPrivileges=true +PrivateTmp=true + +[Install] +WantedBy=multi-user.target +