A comprehensive backup management system for PostgreSQL databases, VPS instances, and object storage with automated scheduling and monitoring.
-
Multi-Source Backups
- PostgreSQL database backups
- VPS file system backups via SSH/SFTP
- S3-compatible object storage backups
-
Automated Scheduling
- Cron-based backup scheduling
- Retention policies
- Compression and encryption
-
Monitoring & Alerts
- Real-time backup status
- Storage usage tracking
- Email/webhook notifications
- Audit logging
-
User Management
- Role-based access control
- Multi-user support
- Activity tracking
rukhalt/
βββ server/ # Backend API (Go)
β βββ cmd/ # CLI commands
β βββ internal/ # Internal packages
β βββ migrations/ # Database migrations
β βββ Dockerfile # Server Docker image
β βββ docker-compose.yml
β
βββ client/ # Frontend UI (React + TypeScript)
β βββ src/ # Source code
β βββ public/ # Static assets
β βββ Dockerfile # Client Docker image
β
βββ docker-compose.yml # Full stack compose
βββ README.md # This file
- Language: Go 1.23
- Framework: Gin
- Database: PostgreSQL 15
- ORM: GORM
- Migrations: Goose
- CLI: Cobra
- Cache: Redis
- Framework: React 18
- Language: TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- HTTP Client: Axios
- Docker & Docker Compose
- Go 1.23+ (for local server development)
- Node.js 18+ (for local client development)
- Clone the repository:
git clone <repository-url>
cd rukhalt- Start the full stack:
docker compose up -dThis will start:
- PostgreSQL database (port 5432)
- Redis cache (port 6379)
- Backend API (port 8080)
- Frontend UI (port 3000)
- Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- API Health: http://localhost:8080/health
See server/README.md for detailed server setup and development instructions.
cd server
make devSee client/README.md for detailed client setup and development instructions.
cd client
npm install
npm run dev- Server Documentation
- Client Documentation
- API Documentation (if available)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=rukhalt_db
DB_USER=rukhalt_user
DB_PASSWORD=rukhalt_password
JWT_SECRET=your-secret-key
ENCRYPTION_KEY=your-encryption-key
PORT=8080VITE_API_URL=http://localhost:8080/api/v1# Build server image
docker build -t rukhalt-server:latest ./server
# Build client image
docker build -t rukhalt-client:latest ./clientdocker compose -f docker-compose.prod.yml up -dMigrations are managed using Goose:
cd server
# Run migrations
make migrate-up
# Create new migration
make migrate-create NAME=add_feature
# Check migration status
make migrate-statuscd server
make testcd client
npm test- JWT-based authentication
- Password hashing with bcrypt
- Encrypted storage of sensitive credentials
- HTTPS support
- CORS configuration
- SQL injection protection via ORM
POST /api/v1/auth/login- User loginPOST /api/v1/auth/register- User registrationPOST /api/v1/auth/refresh- Refresh token
GET /api/v1/backups- List backupsPOST /api/v1/backups- Create backupDELETE /api/v1/backups/:id- Delete backupPOST /api/v1/backups/restore- Restore backup
GET /api/v1/postgres/instances- List PostgreSQL instancesGET /api/v1/vps/instances- List VPS instancesGET /api/v1/rustfs/instances- List object storage instances
See API Documentation for complete endpoint list.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details
- Inspired by modern backup solutions
- Built with best practices from the Go and React communities
For issues and questions:
- GitHub Issues: Create an issue
- Documentation: Wiki
- Multi-region backup support
- Backup verification and integrity checks
- Advanced scheduling options
- Backup analytics and reporting
- Mobile app
- Kubernetes operator
- Terraform provider