Add uv support, systemd service, and deployment tooling
- pyproject.toml: uv-native project definition (replaces requirements.txt for uv users) - requirements.txt: kept for pip compatibility - deploy/jigaido-bot.service: systemd service file (copy to /etc/systemd/system/) - deploy/setup.sh: automated deployment script - README.md: updated with uv instructions, tmux, and systemd setup
This commit is contained in:
30
apps/telegram-bot/deploy/jigaido-bot.service
Normal file
30
apps/telegram-bot/deploy/jigaido-bot.service
Normal file
@@ -0,0 +1,30 @@
|
||||
[Unit]
|
||||
Description=JIGAIDO Telegram Bot
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
# Run as the user who owns the repo. Change USER and GROUP as needed.
|
||||
User=shoko
|
||||
Group=shoko
|
||||
|
||||
# Path to this app directory
|
||||
WorkingDirectory=/home/shoko/repositories/jigaido/apps/telegram-bot
|
||||
|
||||
# Load environment from .env in the WorkingDirectory
|
||||
EnvironmentFile=/home/shoko/repositories/jigaido/apps/telegram-bot/.env
|
||||
|
||||
# Start jigaido using uv. Change the path to uv if needed (e.g. /home/user/.local/bin/uv).
|
||||
# If uv is not in PATH, use the full path: ExecStart=/home/shoko/.local/bin/uv run python bot.py
|
||||
ExecStart=/usr/local/bin/uv run python bot.py
|
||||
|
||||
# Restart on crash, wait 5s before restarting
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
# Logging
|
||||
StandardOutput=append:/home/shoko/repositories/jigaido/apps/telegram-bot/bot.log
|
||||
StandardError=append:/home/shoko/repositories/jigaido/apps/telegram-bot/bot.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
56
apps/telegram-bot/deploy/setup.sh
Normal file
56
apps/telegram-bot/deploy/setup.sh
Normal file
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
# JIGAIDO Telegram Bot — Deployment setup script
|
||||
# Run once on a fresh server to set everything up.
|
||||
|
||||
set -e
|
||||
|
||||
BOT_DIR="/home/shoko/repositories/jigaido/apps/telegram-bot"
|
||||
SERVICE_NAME="jigaido-bot"
|
||||
SERVICE_FILE="$BOT_DIR/deploy/$SERVICE_NAME.service"
|
||||
SYSTEMD_DIR="/etc/systemd/system"
|
||||
|
||||
echo "=== JIGAIDO Bot Setup ==="
|
||||
|
||||
# 1. Check for uv
|
||||
if ! command -v uv &> /dev/null; then
|
||||
echo "Installing uv..."
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
fi
|
||||
|
||||
# 2. Check for bot token
|
||||
if [ -z "$JIGAIDO_BOT_TOKEN" ]; then
|
||||
echo "ERROR: JIGAIDO_BOT_TOKEN is not set."
|
||||
echo "Get a token from @BotFather on Telegram, then run:"
|
||||
echo " export JIGAIDO_BOT_TOKEN='your:token'"
|
||||
echo " $0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 3. Create .env from example if it doesn't exist
|
||||
if [ ! -f "$BOT_DIR/.env" ]; then
|
||||
cp "$BOT_DIR/.env.example" "$BOT_DIR/.env"
|
||||
echo "Created .env — edit it and add your JIGAIDO_BOT_TOKEN"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 4. Install dependencies (uv creates venv automatically)
|
||||
cd "$BOT_DIR"
|
||||
uv sync
|
||||
|
||||
# 5. Install systemd service
|
||||
echo "Installing systemd service..."
|
||||
sudo cp "$SERVICE_FILE" "$SYSTEMD_DIR/"
|
||||
sudo sed -i "s|/home/shoko/repositories/jigaido|$BOT_DIR|g" "$SYSTEMD_DIR/$SERVICE_NAME.service"
|
||||
|
||||
# 6. Reload systemd, enable and start
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable "$SERVICE_NAME"
|
||||
sudo systemctl start "$SERVICE_NAME"
|
||||
|
||||
echo ""
|
||||
echo "=== Done ==="
|
||||
echo "Bot is running. Check status with: sudo systemctl status $SERVICE_NAME"
|
||||
echo "View logs with: journalctl -u $SERVICE_NAME -f"
|
||||
echo "Stop with: sudo systemctl stop $SERVICE_NAME"
|
||||
echo "Restart with: sudo systemctl restart $SERVICE_NAME"
|
||||
Reference in New Issue
Block a user