| Crates.io | rumi2 |
| lib.rs | rumi2 |
| version | 1.0.0 |
| created_at | 2024-07-30 13:01:46.147977+00 |
| updated_at | 2025-07-14 07:33:57.155963+00 |
| description | Rumi2 simplifies the process of deploying your web applications and servers. With seamless SSH2 integration, it effortlessly manages the publishing process to your existing server infrastructure, ensuring secure and efficient transfers every time. |
| homepage | |
| repository | https://github.com/Bourse-numerique-d-afrique/rumi_rs |
| max_upload_size | |
| id | 1319781 |
| size | 268,097 |
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.
# Install from crates.io (coming soon)
cargo install rumi2
# Or clone and build from source
git clone https://github.com/Bourse-numerique-d-afrique/rumi_rs.git
cd rumi_rs
cargo build --release
# Initialize configuration
rumi2 config init
# Add SSH connection details
rumi2 config add-ssh \
--name production \
--host your-server.com \
--user deploy \
--port 22 \
--public-key ~/.ssh/id_rsa.pub \
--private-key ~/.ssh/id_rsa
# Verify configuration
rumi2 config validate
# Deploy a website
rumi2 hosting install \
--name my-website \
--domain example.com \
--dist-path ./dist
# Update your website
rumi2 hosting update \
--name my-website \
--dist-path ./new-dist
# List all deployments
rumi2 hosting list
# Deploy a server binary
rumi2 server deploy \
--name my-api \
--domain api.example.com \
--binary-path ./target/release/my-app \
--port 8080
# Manage the server
rumi2 server start --name my-api
rumi2 server status --name my-api
rumi2 server restart --name my-api
Rumi2 uses a JSON configuration file located at ~/.config/rumi/rumi.json:
{
"default_ssh": {
"host": "your-server.com",
"user": "deploy",
"port": 22,
"public_key_path": "~/.ssh/id_rsa.pub",
"private_key_path": "~/.ssh/id_rsa"
},
"deployments": [
{
"name": "my-website",
"domain": "example.com",
"deployment_type": "Website",
"dist_path": "./dist",
"backup_count": 5
}
],
"settings": {
"log_level": "info",
"backup_retention_days": 30,
"ssl_email": "admin@example.com",
"dry_run": false
}
}
rumi2 config init # Initialize configuration
rumi2 config show # Display current configuration
rumi2 config validate # Validate configuration
rumi2 config add-ssh [OPTIONS] # Add SSH configuration
rumi2 hosting install [OPTIONS] # Install new website
rumi2 hosting update [OPTIONS] # Update existing website
rumi2 hosting rollback [OPTIONS] # Rollback to previous version
rumi2 hosting list # List all website deployments
rumi2 server deploy [OPTIONS] # Deploy server application
rumi2 server start --name <NAME> # Start server
rumi2 server stop --name <NAME> # Stop server
rumi2 server restart --name <NAME> # Restart server
rumi2 server status --name <NAME> # Check server status
rumi2 backup create --name <NAME> # Create backup
rumi2 backup list [--name <NAME>] # List backups
rumi2 backup restore [OPTIONS] # Restore from backup
rumi2 backup delete --backup-id <ID> # Delete specific backup
rumi2 backup cleanup [OPTIONS] # Clean up old backups
rumi2 ethereum install [OPTIONS] # Install Ethereum node
--config <FILE> # Use custom configuration file
--verbose # Enable verbose logging
--dry-run # Preview changes without executing
--help # Show help information
--version # Show version information
Test your deployments safely without making actual changes:
rumi2 --dry-run hosting install --name test --domain test.com --dist-path ./dist
Automatic backups are created before every deployment:
# List all backups
rumi2 backup list
# Restore specific backup
rumi2 backup restore --backup-id abc123-def456
# Clean up old backups (older than 30 days)
rumi2 backup cleanup --retention-days 30
Manage different environments with separate config files:
# Production environment
rumi2 --config production.json hosting update --name app
# Staging environment
rumi2 --config staging.json hosting update --name app
git clone https://github.com/Bourse-numerique-d-afrique/rumi_rs.git
cd rumi_rs
cargo build --release
# Run all tests
cargo test
# Run specific test suite
cargo test config_tests
cargo test integration_tests
# Run with verbose output
cargo test -- --nocapture
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)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)# 1. Initialize and configure
rumi2 config init
rumi2 config add-ssh --name prod --host server.com --user deploy
# 2. Deploy website
rumi2 hosting install \
--name my-blog \
--domain blog.example.com \
--dist-path ./build
# 3. Update with new version
rumi2 hosting update --name my-blog --dist-path ./new-build
# 4. Check backups
rumi2 backup list --name my-blog
# 5. Rollback if needed
rumi2 backup restore --backup-id latest-backup-id
# Deploy Go API server
rumi2 server deploy \
--name user-api \
--domain api.myapp.com \
--binary-path ./target/release/user-api \
--port 8080
# Monitor server status
rumi2 server status --name user-api
# Deploy private Ethereum network
rumi2 ethereum install \
--name private-eth \
--domain eth.mycompany.com \
--network-id 1337 \
--http-address "0.0.0.0" \
--ws-address "0.0.0.0" \
--external-ip "203.0.113.1" \
--wallet-address "0x742d35Cc6634C0532925a3b8D80B11363DC2C7CC"
SSH Connection Failed
# Check SSH configuration
rumi2 config show
# Test SSH connection manually
ssh -i ~/.ssh/id_rsa user@server.com
Permission Denied
# Ensure user has sudo privileges
# Check file permissions on SSH keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
Deployment Failed
# Use dry-run mode to check configuration
rumi2 --dry-run hosting install --name test --domain test.com --dist-path ./dist
# Check logs with verbose mode
rumi2 --verbose hosting install --name test --domain test.com --dist-path ./dist
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Bourse Numerique D'Afrique