ВиртМашУправ ВиртМашУправVPS Manager
Expo / React Native + NestJS

Spravuj virtuálne stroje
a servery priamo z telefónu

Multiplatformová aplikácia na vytváranie a správu VirtualBox VM a externých SSH serverov: súbory cez SFTP, inštalácia aplikácií, skripty, monitoring — a to všetko so šifrovaním SSH hesiel na zariadení ešte pred odoslaním na server.

Ovládací panel virtuálneho stroja v aplikácii
1

Možnosti

Kompletný cyklus správy infraštruktúry z jednej aplikácie — od vytvorenia virtuálneho stroja až po streamovaný výstup vlastných skriptov.

VirtualBox VM
Vytváranie, spúšťanie, zastavovanie a mazanie virtuálnych strojov (Linux/Windows) priamo z telefónu, vrátane klonovania zo zlatých obrazov VDI.
Externé SSH servery
Pripojenie ľubovoľných cudzích serverov cez SSH s automatickou detekciou OS, sudo a systemd — bez väzby na VirtualBox.
Súborový manažér (SFTP)
Prehliadanie, sťahovanie a nahrávanie súborov chunkovaným protokolom: až 2 GB na súbor, 3 paralelné prenosy, obnovenie po prerušení spojenia.
Obchod s aplikáciami
Inštalácia softvéru na jedno ťuknutie cez apt (Linux) alebo Chocolatey (Windows) z kurátorovaného katalógu SystemApp.
Vlastné skripty
Skripty s typizovanými parametrami, streamovaný výstup v reálnom čase cez WebSocket.
Docker / Podman
Správa kontajnerov cez ten istý efemérny SSH token ako skripty — engine sa určuje automaticky.
Cloudoví poskytovatelia
Import a správa serverov Timeweb a Yandex Cloud cez jednotné rozhranie ManagedVmService.
Monitoring
Štatistiky CPU/RAM/disku, periodický dopyt na stav VM každých 30 sekúnd, história metrík.
2

Architektúra

Mobilná aplikácia na Expo/React Native komunikuje s monolitickým backendom na NestJS cez REST a WebSocket. Všetky SSH operácie sa vykonávajú prostredníctvom jednorazových tokenov — server nikdy neuchováva dešifrované heslá dlhšie ako jeden request. Kompletný rozbor architektúry →

flowchart LR
    subgraph client["Mobilný klient (Expo / React Native)"]
        UI["Obrazovky (expo-router)"]
        RQ["React Query"]
        CR["Crypto Layer (Argon2id, AES-256-GCM)"]
    end

    subgraph backend["Backend (NestJS)"]
        API["REST API"]
        WS["WebSocket Gateway"]
        MODS["auth / vps / server-connection /
cloud-provider / custom-scripts"]
    end

    DB[("MySQL")]
    CACHE[("Redis / Valkey")]
    VBOX["VirtualBox"]
    SSHSRV["Externé SSH servery"]
    CLOUD["Timeweb / Yandex Cloud API"]

    UI --> RQ --> API
    UI --> WS
    CR -. šifrovanie credentials .-> API
    API --> MODS
    WS --> MODS
    MODS --> DB
    MODS --> CACHE
    MODS -- SSH --> VBOX
    MODS -- SSH --> SSHSRV
    MODS -- REST --> CLOUD

Celková architektúra: klient, NestJS API, MySQL, Redis/Valkey, SSH servery a VirtualBox

3

Bezpečnosť

SSH prihlasovacie údaje nikdy neopúšťajú zariadenie v otvorenej podobe a každá operácia je potvrdená jednorazovým podpísaným tokenom. Všetky vrstvy ochrany →

Šifrovanie na zariadeníAES-256-GCM s kľúčom Argon2id — server vidí iba šifrotext.
Jednorazové SSH tokenyHKDF + HMAC podpis, TTL 60 sekúnd, jednorazové použitie.
Forward secrecycredentialSalt sa nastavuje raz pri registrácii a nikdy sa neotáča.
Ochrana proti injekciámWhitelist parametrov skriptov a SSRF filter pri sťahovaní podľa URL.
4

Technológie

Mobilná aplikácia
PlatformaExpo SDK 54, React Native 0.81
Routingexpo-router 6 (súborové smerovanie)
StavZustand + TanStack React Query 5
Kryptografiareact-native-quick-crypto, react-native-argon2
Úložiskoexpo-secure-store, AsyncStorage
Backend
FrameworkNestJS 11, TypeScript
DatabázaMySQL + Prisma 6
Cache / frontyRedis (Valkey) cez ioredis
SSH / SFTPssh2, ssh2-sftp-client
AutentifikáciaPassport JWT, Google/Yandex OAuth, MAX Bot