Skip to content

Ravact is a modern, interactive TUI (Terminal User Interface) application for managing Linux servers. It provides an intuitive interface for common server administration tasks including software installation, user management, and service configuration.

License

Notifications You must be signed in to change notification settings

iperamuna/ravact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

63 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ravact - Linux Server Management Tool

Ravact is a modern, interactive TUI (Terminal User Interface) application for managing Linux servers. It provides an intuitive interface for common server administration tasks including software installation, user management, and service configuration.

Go Version License Platform

Ravact Main Menu

✨ Features

Status: All features are fully implemented and production-ready! πŸŽ‰

πŸš€ Software Setup & Management

  • One-Click Installation - Install popular server software with a single command
  • 13 Pre-configured Packages - Nginx, MySQL, PostgreSQL, Redis, PHP, Node.js, and more
  • Embedded Scripts - No external dependencies, everything runs from a single binary
  • Installation Status - View and manage installed applications
  • Automatic Detection - Shows only installed services in configuration menu

🌐 Nginx Web Server Management

  • Site Management - List, add, edit, and delete Nginx virtual hosts
  • 7 Site Templates - Static HTML, PHP, Laravel, WordPress, Symfony, Node.js, Reverse Proxy
  • SSL Certificate Management
    • Let's Encrypt (automatic SSL with certbot)
    • Manual certificates (provide your own cert files)
    • SSL removal and configuration
  • Editor Integration - Edit configs with nano or vi directly in Ravact

πŸ”§ Service Configuration

  • Redis Cache - Configure authentication, port, test connections
  • MySQL Database - Change root password, configure port, create databases, list databases, service management
  • PostgreSQL Database - Change postgres password, configure port, performance tuning (max_connections, shared_buffers), create databases, service management
  • PHP-FPM Pools - View pools, service restart/reload, pool details
  • Supervisor - Program management, XML-RPC configuration (IP, port, username, password), add programs with editor selection (nano/vi) and config validation

πŸ‘₯ User Management

  • Passwordless Users - Create users with SSH key-only authentication (no password)
  • Passwordless Sudo (NOPASSWD) - Grant sudo without password prompts
  • Passwordless su - Switch to user without password
  • User Details - View user information and group memberships

⚑ Quick Commands

  • System Info - Display kernel and architecture information
  • Disk Usage - Show filesystem usage
  • Memory Info - Show RAM usage statistics
  • Running Services - List active systemd services
  • Network Info - Display network interfaces and IP addresses
  • Top Processes - Show CPU-sorted process list
  • Recent Logs - View recent system journal entries

πŸ› οΈ Developer Toolkit (NEW)

  • 34+ Essential Commands - Frequently forgotten terminal commands at your fingertips
  • Laravel Commands - Tail logs, fix permissions, generate APP_KEY, check queue workers
  • WordPress Commands - Fix permissions, clear cache, generate salts, find malware patterns
  • PHP Commands - Check version, list modules, find php.ini, check OPcache
  • Security Commands - Scan for malware, find world-writable files, check open ports
  • Copy to Clipboard - Press c to copy any command instantly

πŸ“ File Browser (NEW)

  • Full-Featured File Manager - Navigate, preview, and manage files without leaving the app
  • File Operations - Copy, cut, paste, delete, rename, create files/directories
  • File Preview - View text files with syntax highlighting and line numbers
  • Search & Filter - Find files quickly with live filtering
  • Keyboard-Driven - Vim-like navigation (h/j/k/l) plus standard arrows
  • Help Screen - Press ? for complete keyboard shortcuts reference

🎨 Modern UI/UX (NEW)

  • Categorized Menus - Logically organized menu items (Package Management, Service Configuration, Site Management, System Administration, Tools)
  • Beautiful Forms - Powered by huh with custom theme
  • xterm.js Compatible - Works perfectly in web-based terminals
  • Copy Support - Press c on most screens to copy content to clipboard
  • Terminal-Aware - Auto-detects terminal capabilities and adjusts colors/symbols

πŸ” Smart Service Detection

  • Configuration menu automatically detects installed services
  • Uninstalled services are grayed out and not selectable
  • Shows [Not Installed] indicator for unavailable services
  • Prevents errors from attempting to configure missing services

πŸ“¦ Installation

Recommended (One-Command Install)

curl -sSL https://raw.githubusercontent.com/iperamuna/ravact/main/scripts/install.sh | sudo bash

Installs the correct binary for your OS/architecture to /usr/local/bin/ravact.

Manual Download (Linux)

# Download the latest release for your architecture
curl -L https://github.com/iperamuna/ravact/releases/latest/download/ravact-linux-amd64 -o ravact-linux-amd64

# Make it executable
chmod +x ravact-linux-amd64

# Run it
sudo ./ravact-linux-amd64

Available Binaries

  • ravact-linux-amd64 - Linux x86_64 (Intel/AMD)
  • ravact-linux-arm64 - Linux ARM64 (Raspberry Pi, Apple Silicon VMs)
  • ravact-darwin-arm64 - macOS Apple Silicon (UI only, setup features require Linux)
  • ravact-darwin-amd64 - macOS Intel (UI only, setup features require Linux)

Building from Source

# Clone the repository
git clone https://github.com/iperamuna/ravact.git
cd ravact

# Build for your current platform
make build

# Or build for all platforms (Linux & macOS, amd64 & arm64)
make build-all

# Or build for specific platforms
make build-linux        # Linux amd64
make build-linux-arm64  # Linux arm64
make build-darwin       # macOS amd64
make build-darwin-arm64 # macOS arm64 (Apple Silicon)

# Binaries will be in dist/ folder

🎯 Quick Start Guide

  1. Run Ravact (requires root for installation features):

    sudo ./ravact
  2. Navigate the Menu:

    • Use ↑/↓ arrow keys to navigate
    • Press Enter to select
    • Press Esc to go back
    • Press q to quit
  3. Install Software:

    • Main Menu β†’ Package Management β†’ Install Software
    • Select package (e.g., Nginx)
    • Choose "Install"
  4. Configure Services:

    • Main Menu β†’ Service Configuration β†’ Service Settings
    • Select service (e.g., Redis Cache)
    • Manage settings
  5. Use Developer Toolkit:

    • Main Menu β†’ Site Management β†’ Developer Toolkit
    • Navigate categories with Tab or arrow keys
    • Press c to copy command, Enter to execute
  6. Browse Files:

    • Main Menu β†’ Tools β†’ File Browser
    • Press ? for full keyboard shortcuts help

⌨️ Keyboard Shortcuts

Global

Key Action
↑/↓ or j/k Navigate up/down
Enter Select/Confirm
Esc Go back
q Quit
c Copy to clipboard (where supported)

File Browser

Key Action
? Show help screen
Space Toggle selection
y/x/p Copy/Cut/Paste
n/N New file/directory
d Delete
r Rename
/ Search
. Toggle hidden files

Forms (huh)

Key Action
Tab/Shift+Tab Navigate fields
Enter Submit/Select
↑/↓ Change option (in selects)

πŸ“š Documentation

Comprehensive documentation is available in the docs directory.

πŸ‘‰ View Full Documentation

Quick Links

Category Guides
Getting Started Quick Start β€’ Testing Guide
Features Developer Toolkit β€’ File Browser β€’ Database Management
UI UI Guide β€’ Keyboard Shortcuts
Development Development Guide β€’ Setup Scripts
Help Troubleshooting β€’ macOS Limitations
Project Changelog β€’ Project Status β€’ TODO/Roadmap

πŸ› οΈ Technology Stack

  • Language: Go 1.24+
  • TUI Framework: Bubble Tea
  • Styling: Lipgloss
  • Forms: huh - Beautiful, customizable forms
  • Clipboard: clipboard - Cross-platform clipboard support
  • Platform: Linux (Ubuntu, Debian, RHEL, CentOS)

πŸ”’ Security Considerations

  • Root Access: Required for installation and system configuration
  • Password Management: Passwords are masked in the UI
  • Configuration Files: Direct manipulation of system configs (backups recommended)
  • SSL Certificates: Automated Let's Encrypt or manual certificate management

🀝 Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘€ Author

Indunil Peramuna

πŸ™ Acknowledgments

  • Bubble Tea - Amazing TUI framework
  • Lipgloss - Beautiful terminal styling
  • All contributors and testers

πŸ“Š Project Status

Version: 0.3.1

All Features Implemented:

  • βœ… Complete software setup automation (13+ packages)
  • βœ… Full Nginx site management with SSL (Let's Encrypt & manual)
  • βœ… Redis configuration (password, port, connection testing)
  • βœ… MySQL database management (password, port, databases, users)
  • βœ… PostgreSQL database management (password, port, performance tuning)
  • βœ… PHP-FPM pool management (view pools, service control)
  • βœ… Supervisor configuration (programs, XML-RPC)
  • βœ… Firewall management
  • βœ… Passwordless user management with NOPASSWD sudo
  • βœ… Editor integration (nano/vi)
  • βœ… Quick system commands

New in v0.3.0:

  • βœ… Git System User (meta.systemuser) - automatic user tracking per repository
  • βœ… Laravel App menu with .env creation, scheduler setup, artisan commands
  • βœ… Passwordless user creation (SSH key-only authentication)
  • βœ… Passwordless sudo (NOPASSWD) and su support
  • βœ… FrankenPHP Socket/Port selection for service creation
  • βœ… NPM build runs npm install && npm run build as system user
  • βœ… Removed FrankenPHP/Node.js from Setup Install (available via Site Commands)

New in v0.2.0:

  • βœ… Developer Toolkit with 34+ essential Laravel/WordPress/PHP/Security commands
  • βœ… Full-featured File Browser with preview, search, and file operations
  • βœ… Beautiful forms powered by huh with custom theme
  • βœ… Categorized menu organization following industry standards
  • βœ… Copy to clipboard support across all screens
  • βœ… xterm.js compatibility for web-based terminals
  • βœ… Terminal capability detection with graceful fallbacks
  • βœ… Keyboard shortcuts help screen (press ? in File Browser)

⭐ Star this repository if you find it useful!

For detailed documentation, visit the docs folder or check out the full documentation index.

About

Ravact is a modern, interactive TUI (Terminal User Interface) application for managing Linux servers. It provides an intuitive interface for common server administration tasks including software installation, user management, and service configuration.

Resources

License

Stars

Watchers

Forks

Packages

No packages published