Spaces:
Sleeping
Sleeping
| # MorphGuard Development Environment Setup Guide | |
| This guide will help you set up your MorphGuard development environment and optionally migrate to new storage. | |
| ## Table of Contents | |
| 1. [Quick Start (Current Location)](#quick-start-current-location) | |
| 2. [Setting Up New SSDs](#setting-up-new-ssds) | |
| 3. [Migrating to New Storage](#migrating-to-new-storage) | |
| 4. [Troubleshooting](#troubleshooting) | |
| --- | |
| ## Quick Start (Current Location) | |
| If you want to start developing immediately at the current location (`/home/juanquy/dev/MorphGuard`): | |
| ### Step 1: Make Scripts Executable | |
| ```bash | |
| cd /home/juanquy/dev/MorphGuard | |
| chmod +x setup_complete_dev_environment.sh | |
| chmod +x migrate_to_new_storage.sh | |
| ``` | |
| ### Step 2: Run Complete Setup | |
| ```bash | |
| sudo bash setup_complete_dev_environment.sh | |
| ``` | |
| This will: | |
| - Install all system dependencies | |
| - Install Python 3.12 | |
| - Install PostgreSQL and TimescaleDB | |
| - Set up virtual environment with all packages | |
| - Download AI models | |
| - Install Grafana (optional) | |
| - Run validation tests | |
| **Estimated time:** 30-60 minutes (depending on internet speed) | |
| ### Step 3: Start Development | |
| After setup completes: | |
| ```bash | |
| ./start_dev.sh | |
| ``` | |
| Then visit: `http://localhost:5000` | |
| --- | |
| ## Setting Up New SSDs | |
| When you install your 2x 500GB SSDs, follow these steps: | |
| ### Step 1: Physical Installation | |
| 1. Power off your computer | |
| 2. Install the 2x 500GB SSDs | |
| 3. Power on and boot into your OS | |
| ### Step 2: Format and Mount SSDs | |
| #### Option A: Single Large Volume (RAID 0 - Fastest, 1TB total) | |
| **⚠️ Warning:** RAID 0 provides no redundancy. If one drive fails, all data is lost. | |
| ```bash | |
| # Install mdadm | |
| sudo apt install mdadm | |
| # Identify your new drives (e.g., /dev/sdb and /dev/sdc) | |
| lsblk | |
| # Create RAID 0 array | |
| sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc | |
| # Create filesystem | |
| sudo mkfs.ext4 -F /dev/md0 | |
| # Create mount point | |
| sudo mkdir -p /mnt/morphguard-storage | |
| # Mount the array | |
| sudo mount /dev/md0 /mnt/morphguard-storage | |
| # Add to fstab for automatic mounting | |
| echo "/dev/md0 /mnt/morphguard-storage ext4 defaults 0 2" | sudo tee -a /etc/fstab | |
| # Save RAID configuration | |
| sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf | |
| sudo update-initramfs -u | |
| ``` | |
| #### Option B: Two Separate Volumes (Safe, 500GB each) | |
| ```bash | |
| # Identify your new drives | |
| lsblk | |
| # Format first drive (adjust /dev/sdb to your actual device) | |
| sudo mkfs.ext4 /dev/sdb | |
| sudo mkdir -p /mnt/ssd1 | |
| sudo mount /dev/sdb /mnt/ssd1 | |
| # Format second drive | |
| sudo mkfs.ext4 /dev/sdc | |
| sudo mkdir -p /mnt/ssd2 | |
| sudo mount /dev/sdc /mnt/ssd2 | |
| # Get UUIDs for fstab | |
| sudo blkid /dev/sdb | |
| sudo blkid /dev/sdc | |
| # Add to fstab (replace UUIDs with actual values from blkid) | |
| echo "UUID=your-uuid-here /mnt/ssd1 ext4 defaults 0 2" | sudo tee -a /etc/fstab | |
| echo "UUID=your-uuid-here /mnt/ssd2 ext4 defaults 0 2" | sudo tee -a /etc/fstab | |
| ``` | |
| #### Option C: Mirror (RAID 1 - Most Safe, 500GB usable) | |
| **Recommended for production data** | |
| ```bash | |
| # Install mdadm | |
| sudo apt install mdadm | |
| # Create RAID 1 array | |
| sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc | |
| # Format and mount (same as RAID 0) | |
| sudo mkfs.ext4 -F /dev/md0 | |
| sudo mkdir -p /mnt/morphguard-storage | |
| sudo mount /dev/md0 /mnt/morphguard-storage | |
| echo "/dev/md0 /mnt/morphguard-storage ext4 defaults 0 2" | sudo tee -a /etc/fstab | |
| # Save configuration | |
| sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf | |
| sudo update-initramfs -u | |
| ``` | |
| ### Step 3: Set Permissions | |
| ```bash | |
| # For RAID setup | |
| sudo chown -R $USER:$USER /mnt/morphguard-storage | |
| # For separate drives | |
| sudo chown -R $USER:$USER /mnt/ssd1 | |
| sudo chown -R $USER:$USER /mnt/ssd2 | |
| ``` | |
| --- | |
| ## Migrating to New Storage | |
| ### Before Migration | |
| 1. Ensure new storage is mounted and accessible | |
| 2. Verify sufficient space: `df -h /mnt/morphguard-storage` | |
| 3. Backup important data (optional but recommended) | |
| ### Run Migration Script | |
| #### For RAID or Single Volume: | |
| ```bash | |
| cd /home/juanquy/dev/MorphGuard | |
| sudo bash migrate_to_new_storage.sh /mnt/morphguard-storage/MorphGuard | |
| ``` | |
| #### For Separate Drives: | |
| ```bash | |
| # Use first drive for project | |
| sudo bash migrate_to_new_storage.sh /mnt/ssd1/MorphGuard | |
| ``` | |
| ### Migration Process | |
| The script will: | |
| 1. ✅ Check disk space | |
| 2. ✅ Copy all files (using rsync) | |
| 3. ✅ Verify copy integrity | |
| 4. ✅ Update configuration paths | |
| 5. ✅ Rebuild virtual environment | |
| 6. ✅ Run validation tests | |
| 7. ✅ Create symbolic link (optional) | |
| **Estimated time:** 15-30 minutes (for ~23GB project) | |
| ### After Migration | |
| 1. **Test the new location:** | |
| ```bash | |
| cd /mnt/morphguard-storage/MorphGuard # or /mnt/ssd1/MorphGuard | |
| ./start_dev.sh | |
| ``` | |
| 2. **Verify everything works:** | |
| - Upload test images | |
| - Check GPU usage: `watch -n 1 nvidia-smi` | |
| - Test detection and demorphing | |
| 3. **Remove old directory** (after confirming everything works): | |
| ```bash | |
| sudo rm -rf /home/juanquy/dev/MorphGuard.backup | |
| ``` | |
| --- | |
| ## Storage Layout Recommendations | |
| ### Recommended: RAID 0 for Development | |
| **Best performance for AI workloads:** | |
| ``` | |
| /mnt/morphguard-storage/ | |
| ├── MorphGuard/ # Main project | |
| │ ├── models/ # AI models (6GB) | |
| │ ├── data/ # Training data (6GB) | |
| │ ├── pSp/ # GAN models (6GB) | |
| │ └── venv/ # Virtual environment (5GB) | |
| └── workspace/ # Additional space | |
| ├── experiments/ # Training experiments | |
| ├── datasets/ # Additional datasets | |
| └── backups/ # Project backups | |
| ``` | |
| **Total project size:** ~23GB | |
| **Available after migration:** ~977GB | |
| ### Alternative: Separate Drives | |
| **For better organization:** | |
| ``` | |
| /mnt/ssd1/ # Drive 1 (500GB) | |
| ├── MorphGuard/ # Main project (23GB) | |
| └── workspace/ # Development space | |
| /mnt/ssd2/ # Drive 2 (500GB) | |
| ├── datasets/ # Large datasets | |
| ├── experiments/ # Training runs | |
| └── backups/ # Backups | |
| ``` | |
| --- | |
| ## Troubleshooting | |
| ### Issue: "PostgreSQL not installed" | |
| **Solution:** | |
| ```bash | |
| sudo apt update | |
| sudo apt install postgresql-15 | |
| sudo systemctl start postgresql | |
| ``` | |
| ### Issue: "CUDA not available" | |
| **Check GPU:** | |
| ```bash | |
| nvidia-smi | |
| ``` | |
| **Reinstall drivers if needed:** | |
| ```bash | |
| sudo apt install nvidia-driver-535 | |
| sudo reboot | |
| ``` | |
| ### Issue: "Python packages not found" | |
| **Rebuild virtual environment:** | |
| ```bash | |
| cd /your/morphguard/location | |
| rm -rf venv | |
| python3.12 -m venv venv | |
| source venv/bin/activate | |
| pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 | |
| pip install -r requirements.txt | |
| ``` | |
| ### Issue: "Port 5000 already in use" | |
| **Find and kill the process:** | |
| ```bash | |
| sudo lsof -i :5000 | |
| sudo kill <PID> | |
| ``` | |
| ### Issue: "Permission denied" errors | |
| **Fix permissions:** | |
| ```bash | |
| sudo chown -R $USER:$USER /path/to/MorphGuard | |
| chmod +x *.sh | |
| ``` | |
| ### Issue: "Database connection failed" | |
| **Check PostgreSQL status:** | |
| ```bash | |
| sudo systemctl status postgresql | |
| ``` | |
| **Test connection:** | |
| ```bash | |
| PGPASSWORD=morphguard psql -h localhost -U morphguard -d morphguard -c "SELECT version();" | |
| ``` | |
| ### Issue: "Out of disk space during setup" | |
| **Check available space:** | |
| ```bash | |
| df -h | |
| ``` | |
| **Clean up if needed:** | |
| ```bash | |
| # Remove old kernels | |
| sudo apt autoremove | |
| # Clean package cache | |
| sudo apt clean | |
| # Remove old logs | |
| sudo journalctl --vacuum-time=7d | |
| ``` | |
| --- | |
| ## Quick Reference Commands | |
| ### Start Development Server | |
| ```bash | |
| cd /path/to/MorphGuard | |
| ./start_dev.sh | |
| ``` | |
| ### Check GPU Status | |
| ```bash | |
| nvidia-smi | |
| watch -n 1 nvidia-smi # Live monitoring | |
| ``` | |
| ### Database Management | |
| ```bash | |
| ./manage_db.sh status # Check database | |
| ./manage_db.sh backup # Backup database | |
| ./manage_db.sh reset # Reset database (careful!) | |
| ``` | |
| ### Activate Virtual Environment | |
| ```bash | |
| cd /path/to/MorphGuard | |
| source venv/bin/activate | |
| ``` | |
| ### Check Services | |
| ```bash | |
| sudo systemctl status postgresql | |
| sudo systemctl status grafana-server | |
| sudo systemctl status morphguard # If deployed as service | |
| ``` | |
| ### View Logs | |
| ```bash | |
| # Application logs | |
| tail -f logs/*.log | |
| # System logs | |
| sudo journalctl -u morphguard -f | |
| # PostgreSQL logs | |
| sudo tail -f /var/log/postgresql/postgresql-15-main.log | |
| ``` | |
| --- | |
| ## Environment Variables | |
| ### Development (.env.development) | |
| - Used for local testing | |
| - Debug mode enabled | |
| - Localhost connections | |
| ### Production (.env.production) | |
| - Used for deployment | |
| - Debug mode disabled | |
| - Network-accessible | |
| - Hardened security settings | |
| ### Switch Environments | |
| ```bash | |
| # Development | |
| ./start_morphguard.sh development | |
| # Production | |
| ./start_morphguard.sh production | |
| ``` | |
| --- | |
| ## Best Practices | |
| 1. **Always use virtual environment** | |
| - Prevents package conflicts | |
| - Isolates dependencies | |
| 2. **Regular backups** | |
| - Database: `./manage_db.sh backup` | |
| - Project: `rsync -ah --progress MorphGuard/ backup/` | |
| 3. **Monitor GPU temperature** | |
| - Check: `nvidia-smi --query-gpu=temperature.gpu --format=csv` | |
| - Keep under 80°C during training | |
| 4. **Use version control** | |
| - Initialize git: `git init` | |
| - Commit regularly: `git commit -am "message"` | |
| 5. **Test before deploying** | |
| - Run tests: `pytest` | |
| - Check code: `flake8 .` | |
| - Verify imports work | |
| --- | |
| ## Getting Help | |
| ### Check Documentation | |
| - `HOW_TO_START_MORPHGUARD.md` - Startup guide | |
| - `COMPREHENSIVE_DOCUMENTATION.md` - Full documentation | |
| - `DEPLOYMENT_STATUS.md` - Deployment info | |
| ### Check Logs | |
| ```bash | |
| # Application logs | |
| cat logs/error.log | |
| # System messages | |
| dmesg | grep -i error | |
| # PostgreSQL | |
| sudo grep ERROR /var/log/postgresql/postgresql-15-main.log | |
| ``` | |
| ### Verify System | |
| ```bash | |
| # Python environment | |
| python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())" | |
| # Database | |
| psql -h localhost -U morphguard -d morphguard -c "\dt" | |
| # Services | |
| systemctl list-units | grep -E 'postgres|grafana|morphguard' | |
| ``` | |
| --- | |
| ## Next Steps After Setup | |
| 1. ✅ Run setup script | |
| 2. ✅ Test with `./start_dev.sh` | |
| 3. ✅ Upload test image | |
| 4. ✅ Verify detection works | |
| 5. ✅ Check GPU utilization | |
| 6. 📝 Start developing new features! | |
| --- | |
| ## Support | |
| For issues or questions: | |
| 1. Check logs: `logs/` directory | |
| 2. Review documentation: `*.md` files | |
| 3. Test components individually | |
| 4. Check system resources: `htop`, `nvidia-smi` | |
| --- | |
| **Happy developing! 🚀** | |