Skip to content

About

Desktop app for managing Hostinger VPS infrastructure. Multi-account monitoring, server controls, firewalls, and SSH keys. Built with Python and PyQt6.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Hostinger VPS Manager

A modern desktop application for managing your Hostinger VPS infrastructure. Built with Python and PyQt6, this tool provides a user-friendly interface to monitor and control your virtual private servers.

Python PyQt6 License Codacy Badge

Features

Server Management

  • Multi-Account Support: Manage multiple Hostinger accounts from a single interface
  • Server Overview: View all your VPS instances with real-time status
  • Power Controls: Start, stop, restart, and force restart servers
  • Server Information: View detailed server specs (CPU, RAM, Disk, Bandwidth)

Monitoring

  • Real-time Metrics: CPU usage, RAM usage, and disk utilization with visual charts
  • Uptime Tracking: Monitor server uptime
  • Auto-refresh: Configurable automatic data refresh (10-300 seconds)

Security

  • Firewall Management: View, add, edit, and delete firewall rules
  • SSH Key Management: Manage SSH keys for secure server access
  • Malware Scanner (Monarx): Monitor malware scan status and metrics
  • Secure Credential Storage: API tokens stored securely using Windows Credential Manager

Additional Features

  • System Tray Integration: Minimize to tray, notifications for status changes
  • Data Export: Export logs and metrics to CSV format
  • Subscription Info: View billing and subscription details
  • Data Center Info: See server location (city, country)
  • Action Logs: Track all server actions with timestamps

Installation

Prerequisites

  • Python 3.10 or higher
  • One of: Windows 10/11, macOS 12+, or a modern Linux distribution

Credentials are stored via the OS-native keyring:

OS Backend
Windows Credential Manager
macOS Keychain
Linux Secret Service (GNOME Keyring / KWallet / libsecret)

On a headless Linux box without a running secret-service daemon, install keyrings.cryptfile for an encrypted-file fallback. The active backend is logged at startup so you can confirm what's in use.

From Source

# Clone the repository
git clone https://github.com/amosgeva/HostingerVPSManager.git
cd HostingerVPSManager

# Create a virtual environment (recommended)
python -m venv .venv
# Windows:    .venv\Scripts\activate
# Linux/Mac:  source .venv/bin/activate

# Install (PEP 517 — uses pyproject.toml). Add [dev] for lint + test tools.
pip install -e .

# Run the application
python run.py

Linux: extra Qt system dependencies

Qt6 needs a few X11/EGL libraries that aren't always installed on minimal distros. On Debian/Ubuntu:

sudo apt-get install -y libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 \
  libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 \
  libxcb-xinerama0 libxcb-xkb1 libxcb-cursor0 libegl1

If you run a desktop environment without a system-tray daemon (vanilla GNOME, sway, etc.), the app falls back to "close = quit" — there's no tray icon to minimise to.

Build a standalone artefact

pyinstaller HostingerVPSManager.spec --clean --noconfirm
OS Output
Windows dist/HostingerVPSManager.exe
Linux dist/HostingerVPSManager (single-file binary)
macOS dist/HostingerVPSManager.app (proper .app bundle)

On macOS, the .app is unsigned; the first launch needs right-click → Open to bypass Gatekeeper. Code-signing is on the v2.x roadmap.

Releases

Tagged releases (v1.2.0, etc.) are built by GitHub Actions on Windows + Linux + macOS runners and published to the Releases page.

Configuration

API Token Setup

  1. Log in to your Hostinger Dashboard
  2. Navigate to Account Settings → API Tokens
  3. Generate a new API token with VPS permissions
  4. In the app, click "Manage Accounts" → "Add Account"
  5. Enter a name and paste your API token

Settings

Access settings via the ⚙ Settings button:

  • Auto-refresh interval: How often to refresh data (default: 30s)
  • Minimize to tray on close: Keep app running in system tray
  • Start minimized: Launch app minimized to tray
  • Enable notifications: Show alerts for server status changes

Project Structure

Hostinger.API/
├── assets/                     # Application icons
├── src/
│   ├── __init__.py             # Single source of the version number
│   ├── main.py                 # Application entry point
│   ├── main_window.py          # Main GUI window
│   ├── app/                    # Constants + resource path helpers
│   ├── controllers/            # MVVM-lite controllers (headless-testable)
│   ├── core/
│   │   ├── api_client.py       # Hostinger API client
│   │   ├── credentials.py      # Secure credential storage (OS keyring)
│   │   ├── formatting/         # Pure display-formatting helpers
│   │   └── network/            # Local/LAN IP detection
│   ├── ui/
│   │   ├── styles.py           # UI styles and constants
│   │   ├── dialogs/            # QDialog subclasses
│   │   └── tabs/               # Extracted tab widgets
│   └── workers/                # APIWorker (QThread) + WorkerPool
├── tests/                      # Headless pytest + pytest-qt suite
├── HostingerVPSManager.spec    # PyInstaller spec file
├── pyproject.toml              # Canonical packaging + tool config
└── run.py                      # Run script

Security

  • No hardcoded credentials: API tokens are stored via the OS-native keyring (Windows Credential Manager, macOS Keychain, or Secret Service on Linux). The app never writes tokens to disk in plaintext.
  • Retry-safe HTTP: All API calls use HTTPS via a requests session with exponential-backoff retries that honour Retry-After.
  • Local storage only: No data is sent to third-party services.
  • Reporting: For security issues, email amos@geva.solutions privately rather than opening a public issue.

API Reference

This application uses the Hostinger API. Supported endpoints:

  • VPS Virtual Machines
  • VPS Firewall
  • VPS SSH Keys (Public Keys)
  • VPS Malware Scanner (Monarx)
  • VPS Data Centers
  • Billing Subscriptions

Requirements

The canonical dependency set lives in pyproject.toml (requirements.txt mirrors it for non-PEP-517 installs):

  • PyQt6 >= 6.11.0
  • requests >= 2.33.1
  • keyring >= 25.7.0
  • psutil >= 7.2.2

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add 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 GNU General Public License v3.0 - see the LICENSE file for details.

Acknowledgments

About

Desktop app for managing Hostinger VPS infrastructure. Multi-account monitoring, server controls, firewalls, and SSH keys. Built with Python and PyQt6.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages