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

Upravljaj virtuelnim mašinama
i serverima direktno sa telefona

Multiplatformska aplikacija za kreiranje i upravljanje VirtualBox VM i eksternim SSH-serverima: fajlovi preko SFTP-a, instalacija aplikacija, skripte, monitoring — i sve to sa šifrovanjem SSH-lozinki na uređaju još pre slanja na server.

Kontrolna tabla virtuelne mašine u aplikaciji
1

Mogućnosti

Pun ciklus upravljanja infrastrukturom iz jedne aplikacije — od kreiranja virtuelne mašine do strimovanog izlaza korisničkih skripti.

VirtualBox VM
Kreiranje, pokretanje, zaustavljanje i brisanje virtuelnih mašina (Linux/Windows) direktno sa telefona, uključujući kloniranje iz zlatnih VDI slika.
Eksterni SSH-serveri
Povezivanje bilo kojih spoljnih servera preko SSH-a sa automatskim prepoznavanjem OS-a, sudo i systemd — bez vezivanja za VirtualBox.
Fajl menadžer (SFTP)
Pregled, preuzimanje i slanje fajlova chunked-protokolom: do 2 GB po fajlu, 3 paralelna prenosa, nastavak nakon prekida veze.
Prodavnica aplikacija
Instalacija softvera jednim dodirom preko apt (Linux) ili Chocolatey (Windows) iz kuriranog kataloga SystemApp.
Korisničke skripte
Skripte sa tipiziranim parametrima, strimovani izlaz u realnom vremenu preko WebSocket-a.
Docker / Podman
Upravljanje kontejnerima preko istog efemernog SSH-tokena kao i skripte — engine se automatski prepoznaje.
Cloud provajderi
Uvoz i upravljanje serverima Timeweb i Yandex Cloud preko jedinstvenog interfejsa ManagedVmService.
Monitoring
Statistika CPU/RAM/diska, pozadinsko proveravanje stanja VM-a svakih 30 sekundi, istorija metrika.
2

Arhitektura

Mobilna aplikacija na Expo/React Native komunicira sa monolitnim backend-om na NestJS preko REST-a i WebSocket-a. Sve SSH operacije se izvršavaju preko jednokratnih tokena — server nikada ne čuva dešifrovane lozinke duže od jednog zahteva. Kompletan pregled arhitekture →

flowchart LR
    subgraph client["Mobilni klijent (Expo / React Native)"]
        UI["Ekrani (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["Eksterni SSH-serveri"]
    CLOUD["Timeweb / Yandex Cloud API"]

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

Opšta arhitektura: klijent, NestJS API, MySQL, Redis/Valkey, SSH-serveri i VirtualBox

3

Bezbednost

SSH-akreditivi nikada ne napuštaju uređaj u čitljivom obliku, a svaka operacija se potvrđuje jednokratnim potpisanim tokenom. Svi nivoi zaštite →

Šifrovanje na uređajuAES-256-GCM sa ključem Argon2id — server vidi samo šifrotekst.
Jednokratni SSH-tokeniHKDF + HMAC-potpis, TTL 60 sekundi, jednokratna upotreba.
Forward secrecycredentialSalt se postavlja jednom pri registraciji, ne zavisi od lozinke naloga.
Zaštita od injekcijaBela lista parametara skripti i SSRF-filter preuzimanja preko URL-a.
4

Tehnologije

Mobilna aplikacija
PlatformaExpo SDK 54, React Native 0.81
Rutiranjeexpo-router 6 (fajl-bazirano rutiranje)
StanjeZustand + TanStack React Query 5
Kriptografijareact-native-quick-crypto, react-native-argon2
Skladišteexpo-secure-store, AsyncStorage
Backend
FrameworkNestJS 11, TypeScript
Baza podatakaMySQL + Prisma 6
Keš / redoviRedis (Valkey) preko ioredis
SSH / SFTPssh2, ssh2-sftp-client
AutentifikacijaPassport JWT, Google/Yandex OAuth, MAX Bot