#!/bin/bash # ============================================================================ # scripts/nas-control.sh # D3RO Voice — NAS Docker Container Management Utility # ============================================================================ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" COMMAND="${1:-help}" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' echo -e "${CYAN}====================================================${NC}" echo -e "${CYAN} D3RO Voice — NAS Container Controller ${NC}" echo -e "${CYAN}====================================================${NC}" case "$COMMAND" in start|up) echo -e "${YELLOW}Starting D3RO Voice Cloud Service...${NC}" mkdir -p data docker compose up -d echo -e "${GREEN}D3RO Voice is running!${NC}" ;; stop|down) echo -e "${YELLOW}Stopping D3RO Voice Cloud Service...${NC}" docker compose down echo -e "${GREEN}D3RO Voice stopped.${NC}" ;; restart) echo -e "${YELLOW}Restarting D3RO Voice Cloud Service...${NC}" docker compose restart echo -e "${GREEN}D3RO Voice restarted successfully.${NC}" ;; status|ps) echo -e "${YELLOW}Container Status:${NC}" docker compose ps echo "" echo -e "${YELLOW}Health Check:${NC}" PORT=$(grep -E '^PORT=' .env 2>/dev/null | cut -d '=' -f2 || echo "5000") PORT=${PORT:-5000} if command -v curl &> /dev/null; then curl -s "http://localhost:$PORT/health" || echo -e "${RED}Failed to reach health endpoint on port $PORT${NC}" echo "" fi ;; logs) echo -e "${YELLOW}Showing live logs (Ctrl+C to exit)...${NC}" docker compose logs -f d3ro-api-server ;; backup) TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="d3ro_backup_${TIMESTAMP}.tar.gz" echo -e "${YELLOW}Creating database and configuration backup (${BACKUP_FILE})...${NC}" tar -czf "$BACKUP_FILE" data .env 2>/dev/null || tar -czf "$BACKUP_FILE" data echo -e "${GREEN}Backup saved to: ${SCRIPT_DIR}/${BACKUP_FILE}${NC}" ;; load) IMAGE_TAR="${2:-d3ro-voice-api.tar}" if [ -f "$IMAGE_TAR" ]; then echo -e "${YELLOW}Loading Docker image from $IMAGE_TAR...${NC}" docker load < "$IMAGE_TAR" echo -e "${GREEN}Image loaded successfully.${NC}" else echo -e "${RED}Image archive $IMAGE_TAR not found!${NC}" exit 1 fi ;; update) IMAGE_TAR="${2:-d3ro-voice-api.tar}" if [ -f "$IMAGE_TAR" ]; then echo -e "${YELLOW}Updating container from $IMAGE_TAR...${NC}" docker load < "$IMAGE_TAR" docker compose down docker compose up -d echo -e "${GREEN}D3RO Voice updated and restarted!${NC}" else echo -e "${RED}Image archive $IMAGE_TAR not found! Please place the new .tar file in this directory.${NC}" exit 1 fi ;; *) echo "Usage: ./nas-control.sh [command]" echo "" echo "Available Commands:" echo " start - Start the D3RO Voice service in the background" echo " stop - Stop the D3RO Voice service" echo " restart - Restart the container" echo " status - Check container status and ping health check" echo " logs - Follow container logs in real-time" echo " backup - Create a compressed backup of the SQLite database and settings" echo " load - Load docker image from d3ro-voice-api.tar" echo " update - Load new d3ro-voice-api.tar and recreate the container" echo "" ;; esac