# ?? TradingBot - Deployment Checklist

Checklist completa per deployment sicuro e corretto su Unraid.

---

## ? Pre-Deployment

### Environment
- [ ] Unraid 6.10+ installato e aggiornato
- [ ] Docker service attivo e funzionante
- [ ] Internet connesso e stabile
- [ ] SSH access configurato
- [ ] Backup Unraid recente disponibile

### Network
- [ ] Porta 8888 disponibile (o alternativa scelta)
- [ ] Test porta: `netstat -tulpn | grep :8888`
- [ ] Firewall configurato correttamente
- [ ] IP Unraid noto: `192.168.30.23`

### Gitea Registry
- [ ] Account Gitea attivo
- [ ] Personal Access Token generato
- [ ] Login test: `docker login gitea.encke-hake.ts.net`
- [ ] Immagine disponibile in Packages

---

## ?? Installation

### Template Setup
- [ ] Template XML scaricato
  ```bash
  wget -O /boot/config/plugins/dockerMan/templates-user/TradingBot.xml \
    https://gitea.encke-hake.ts.net/Alby96/Encelado/raw/branch/main/TradingBot/deployment/unraid-template.xml
  ```
- [ ] Template visibile in Unraid UI
- [ ] Dropdown "TradingBot" disponibile

### Container Configuration
- [ ] **Name**: `TradingBot`
- [ ] **Repository**: `gitea.encke-hake.ts.net/alby96/encelado/tradingbot:latest`
- [ ] **Network**: Bridge
- [ ] **Port Mapping**: `8888:8080` (o custom)
  - Host Port: `8888` (modificabile)
  - Container Port: `8080` (FIXED)
- [ ] **Volume**: `/mnt/user/appdata/tradingbot:/app/data`
  - Access: Read/Write
- [ ] **Environment Variables**:
  - `ASPNETCORE_ENVIRONMENT=Production`
  - `ASPNETCORE_URLS=http://+:8080`
  - `TZ=Europe/Rome`

### First Start
- [ ] Click **Apply**
- [ ] Container pulls image successfully
- [ ] Container status: **running**
- [ ] No errors in logs: `docker logs TradingBot`

---

## ? Post-Installation Verification

### Container Health
- [ ] Container running: `docker ps | grep TradingBot`
- [ ] Port mapping correct: `docker port TradingBot`
  - Expected: `8080/tcp -> 0.0.0.0:8888`
- [ ] Logs healthy: `docker logs TradingBot --tail 50`
  - No errors or exceptions
  - "Now listening on: http://[::]:8080"

### WebUI Access
- [ ] WebUI icon visible in Unraid Docker tab
- [ ] Click WebUI icon opens browser
- [ ] Manual access works: `http://192.168.30.23:8888`
- [ ] Dashboard loads completely
- [ ] No JavaScript errors in browser console

### Functionality Test
- [ ] Bot can be started from UI
- [ ] Market data updates (check Dashboard)
- [ ] Settings can be modified and saved
- [ ] Assets can be enabled/disabled
- [ ] Trade history visible (if any previous data)

---

## ?? Persistence Verification

### Data Directory
- [ ] Volume created: `ls -la /mnt/user/appdata/tradingbot/`
- [ ] Directory writable: `touch /mnt/user/appdata/tradingbot/test && rm /mnt/user/appdata/tradingbot/test`

### Persistence Test
1. [ ] Start bot and execute some trades
2. [ ] Stop bot
3. [ ] Verify files exist:
   ```bash
   ls -lh /mnt/user/appdata/tradingbot/
   # Should show:
   # - trade-history.json
   # - active-positions.json
   # - settings.json
   ```
4. [ ] Stop container: `docker stop TradingBot`
5. [ ] Start container: `docker start TradingBot`
6. [ ] Verify data restored:
   - Trade count same in History page
   - Settings preserved
   - Active positions restored

### Backup Test
- [ ] Create backup:
  ```bash
  tar -czf tradingbot-backup-$(date +%Y%m%d).tar.gz \
    /mnt/user/appdata/tradingbot/
  ```
- [ ] Backup file created successfully
- [ ] Test restore (optional):
  ```bash
  tar -xzf tradingbot-backup-YYYYMMDD.tar.gz -C /tmp/
  # Verify files intact
  ```

---

## ?? Update Test

### Update Procedure
- [ ] Stop container
- [ ] Force Update in Unraid UI
- [ ] Wait for pull completion
- [ ] Start container
- [ ] Verify data persisted:
  - [ ] Trade history intact
  - [ ] Settings intact
  - [ ] Active positions intact

### Rollback Test (Optional)
- [ ] Tag current image before update
- [ ] Test update to new version
- [ ] If issues, rollback to previous tag
- [ ] Verify data still intact

---

## ?? Security Check

### Access Control
- [ ] Port 8888 not exposed to internet
- [ ] Only LAN/VPN access configured
- [ ] No default passwords used

### Data Protection
- [ ] AppData directory permissions correct
  ```bash
  ls -la /mnt/user/appdata/ | grep tradingbot
  # Should be owned by appropriate user
  ```
- [ ] Backup schedule configured (CA Backup plugin)
- [ ] Backup retention policy set

### Registry Security
- [ ] Gitea login required for pulls
- [ ] Personal Access Token secure
- [ ] No credentials in logs

---

## ?? Monitoring Setup

### Unraid Dashboard
- [ ] Container appears in Docker tab
- [ ] Auto-start enabled (optional)
- [ ] Resource limits configured (optional):
  ```
  --cpus="2.0" --memory="1g"
  ```

### Logs
- [ ] Know how to access logs:
  - Unraid UI: Docker tab ? TradingBot ? Logs icon
  - CLI: `docker logs TradingBot -f`
- [ ] No error messages in logs

### Notifications
- [ ] Unraid notifications enabled
- [ ] Email/Telegram configured (optional)

---

## ?? Troubleshooting Checklist

### If WebUI Not Accessible

- [ ] Check container running: `docker ps | grep TradingBot`
- [ ] Check port mapping: `docker port TradingBot`
- [ ] Test localhost: `curl http://localhost:8888/`
- [ ] Check firewall: `iptables -L | grep 8888`
- [ ] Check logs for errors: `docker logs TradingBot`
- [ ] Try different port if 8888 occupied

### If Data Not Persisting

- [ ] Volume mapping correct: `docker inspect TradingBot | grep -A5 Mounts`
- [ ] Directory exists: `ls -la /mnt/user/appdata/tradingbot/`
- [ ] Files being created: Monitor during bot run
- [ ] Permissions correct: `ls -la /mnt/user/appdata/tradingbot/`

### If Container Won't Start

- [ ] Check image pulled: `docker images | grep tradingbot`
- [ ] Check port not in use: `netstat -tulpn | grep :8888`
- [ ] Check disk space: `df -h`
- [ ] Review logs: `docker logs TradingBot`
- [ ] Try manual start: `docker start TradingBot`

---

## ?? Post-Deployment Tasks

### Documentation
- [ ] Note custom port if not 8888
- [ ] Document backup location
- [ ] Save deployment date
- [ ] Note Gitea image tag deployed

### Monitoring
- [ ] Add to monitoring dashboard (if any)
- [ ] Set up health check alerts (optional)
- [ ] Configure update notifications

### User Training
- [ ] Show how to access WebUI
- [ ] Explain Settings page
- [ ] Demonstrate how to view trades
- [ ] Explain data management (clear data)

---

## ?? Success Criteria

All of the following must be true:

? Container running and healthy  
? WebUI accessible and functional  
? Bot can start/stop from UI  
? Market data updates in real-time  
? Trades can be executed  
? Data persists across restarts  
? Backup can be created  
? No errors in logs  
? Resource usage acceptable  
? Update procedure tested

---

## ?? Support

If issues persist after completing this checklist:

1. **Check Documentation**:
   - [UNRAID_INSTALL.md](UNRAID_INSTALL.md)
   - [CHANGELOG.md](../CHANGELOG.md)

2. **Collect Diagnostic Info**:
   ```bash
   # Container info
   docker ps -a | grep TradingBot
   docker logs TradingBot --tail 100 > /tmp/tradingbot-logs.txt
   docker inspect TradingBot > /tmp/tradingbot-inspect.json
   
   # System info
   df -h
   free -h
   netstat -tulpn | grep 8888
   ```

3. **Open Issue**:
   - Repository: https://gitea.encke-hake.ts.net/Alby96/Encelado/issues
   - Include: Docker version, Unraid version, logs

---

**Last Updated**: 2024-12-21  
**Version**: 1.2.0  
**Status**: ? Production Ready
