Miskolci Egyetem – Mobilprogramozás tantárgyi beadandó (FOSZ)
Témakör: REST API és JSON-feldolgozás Android-alkalmazásokban
Szerző: Mihalek Péter
Aktuális verzió: v1.0.0 (Végleges beadási kiadás – Android kliens + FastAPI backend élő Proxmox kapcsolatban)
A ProxMonitor egy modern, natív Android-alkalmazás, amely egy otthoni vagy intézményi Proxmox Virtual Environment (PVE) hipervizor állapotának valós idejű megfigyelését teszi lehetővé mobil eszközről.
A rendszer célja, hogy a szerverüzemeltető közvetlen webes felületre lépés nélkül, egy kézre álló mobilalkalmazásban ellenőrizhesse:
- A fizikai csomópont (node) hardveres kihasználtságát (12 CPU mag terhelése, memória- és háttértár-foglaltság, részletes storage poolok, szerver üzemidő).
- A futó virtuális gépek (QEMU VM) és konténerek (LXC) állapotát (Online/Offline) és azok memóriafogyasztását.
A projekt a Mobilprogramozás tantárgy követelményeinek megfelelően a RESTful hálózati kommunikáció, az aszinkron JSON-deszerializáció, valamint a modern deklaratív Jetpack Compose felületépítés és egyszerű MVVM architektúra gyakorlati megvalósítását mutatja be.
A rendszer három fő komponensből áll. A tesztelt elrendezésben a köztes FastAPI backend egy Windows-laptopon fut (127.0.0.1:8000), amelyet a fizikai Android telefon Tailscale-en keresztül HTTPS-en (emulátor esetén pedig a http://10.0.2.2:8000/ helyi címen) ér el:
┌─────────────────────────────────┐
│ ANDROID MOBIL KLIENS │
│ - Jetpack Compose & Material 3 │
│ - MainViewModel & UiState │
│ - Retrofit 2 & Gson konverter │
└────────────────┬────────────────┘
│ HTTPS (Tailscale) / HTTP (Emulátor: 10.0.2.2)
│ Fejléc: X-API-Key: <kulcs>
▼
┌─────────────────────────────────┐
│ KÖZTES BACKEND (Windows-laptop)│
│ - Python 3 + FastAPI │
│ - Pydantic v2 adatmodellek │
│ - Biztonságos tokenkezelés │
└────────────────┬────────────────┘
│ HTTPS / REST (PVE API)
│ Fejléc: PVEAPIToken=USER@REALM!TOKEN=UUID
▼
┌─────────────────────────────────┐
│ PROXMOX VE HYPERVISOR │
│ - Fizikai gazdagép ('prox') │
│ - 19 db QEMU VM és LXC konténer│
└─────────────────────────────────┘
-
Mobil kliens (Android):
- Nyelv: Kotlin (100%-ban típusbiztos, null-safe)
- UI keretrendszer: Jetpack Compose & Material 3 (deklaratív felület)
- Architektúra: Egyszerű MVVM (Model-View-ViewModel)
StateFlowállapotkezeléssel - Hálózatkezelés: Retrofit 2, OkHttp 3 és Gson Converter (JSON-feldolgozás)
- Aszinkronitás: Kotlin Coroutines (
viewModelScope.launch,suspend fun) - Build rendszer: Gradle Kotlin DSL (
.kts)
-
Köztes Backend (Python / FastAPI – Windows-laptop):
- Keretrendszer: FastAPI & Uvicorn aszinkron ASGI szerver
- Adatvalidáció: Pydantic v2 modellek
- Proxmox kommunikáció:
httpxaszinkron HTTP kliens - Hitelesítés:
X-API-KeyvagyAuthorization: Bearer - Biztonság: A Proxmox API token kizárólag a szerver
.envfájljában található, az Android APK nem tartalmaz beégetett szervertitkokat.
| Funkció | Leírás | Állapot |
|---|---|---|
| Összesítő műszerfal | Főképernyő a szerver állapotának áttekintésére | Kész (v1.0.0) |
| CPU terhelés kártya | Processzorterheltség és magok száma (12 mag) | Kész (Élő adatokkal - v1.0.0) |
| Memória kártya | RAM használat és százalék (10.8 GB / 15.3 GB) | Kész (Élő adatokkal - v1.0.0) |
| Háttértárak és lemezek | Részletes storage pool kártyák (local, local-lvm stb.) |
Kész (Élő adatokkal - v1.0.0) |
| Szerver üzemidő | Emberi formátumban kijelzett üzemidő (14 nap...) | Kész (Élő adatokkal - v1.0.0) |
| VM / LXC lista kártyák | 19 db valós entitás (haos, debian, jellyfin stb.) |
Kész (Élő adatokkal - v1.0.0) |
| FastAPI köztes réteg | Python mikroszolgáltatás a PVE API lekérdezésére | Kész (v1.0.0) |
| Dinamikus REST API hívás | Valós idejű adatok lekérése a telefonról (Retrofit) | Kész (v1.0.0) |
| Hiba- és állapotkezelés | Töltésjelző, hálózati hiba, Újrapróbálkozás gomb | Kész (v1.0.0) |
| Kapcsolati beállítások | Szerver URL és kulcs futásidejű módosítása (⚙ gomb) | Kész (v1.0.0) |
| Tailscale HTTPS elérés | Fizikai telefonos kapcsolat HTTPS-en a laptop backendhez | Kész (v1.0.0) |
- Klónozás után lépj be a
backendkönyvtárba, hozd létre a virtuális környezetet és telepítsd a függőségeket:cd backend python -m venv .venv .\.venv\Scripts\pip install -r requirements.txt
- Másold le a példakonfigurációt
.envnéven:Copy-Item .env.example .env - Szerkeszd a
.envfájlt:- Gyors kipróbáláshoz (
DEMOmód): Az alapértelmezettPROXMONITOR_MODE=DEMObeállítással a backend Proxmox szerver nélkül is azonnal indítható. - Éles Proxmox kapcsolathoz (
LIVEmód): Állítsd be aPROXMONITOR_MODE=LIVEértéket, adj meg egy egyedi, erősPROXMONITOR_API_KEYkulcsot (az alapértelmezett példakulccsal aLIVEmód biztonsági okból nem indul el), valamint töltsd ki aPROXMOX_HOST,PROXMOX_NODE,PROXMOX_TOKEN_IDésPROXMOX_TOKEN_SECRETváltozókat.
- Gyors kipróbáláshoz (
- Indítsd el a backend szervert:
.\.venv\Scripts\python run.py
- A szerver alapértelmezetten a biztonságos
http://127.0.0.1:8000címen fut. A Swagger UI felület elérhető a böngészőben:http://127.0.0.1:8000/docs.
- Nyisd meg a projekt gyökerét Android Studio-ban, vagy fordítsd le parancssorból a projekt gyökérkönyvtárában:
.\gradlew.bat assembleDebug - Indítsd el az alkalmazást, majd a jobb felső sarokban található ⚙ Beállítások gombbal add meg a backend URL-t és a
.envfájlban beállítottPROXMONITOR_API_KEYkulcsot:- Android Emulátorban: Alapértelmezetten a
http://10.0.2.2:8000/címet használja, amely közvetlenül eléri a Windows-laptopon futó backend127.0.0.1:8000portját (network_security_config.xmlhelyi fejlesztői kivételével). - Fizikai Android telefonon (Tailscale HTTPS): A Windows-laptopon futó FastAPI backendet Tailscale HTTPS végpontként (
tailscale serve --bg 8000) publikálva a telefon ahttps://<laptop-nev>.<tailnet>.ts.net/címen keresztül, titkosított HTTPS kapcsolaton éri el a szervert. (Séma nélkül megadott távoli címekhez az alkalmazás automatikusanhttps://előtagot állít be.)
- Android Emulátorban: Alapértelmezetten a
- Android egységtesztek (6 db JUnit teszt):
.\gradlew.bat testDebugUnitTest - Python backend tesztek (15 db
pytestteszt):.\backend\.venv\Scripts\python -m pytest backend/tests/test_api.py -v
A tantárgyhoz kapcsolódó részletes szakmai dokumentumok a docs/ mappában találhatók:
