Document git-based deployment flow and update scripts
- Add comprehensive deployment architecture documentation to DEPLOYMENT.md - Include ASCII diagram showing local → Gitea → Unraid flow - Document all three deployment scripts with examples - Update scripts to use root@192.168.2.61 for SSH authentication - Add automatic SSH config setup in deploy.sh for git server port 28 - Include troubleshooting section for common deployment issues 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
150
DEPLOYMENT.md
150
DEPLOYMENT.md
@@ -181,6 +181,156 @@ docker rm discord-stock-bot
|
|||||||
|
|
||||||
## Unraid Deployment
|
## Unraid Deployment
|
||||||
|
|
||||||
|
### Automated Git-Based Deployment (Recommended)
|
||||||
|
|
||||||
|
This project includes automated deployment scripts for seamless deployment to Unraid via git.
|
||||||
|
|
||||||
|
#### Architecture Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────┐ git push ┌──────────────────┐
|
||||||
|
│ Local Machine │ ─────────────────> │ Gitea Server │
|
||||||
|
│ Development │ │ (port 28) │
|
||||||
|
└────────┬────────┘ └────────┬─────────┘
|
||||||
|
│ │
|
||||||
|
│ ./deploy.sh │
|
||||||
|
│ (SSH commands) │
|
||||||
|
│ │
|
||||||
|
v │
|
||||||
|
┌─────────────────┐ git pull │
|
||||||
|
│ Unraid Server │ <───────────────────────────┘
|
||||||
|
│ 192.168.2.61 │
|
||||||
|
│ │
|
||||||
|
│ docker compose │
|
||||||
|
│ up --build -d │
|
||||||
|
└─────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Deployment Scripts
|
||||||
|
|
||||||
|
**1. `setup-unraid.sh`** - One-time initial setup
|
||||||
|
- Configures SSH keys on Unraid for git authentication
|
||||||
|
- Adds git.michaelsimard.ca:28 to SSH config
|
||||||
|
- Copies .env file to Unraid
|
||||||
|
- Tests git connectivity
|
||||||
|
|
||||||
|
**2. `deploy.sh`** - Deploy/update the bot
|
||||||
|
- SSHs into Unraid
|
||||||
|
- Configures git server SSH settings (port 28)
|
||||||
|
- Clones repository (first run) or pulls latest changes
|
||||||
|
- Builds and starts Docker container
|
||||||
|
- Shows deployment status
|
||||||
|
|
||||||
|
**3. `manage.sh`** - Daily operations
|
||||||
|
- `./manage.sh logs` - View live container logs
|
||||||
|
- `./manage.sh status` - Check container status
|
||||||
|
- `./manage.sh restart` - Restart the bot
|
||||||
|
- `./manage.sh stop` - Stop the bot
|
||||||
|
- `./manage.sh start` - Start the bot
|
||||||
|
- `./manage.sh rebuild` - Rebuild and restart
|
||||||
|
- `./manage.sh shell` - SSH to Unraid in bot directory
|
||||||
|
|
||||||
|
#### Deployment Process
|
||||||
|
|
||||||
|
**Initial Setup (one-time):**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Ensure you have local .env configured
|
||||||
|
cp .env.example .env
|
||||||
|
# Edit .env with your credentials
|
||||||
|
|
||||||
|
# 2. Run initial setup
|
||||||
|
./setup-unraid.sh
|
||||||
|
|
||||||
|
# This will:
|
||||||
|
# - Configure SSH on Unraid for git server (port 28)
|
||||||
|
# - Generate SSH key on Unraid if needed
|
||||||
|
# - Display public key to add to Gitea
|
||||||
|
# - Copy .env to Unraid server
|
||||||
|
# - Test git connectivity
|
||||||
|
```
|
||||||
|
|
||||||
|
**Deploy the Bot:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Deploy to Unraid
|
||||||
|
./deploy.sh
|
||||||
|
|
||||||
|
# This will:
|
||||||
|
# - SSH into Unraid (root@192.168.2.61)
|
||||||
|
# - Ensure git SSH config is set (port 28)
|
||||||
|
# - Clone or pull latest code from Gitea
|
||||||
|
# - Build Docker image
|
||||||
|
# - Start container in background
|
||||||
|
```
|
||||||
|
|
||||||
|
**Manage the Bot:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# View logs
|
||||||
|
./manage.sh logs
|
||||||
|
|
||||||
|
# Check status
|
||||||
|
./manage.sh status
|
||||||
|
|
||||||
|
# Restart after config changes
|
||||||
|
./manage.sh restart
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Update Workflow
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Make changes locally
|
||||||
|
vim bot.py
|
||||||
|
|
||||||
|
# 2. Commit and push to git
|
||||||
|
git add .
|
||||||
|
git commit -m "Update feature"
|
||||||
|
git push
|
||||||
|
|
||||||
|
# 3. Deploy to Unraid
|
||||||
|
./deploy.sh
|
||||||
|
|
||||||
|
# 4. Verify deployment
|
||||||
|
./manage.sh logs
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Configuration Details
|
||||||
|
|
||||||
|
- **Unraid Host**: `root@192.168.2.61`
|
||||||
|
- **Deployment Path**: `/mnt/user/docker/custom-dockers/discord-stock-bot`
|
||||||
|
- **Git Repository**: `git@git.michaelsimard.ca:msimard/discord-stock-bot.git`
|
||||||
|
- **Git Server Port**: 28 (configured in SSH config)
|
||||||
|
|
||||||
|
#### Troubleshooting Automated Deployment
|
||||||
|
|
||||||
|
**SSH Connection Issues:**
|
||||||
|
```bash
|
||||||
|
# Test SSH connection
|
||||||
|
ssh root@192.168.2.61
|
||||||
|
|
||||||
|
# Test git access from Unraid
|
||||||
|
ssh root@192.168.2.61 "git ls-remote git@git.michaelsimard.ca:msimard/discord-stock-bot.git HEAD"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Git Authentication Fails:**
|
||||||
|
```bash
|
||||||
|
# Re-run setup to regenerate keys
|
||||||
|
./setup-unraid.sh
|
||||||
|
|
||||||
|
# Manually add SSH key to Gitea:
|
||||||
|
# https://git.michaelsimard.ca/user/settings/keys
|
||||||
|
```
|
||||||
|
|
||||||
|
**Container Won't Start:**
|
||||||
|
```bash
|
||||||
|
# Check .env exists on Unraid
|
||||||
|
ssh root@192.168.2.61 "cat /mnt/user/docker/custom-dockers/discord-stock-bot/.env"
|
||||||
|
|
||||||
|
# View detailed logs
|
||||||
|
./manage.sh logs
|
||||||
|
```
|
||||||
|
|
||||||
### Method 1: Docker Compose
|
### Method 1: Docker Compose
|
||||||
|
|
||||||
1. Copy the project directory to your Unraid server:
|
1. Copy the project directory to your Unraid server:
|
||||||
|
|||||||
15
deploy.sh
15
deploy.sh
@@ -4,7 +4,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
UNRAID_HOST="${UNRAID_HOST:-192.168.2.61}"
|
UNRAID_HOST="${UNRAID_HOST:-root@192.168.2.61}"
|
||||||
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
||||||
GIT_REPO="git@git.michaelsimard.ca:msimard/discord-stock-bot.git"
|
GIT_REPO="git@git.michaelsimard.ca:msimard/discord-stock-bot.git"
|
||||||
|
|
||||||
@@ -13,6 +13,19 @@ echo "Deploying discord-stock-bot to ${UNRAID_HOST}..."
|
|||||||
ssh ${UNRAID_HOST} bash << EOF
|
ssh ${UNRAID_HOST} bash << EOF
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# Ensure SSH config for git server (port 28)
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
chmod 700 ~/.ssh
|
||||||
|
if ! grep -q "^Host git.michaelsimard.ca" ~/.ssh/config 2>/dev/null; then
|
||||||
|
echo "Configuring SSH for git.michaelsimard.ca (port 28)..."
|
||||||
|
cat >> ~/.ssh/config << 'SSHCONFIG'
|
||||||
|
|
||||||
|
Host git.michaelsimard.ca
|
||||||
|
Port 28
|
||||||
|
SSHCONFIG
|
||||||
|
chmod 600 ~/.ssh/config
|
||||||
|
fi
|
||||||
|
|
||||||
# Clone or pull repository
|
# Clone or pull repository
|
||||||
if [ -d "${REMOTE_PATH}/.git" ]; then
|
if [ -d "${REMOTE_PATH}/.git" ]; then
|
||||||
echo "Repository exists, pulling latest changes..."
|
echo "Repository exists, pulling latest changes..."
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# manage.sh - Manage discord-stock-bot on Unraid
|
# manage.sh - Manage discord-stock-bot on Unraid
|
||||||
|
|
||||||
UNRAID_HOST="${UNRAID_HOST:-192.168.2.61}"
|
UNRAID_HOST="${UNRAID_HOST:-root@192.168.2.61}"
|
||||||
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
||||||
|
|
||||||
CMD="$1"
|
CMD="$1"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
UNRAID_HOST="${UNRAID_HOST:-192.168.2.61}"
|
UNRAID_HOST="${UNRAID_HOST:-root@192.168.2.61}"
|
||||||
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
REMOTE_PATH="/mnt/user/docker/custom-dockers/discord-stock-bot"
|
||||||
|
|
||||||
echo "Setting up Unraid server for git-based deployment..."
|
echo "Setting up Unraid server for git-based deployment..."
|
||||||
|
|||||||
Reference in New Issue
Block a user