Files
UptimeKuma-DiscordBot/DOCKER_SETUP.md
HRiggs 04aab1c460
Some checks failed
Build and Publish Docker Images / build-and-push (push) Failing after 6m30s
Test Docker Compose Setup / test-compose (push) Failing after 30s
Test Docker Compose Setup / lint-dockerfiles (push) Failing after 34s
Test Docker Compose Setup / validate-compose (push) Failing after 12s
Build and Publish Docker Images / security-scan (push) Has been skipped
Build and Publish Docker Images / notify (push) Failing after 7s
docker
2025-10-06 00:13:07 -04:00

237 lines
5.3 KiB
Markdown

# Docker Setup for UptimeKuma Discord Bot
This guide will help you containerize and run the UptimeKuma Discord Bot using Docker and Docker Compose.
## Prerequisites
- Docker and Docker Compose installed on your system
- Uptime Kuma instance running and accessible
- Discord bot application created
## Quick Start
1. **Clone the repository**
```bash
git clone <repository-url>
cd UptimeKuma-DiscordBot
```
2. **Configure environment variables**
```bash
cp env.example .env
```
Edit the `.env` file with your actual values:
```env
# Discord Bot Configuration
DISCORD_TOKEN=your_discord_bot_token_here
GUILD_ID=your_discord_guild_id_here
CHANNEL_ID=your_discord_channel_id_here
CLIENT_ID=your_discord_client_id_here
UPDATE_TIME=30
# Uptime Kuma Configuration
UPTIME_KUMA_URL=https://your-uptime-kuma-instance.com/metrics
UPTIME_KUMA_API_KEY=your_uptime_kuma_api_key_here
```
3. **Build and start the containers**
```bash
docker-compose up -d
```
4. **Check the logs**
```bash
docker-compose logs -f
```
## Configuration Details
### Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `DISCORD_TOKEN` | Your Discord bot token | Yes |
| `GUILD_ID` | Discord server (guild) ID | Yes |
| `CHANNEL_ID` | Discord channel ID for status messages | Yes |
| `CLIENT_ID` | Discord bot client ID | Yes |
| `UPDATE_TIME` | Update frequency in seconds (default: 30) | No |
| `UPTIME_KUMA_URL` | Full URL to your Uptime Kuma metrics endpoint | Yes |
| `UPTIME_KUMA_API_KEY` | API key from Uptime Kuma dashboard | Yes |
### Services
#### Discord Bot (`discord-bot`)
- **Image**: Built from `Bot/Dockerfile`
- **Port**: Internal only (no external port)
- **Health Check**: Node.js process check
- **Dependencies**: `web-backend`
#### Web Backend (`web-backend`)
- **Image**: Built from `Web/Dockerfile`
- **Port**: 8080 (external) → 80 (internal)
- **Health Check**: HTTP endpoint check
- **Access**: `http://localhost:8080/back-end.php`
## Docker Commands
### Build and Start
```bash
# Build and start all services
docker-compose up -d
# Build and start with rebuild
docker-compose up -d --build
# Start specific service
docker-compose up -d discord-bot
```
### Management
```bash
# View logs
docker-compose logs -f
docker-compose logs -f discord-bot
docker-compose logs -f web-backend
# Stop services
docker-compose down
# Stop and remove volumes
docker-compose down -v
# Restart services
docker-compose restart
# Update services
docker-compose pull
docker-compose up -d
```
### Debugging
```bash
# Execute shell in running container
docker-compose exec discord-bot sh
docker-compose exec web-backend bash
# View container status
docker-compose ps
# View resource usage
docker stats
```
## Troubleshooting
### Common Issues
1. **Bot not connecting to Discord**
- Verify `DISCORD_TOKEN` is correct
- Check Discord bot permissions
- Ensure bot is invited to the server
2. **Backend not responding**
- Verify `UPTIME_KUMA_URL` and `UPTIME_KUMA_API_KEY`
- Check Uptime Kuma instance accessibility
- Test API endpoint manually: `curl http://localhost:8080/back-end.php`
3. **Permission errors**
- Ensure Docker has proper permissions
- Check file ownership in mounted volumes
4. **Container health checks failing**
- Check logs: `docker-compose logs`
- Verify all environment variables are set
- Test individual services
### Health Checks
Both services include health checks:
- **Discord Bot**: Checks if Node.js process is running
- **Web Backend**: Checks if PHP endpoint responds
View health status:
```bash
docker-compose ps
```
### Logs
Monitor logs in real-time:
```bash
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f discord-bot
docker-compose logs -f web-backend
# Last 100 lines
docker-compose logs --tail=100
```
## Security Considerations
- Both containers run as non-root users
- Environment variables are used instead of hardcoded secrets
- Network isolation between services
- Health checks for monitoring
## Production Deployment
For production deployment:
1. **Use Docker secrets** for sensitive data
2. **Set up reverse proxy** (nginx/traefik) for SSL termination
3. **Configure log rotation** and monitoring
4. **Use Docker Swarm or Kubernetes** for orchestration
5. **Set up backup strategies** for persistent data
### Example Production docker-compose.yml
```yaml
version: '3.8'
services:
discord-bot:
# ... existing config ...
deploy:
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
secrets:
- discord_token
- uptime_kuma_api_key
web-backend:
# ... existing config ...
deploy:
replicas: 2
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
secrets:
discord_token:
external: true
uptime_kuma_api_key:
external: true
```
## Support
For issues and questions:
- Check the logs first: `docker-compose logs -f`
- Verify configuration: `docker-compose config`
- Test individual services
- Review this documentation
## Contributing
When contributing Docker-related changes:
1. Test with `docker-compose up -d --build`
2. Verify health checks pass
3. Test with different environment configurations
4. Update this documentation if needed