Skip to content

Cleboost/Rustmius

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Rustmius Logo

Rustmius

AUR Version AUR Version Bin License Rust Vue

๐ŸŽฏ Purpose

Rustmius is a full local Termius alternative for Linux, built with Tauri (Rust + Vue.js) that simplifies SSH server and key management. Say goodbye to manually editing SSH config files and managing keys through the command line!

โœจ Key Features

  • ๐Ÿ–ฅ๏ธ Visual Server Management: Add, edit, and organize your SSH servers with a modern, intuitive interface
  • ๐Ÿ“ Hierarchical Organization: Organize your servers in folders for better structure
  • ๐Ÿ”‘ SSH Key Management: View and manage your SSH key pairs effortlessly
  • ๐Ÿณ Docker Integration: Manage your Docker containers and images directly from the application
  • ๐Ÿ“Š System Monitoring: Monitor your servers' performance in real-time
  • ๐Ÿ” Smart Search: Quickly find your servers and keys with intelligent filtering
  • ๐Ÿš€ One-Click Connection: Connect to servers directly from the app
  • ๐ŸŽจ Modern UI: User interface built with Vue.js and Tailwind CSS
  • โšก Optimal Performance: Rust backend for optimal performance and memory safety
  • ๐Ÿ”ง Multi-Terminal Support: Works with multiple terminals (foot, gnome-terminal, konsole, alacritty, kitty, etc.)

๐Ÿ—๏ธ Architecture

Rustmius is a Tauri application that combines:

  • Rust Backend: System operations management, data storage, and system integration
  • Vue.js 3 Frontend: Reactive user interface with TypeScript
  • Pinia: Centralized state management
  • Vue Router: Navigation between pages
  • Tailwind CSS: Modern and responsive styling
  • UI Components: Reusable component library (shadcn/ui style)

๐Ÿ“‚ Project Structure

rustmius/
โ”œโ”€โ”€ src/                    # Frontend source code (Vue.js)
โ”‚   โ”œโ”€โ”€ pages/             # Application pages
โ”‚   โ”‚   โ”œโ”€โ”€ home.vue       # Home page (server list)
โ”‚   โ”‚   โ”œโ”€โ”€ keys.vue       # SSH key management
โ”‚   โ”‚   โ”œโ”€โ”€ server/        # Server-related pages
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.vue  # Server overview
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ docker.vue # Docker management
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ monitor.vue # System monitoring
โ”‚   โ”‚   โ””โ”€โ”€ settings.vue   # Application settings
โ”‚   โ”œโ”€โ”€ components/        # Reusable Vue components
โ”‚   โ”‚   โ”œโ”€โ”€ AppSidebar.vue # Navigation sidebar
โ”‚   โ”‚   โ”œโ”€โ”€ ServerCard.vue # Server card
โ”‚   โ”‚   โ”œโ”€โ”€ DockerCard.vue  # Docker card
โ”‚   โ”‚   โ””โ”€โ”€ ui/            # Base UI components
โ”‚   โ”œโ”€โ”€ stores/            # Pinia stores
โ”‚   โ”‚   โ”œโ”€โ”€ servers.ts     # Server management
โ”‚   โ”‚   โ”œโ”€โ”€ keys.ts        # SSH key management
โ”‚   โ”‚   โ””โ”€โ”€ settings.ts    # Settings
โ”‚   โ”œโ”€โ”€ class/             # TypeScript classes
โ”‚   โ”‚   โ”œโ”€โ”€ Server.ts      # Server class
โ”‚   โ”‚   โ””โ”€โ”€ Class.ts       # Utility classes
โ”‚   โ”œโ”€โ”€ types/             # TypeScript definitions
โ”‚   โ”œโ”€โ”€ router/             # Vue Router configuration
โ”‚   โ””โ”€โ”€ lib/               # Utilities
โ”œโ”€โ”€ src-tauri/             # Backend source code (Rust)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ main.rs        # Tauri entry point
โ”‚   โ”‚   โ””โ”€โ”€ lib.rs         # Rust library
โ”‚   โ””โ”€โ”€ Cargo.toml         # Rust dependencies
โ””โ”€โ”€ dist/                   # Production build

๐Ÿš€ Installation

From AUR (Arch Linux)

# Install from source
yay -S rustmius

# Or install pre-built binary
yay -S rustmius-bin

From Source

Prerequisites

  • Rust (1.70+) : rustup.rs
  • Node.js (18+) or Bun : nodejs.org or bun.sh
  • System Dependencies :
    • Linux : libwebkit2gtk-4.1-dev, libssl-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev

Installation

# Clone the repository
git clone https://github.com/Cleboost/Rustmius.git
cd Rustmius

# Install frontend dependencies
npm install
# or
bun install

# Run in development mode
npm run tauri dev
# or
bun run tauri dev

# Build for production
npm run tauri build
# or
bun run tauri build

๐ŸŽฎ Usage

Navigation

The application is organized into several sections accessible via the sidebar:

  1. ๐Ÿ  Home: Overview of all your servers organized in folders
  2. ๐Ÿ”‘ SSH Keys: Management of your SSH key pairs
  3. โš™๏ธ Settings: Application configuration

Server Management

  • Add a server: Click "New Server" to add an SSH server with a user-friendly interface
  • Organize in folders: Create folders to organize your servers by project or environment
  • Edit a server: Click on a server to access its details and options
  • Delete a server: Use the delete option in the server details

Docker Features

For each server, you can access:

  • Docker Overview: List of containers and images
  • Image Management: View and manage your Docker images
  • Container Management: Create, start, stop, and delete containers
  • Container Details: Inspect logs, statistics, and container configuration

System Monitoring

Monitor your servers' performance with:

  • CPU and memory usage
  • Network statistics
  • Disk usage
  • Real-time graphs

SSH Key Management

  • Visualization: View all your public and private SSH keys
  • Generation: Create new SSH key pairs
  • Association: Link keys to specific servers

๐Ÿ› ๏ธ Development

Available Scripts

# Development
npm run dev          # Start Vite in development mode
npm run tauri dev    # Start Tauri application in development mode

# Build
npm run build        # Build the frontend
npm run tauri build  # Build the complete application

# Code Quality
npm run lint         # Check TypeScript types
npm run knip         # Detect unused code

Testing

# Run tests
npm test

# Tests with coverage
npm run test:coverage

Data Structure

Servers are stored in a hierarchical structure allowing folder organization:

type ServerConfig = Array<Folder | Server>;

interface Folder {
  id: string;
  name: string;
  contents: ServerConfig;
}

interface Server {
  id: string;
  name: string;
  host: string;
  port: number;
  user: string;
  // ... other properties
}

๐Ÿค Contributing

We welcome contributions from the community! ๐ŸŽ‰ Whether you're fixing bugs, adding features, or improving documentation, your help makes this project better for everyone.

๐Ÿ› ๏ธ How to Contribute

  1. Fork the repository ๐Ÿด
  2. Create a feature branch git checkout -b feature/amazing-feature
  3. Make your changes โœจ
  4. Test thoroughly ๐Ÿงช
  5. Commit with clear messages ๐Ÿ“ (follow commit conventions)
  6. Push to your fork ๐Ÿš€
  7. Open a Pull Request ๐Ÿ”„

๐ŸŽฏ Areas Where We Need Help

  • ๐Ÿ› Bug Reports: Found a bug? Let us know!
  • ๐Ÿ’ก Feature Requests: Have ideas? We'd love to hear them!
  • ๐Ÿ“š Documentation: Help improve our docs and guides
  • ๐ŸŽจ UI/UX: Design improvements and user experience enhancements
  • ๐Ÿงช Testing: Help us test on different systems and configurations
  • ๐ŸŒ Translations: Help us reach users in different languages

๐Ÿ“‹ Pull Request Guidelines

  • Clear descriptions: Explain what your PR does and why
  • Focused changes: Keep PRs focused on a single feature or fix
  • Test your changes: Make sure everything works as expected
  • Follow code style: Use cargo fmt and cargo clippy for Rust, npm run lint for TypeScript

๐Ÿ† Recognition

Contributors will be recognized in our README and release notes. We appreciate every contribution, no matter how small! ๐Ÿ™

๐Ÿ“„ License

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

๐Ÿ™ Acknowledgments

  • Tauri team for the desktop application framework
  • Vue.js community for the excellent frontend ecosystem
  • Rust community for the backend ecosystem
  • All contributors who help improve this project
  • Arch Linux community for the AUR packages

Made with โค๏ธ by Cleboost

โญ Star this repo if you find it useful!

About

Full local Termius alternative for Linux

Resources

Stars

Watchers

Forks

Languages