Enterprise Backup Monitoring & Management System
- Overview
- Features
- Architecture
- Screenshots
- Prerequisites
- Installation
- Configuration
- Usage
- API Documentation
- Development
- Deployment
- Monitoring
- Troubleshooting
- Contributing
- License
- Support
SnapTrack is a comprehensive backup monitoring and management system designed for enterprise environments. Built with modern technologies including Go (Golang) for the backend and Nuxt.js/Vue 3 for the frontend, it provides real-time monitoring, automated backup management, and detailed analytics for your backup infrastructure.
- Real-time Monitoring: Live dashboard with system metrics and backup status
- Multi-Server Support: Monitor local and remote servers from a single interface
- Automated Workflows: Schedule and manage backup operations automatically
- Detailed Analytics: Comprehensive logging and reporting capabilities
- Enterprise Ready: Production-grade security and scalability features
- Real-time Dashboard - Live system metrics and backup status
- Process Monitoring - Track backup processes and system resources
- Historical Data - Detailed backup logs with metadata and trends
- Alert System - Notifications for failed backups and system issues
- Multi-Server Support - Manage local and remote backup servers
- SSH Integration - Secure remote server monitoring and management
- Server Health Checks - Automated monitoring of server status and resources
- Automated Backups - Schedule and manage backup operations
- Manual Triggers - On-demand backup execution
- Progress Tracking - Real-time backup progress monitoring
- Backup Verification - Integrity checks and validation
- JWT Authentication - Secure user authentication and session management
- PAM Integration - System-level authentication support
- Role-based Access - Granular permission management
- Secure Communications - Encrypted data transmission
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ Database │
│ (Nuxt.js) │◄──►│ (Go/Fiber) │◄──►│ (PostgreSQL) │
│ │ │ │ │ │
│ • Vue 3 │ │ • REST API │ │ • GORM ORM │
│ • TailwindCSS │ │ • WebSockets │ │ • Migrations │
│ • PrimeVue │ │ • JWT Auth │ │ • Backup Logs │
│ • Chart.js │ │ • SSH Client │ │ • Server Config │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Click to view screenshots
Dashboard Real-time system metrics and backup status overview
Monitor Live backup process monitoring with progress tracking
Processes System process monitoring and resource usage
Servers Multi-server configuration and health monitoring
Backups Detailed backup logs and historical data
- Operating System: Linux (Ubuntu 20.04+ recommended)
- Memory: 2GB RAM minimum, 4GB recommended
- Storage: 10GB free space minimum
- Network: Internet connection for remote monitoring
- Go: 1.25.1 or higher
- Node.js: 18.x or higher
- npm: 9.x or higher
- PostgreSQL: 12.x or higher
- Git: Latest version
- Docker: For containerized deployment
- Nginx: For reverse proxy setup
- SSL Certificate: For HTTPS in production
-
Clone the Repository
git clone https://github.com/stackroost/snaptrack.git cd snaptrack -
Run Production Installation
sudo ./install_snaptrack.sh
-
Configure Database
# Create PostgreSQL database sudo -u postgres createdb snaptrack sudo -u postgres createuser snaptrack_user -
Update Configuration
sudo nano /etc/snaptrack/config.yaml # Update database credentials and JWT secret -
Start Services
sudo systemctl start snaptrack sudo systemctl status snaptrack
Click to expand manual installation steps
-
Navigate to Server Directory
cd server -
Install Dependencies
go mod download go mod tidy
-
Build Application
go build -o ../bin/server/snaptrack main.go
-
Run Backend
./bin/server/snaptrack --config config.yaml
-
Navigate to Web Directory
cd web -
Install Dependencies
npm install
-
Development Mode
npm run dev
-
Production Build
npm run build npm run generate
- Production:
/etc/snaptrack/config.yaml - Development:
./config.yaml
# Environment configuration env: production # Server settings server: host: "0.0.0.0" port: "8080" frontend_path: "/opt/snaptrack/frontend/dist" backend_base_url: "http://localhost:8080/api" # CORS settings cors: origins: "*" # Configure specific origins in production # Security settings security: jwt_secret: "your-super-secure-jwt-secret-here" session_timeout: "24h" max_login_attempts: 5 # Database configuration database: host: "localhost" port: 5432 user: "snaptrack_user" password: "your-secure-database-password" dbname: "snaptrack" ssl_mode: "require" # Use in production max_connections: 25 max_idle_connections: 5 # Logging configuration logging: level: "info" # debug, info, warn, error file: "/var/log/snaptrack/app.log" max_size: 100 # MB max_backups: 5 max_age: 30 # days # Backup settings backup: default_retention: "30d" max_concurrent_jobs: 5 temp_directory: "/tmp/snaptrack" # Monitoring settings monitoring: metrics_interval: "30s" health_check_interval: "60s" alert_threshold: 90 # percentage
# Optional environment variable overrides export SNAPTRACK_CONFIG_PATH="/etc/snaptrack/config.yaml" export SNAPTRACK_LOG_LEVEL="info" export SNAPTRACK_DB_HOST="localhost" export SNAPTRACK_DB_PORT="5432"
-
Access Dashboard
http://localhost:8080 -
Login
- Use system credentials (PAM authentication)
- Or configured user accounts
-
Navigation
- Dashboard: System overview and metrics
- Monitors: Real-time backup monitoring
- Servers: Server management and configuration
- Backups: Backup history and management
- Processes: System process monitoring
# Start service sudo systemctl start snaptrack # Stop service sudo systemctl stop snaptrack # Check status sudo systemctl status snaptrack # View logs sudo journalctl -u snaptrack -f # Configuration test /opt/snaptrack/snaptrack --config /etc/snaptrack/config.yaml --test-config
# Login curl -X POST http://localhost:8080/api/auth/login \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "password"}'
# Get backup status curl -H "Authorization: Bearer <token>" \ http://localhost:8080/api/backups # Start backup curl -X POST -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ http://localhost:8080/api/backups/start \ -d '{"server_id": 1, "backup_type": "full"}'
# List servers curl -H "Authorization: Bearer <token>" \ http://localhost:8080/api/servers # Add server curl -X POST -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ http://localhost:8080/api/servers \ -d '{"name": "Server1", "host": "192.168.1.100", "type": "remote"}'
-
Prerequisites
# Install Go wget https://go.dev/dl/go1.25.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.25.1.linux-amd64.tar.gz # Install Node.js curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs
-
Clone and Setup
git clone https://github.com/stackroost/snaptrack.git cd snaptrack # Backend cd server && go mod download # Frontend cd ../web && npm install
-
Development Servers
# Terminal 1 - Backend cd server && go run main.go # Terminal 2 - Frontend cd web && npm run dev
snaptrack/
├── server/ # Go backend
│ ├── main.go # Application entry point
│ ├── api/ # API routes and handlers
│ ├── auth/ # Authentication logic
│ ├── config/ # Configuration management
│ ├── db/ # Database models and operations
│ └── services/ # Business logic services
├── web/ # Nuxt.js frontend
│ ├── components/ # Vue components
│ ├── pages/ # Application pages
│ ├── layouts/ # Page layouts
│ ├── middleware/ # Route middleware
│ └── assets/ # Static assets
├── bin/ # Compiled binaries
├── screenshots/ # Application screenshots
└── install_snaptrack.sh # Production installer
- Go: Follow standard Go formatting (
gofmt) - Vue/JavaScript: Use ESLint with Vue 3 configuration
- CSS: Use TailwindCSS utility classes
- Commits: Follow conventional commit format
-
Build Application
# Backend cd server && go build -o ../bin/server/snaptrack main.go # Frontend cd web && npm run build && npm run generate
-
Deploy with Installer
sudo ./install_snaptrack.sh
-
Configure Reverse Proxy (Nginx)
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- Response time monitoring
- Database connection pooling
- Memory usage tracking
- Backup operation metrics
Database Connection Issues
Problem: Cannot connect to PostgreSQL database
Solutions:
-
Check PostgreSQL service status
sudo systemctl status postgresql
-
Verify database credentials in config
-
Check firewall settings
-
Ensure database exists and user has permissions
Frontend Not Loading
Problem: Frontend shows 404 or blank page
Solutions:
- Check frontend path in configuration
- Verify frontend files are built and copied
- Check file permissions
- Review server logs for errors
Authentication Issues
Problem: Cannot login or JWT errors
Solutions:
- Verify JWT secret is configured
- Check PAM configuration
- Review user permissions
- Check system time synchronization
# Application logs sudo journalctl -u snaptrack -f # Error logs sudo tail -f /var/log/snaptrack/error.log # Access logs sudo tail -f /var/log/snaptrack/access.log
We welcome contributions!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Documentation: Check this README and inline code comments
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ by the mahesh bhatiya