Rumi2 🚀
A robust CLI tool for deploying web applications, servers, and blockchain nodes with seamless SSH2 integration.
Rumi2 simplifies the deployment process to your existing server infrastructure, ensuring secure and efficient transfers with comprehensive backup, rollback, and monitoring capabilities.
✨ Features
🌐 Website Hosting
- One-command deployments with automatic SSL certificate generation
- Zero-downtime updates with nginx reload
- Automatic backups before every deployment
- Easy rollbacks to previous versions
- Custom domain management with automatic nginx configuration
🖥️ Server Management
- Binary deployment with automatic service management
- Start/stop/restart server applications
- Health monitoring and status checking
- Port management and firewall configuration
- Process lifecycle management
⛓️ Ethereum Node Deployment
- Full Ethereum node setup with geth
- Custom network configuration with genesis files
- Automatic wallet creation and management
- RPC and WebSocket endpoint configuration
- Nginx proxy setup for secure access
💾 Backup & Recovery
- Automatic backups before deployments
- Incremental backup strategies with compression
- Easy restoration from any backup point
- Cleanup policies with configurable retention
- Metadata tracking for backup management
⚙️ Configuration Management
- JSON-based configuration with validation
- Multiple deployment profiles support
- SSH connection management with key-based auth
- Environment-specific settings
- Configuration validation and error checking
🛡️ Security & Safety
- Dry-run mode for safe testing
- SSH key authentication with fallback options
- Secure credential handling (no hardcoded secrets)
- Firewall management with ufw integration
- SSL/TLS certificate automation with Let's Encrypt
🚀 Quick Start
Installation
# Install from crates.io (coming soon)
# Or clone and build from source
Basic Setup
# Initialize configuration
# Add SSH connection details
# Verify configuration
Deploy Your First Website
# Deploy a website
# Update your website
# List all deployments
Deploy a Server Application
# Deploy a server binary
# Manage the server
📖 Usage Guide
Configuration File
Rumi2 uses a JSON configuration file located at ~/.config/rumi/rumi.json:
Command Reference
Configuration Commands
Website Hosting Commands
Server Management Commands
Backup Management Commands
Ethereum Node Commands
Global Options
🔧 Advanced Features
Dry Run Mode
Test your deployments safely without making actual changes:
Backup Management
Automatic backups are created before every deployment:
# List all backups
# Restore specific backup
# Clean up old backups (older than 30 days)
Multiple Environments
Manage different environments with separate config files:
# Production environment
# Staging environment
🛠️ Development
Prerequisites
- Rust 1.70+
- OpenSSL development libraries
- SSH access to target servers
Building from Source
Running Tests
# Run all tests
# Run specific test suite
# Run with verbose output
Contributing
- 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
📋 Requirements
System Requirements
- Operating System: Linux, macOS, Windows (WSL)
- Memory: 512MB RAM minimum
- Storage: 100MB available space
- Network: SSH access to target servers
Server Requirements
- SSH Server: OpenSSH 7.0+
- Operating System: Ubuntu 18.04+, Debian 9+, CentOS 7+
- Privileges: sudo access for system configuration
- Ports: 22 (SSH), 80 (HTTP), 443 (HTTPS)
Dependencies
The following packages will be automatically installed on the target server:
nginx- Web server and reverse proxycertbot- SSL certificate managementufw- Uncomplicated Firewallgeth- Ethereum client (for blockchain deployments)
🔒 Security
Best Practices
- Use SSH keys instead of passwords when possible
- Regularly rotate SSH keys and certificates
- Enable firewall rules for production servers
- Monitor deployment logs for suspicious activity
- Keep backups in secure, separate locations
Security Features
- No hardcoded credentials or secrets
- SSH key-based authentication with fallback options
- Automatic SSL certificate generation and renewal
- Firewall management with sensible defaults
- Secure file transfer with integrity checking
📚 Examples
Complete Website Deployment
# 1. Initialize and configure
# 2. Deploy website
# 3. Update with new version
# 4. Check backups
# 5. Rollback if needed
API Server Deployment
# Deploy Go API server
# Monitor server status
Ethereum Node Setup
# Deploy private Ethereum network
🎯 Roadmap
- Docker deployment support
- Kubernetes integration
- Database migration management
- Multi-region deployments
- Integration with CI/CD pipelines
- Web dashboard interface
- Slack/Discord notifications
- Prometheus metrics export
🤝 Support
Getting Help
- Documentation: docs.rs/rumi2
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Common Issues
SSH Connection Failed
# Check SSH configuration
# Test SSH connection manually
Permission Denied
# Ensure user has sudo privileges
# Check file permissions on SSH keys
Deployment Failed
# Use dry-run mode to check configuration
# Check logs with verbose mode
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
👥 Authors
- ONDONDA Prince Merveil - @princefr
- Bourse Numerique D'Afrique - dev@boursenumeriquedafrique.com
🙏 Acknowledgments
- The Rust community for excellent tooling and libraries
- OpenSSH project for secure remote access
- Let's Encrypt for free SSL certificates
- Nginx team for robust web server technology
- All contributors and users of this project
Made with ❤️ by Bourse Numerique D'Afrique