Files
2026-03-24 00:26:25 +01:00

259 lines
6.1 KiB
Markdown

# BetterDesk Server v3.0 - Ulepszony System Statusu
## Przegląd Zmian
Wersja 3.0 wprowadza znacząco ulepszony system śledzenia statusu urządzeń:
### Kluczowe Ulepszenia
| Cecha | v2.0 | v3.0 |
|-------|------|------|
| Timeout wykrywania offline | Stały 30s | **Konfigurowalny (domyślnie 15s)** |
| Interwał heartbeat | Stały 5s | **Konfigurowalny (domyślnie 3s)** |
| Statusy urządzeń | Online/Offline | **Online/Degraded/Critical/Offline** |
| Statystyki | Brak | **Pełne statystyki z API** |
| Konfiguracja runtime | Brak | **Przez API i zmienne środowiskowe** |
---
## Nowe Statusy Urządzeń
```
┌─────────────────────────────────────────────────────────┐
│ ONLINE │ Wszystko OK, heartbeat otrzymany │
├─────────────────────────────────────────────────────────┤
│ DEGRADED │ 2-3 pominięte heartbeaty │
├─────────────────────────────────────────────────────────┤
│ CRITICAL │ 4+ pominięte heartbeaty, wkrótce offline │
├─────────────────────────────────────────────────────────┤
│ OFFLINE │ Przekroczony timeout, brak połączenia │
└─────────────────────────────────────────────────────────┘
```
---
## Konfiguracja
### Zmienne Środowiskowe
| Zmienna | Domyślnie | Opis |
|---------|-----------|------|
| `PEER_TIMEOUT_SECS` | 15 | Sekundy do uznania za offline |
| `HEARTBEAT_INTERVAL_SECS` | 3 | Interwał sprawdzania statusu |
| `HEARTBEAT_WARNING_THRESHOLD` | 2 | Ilość pominiętych HB dla DEGRADED |
| `HEARTBEAT_CRITICAL_THRESHOLD` | 4 | Ilość pominiętych HB dla CRITICAL |
| `HEARTBEAT_VERBOSE` | false | Szczegółowe logowanie |
| `DB_SYNC_INTERVAL_SECS` | 5 | Interwał synchronizacji z DB |
### Konfiguracja przez Systemd
```ini
# /etc/systemd/system/rustdesksignal.service
[Service]
Environment="PEER_TIMEOUT_SECS=10"
Environment="HEARTBEAT_INTERVAL_SECS=2"
Environment="HEARTBEAT_VERBOSE=true"
```
### Konfiguracja przez Docker
```yaml
services:
hbbs:
environment:
- PEER_TIMEOUT_SECS=10
- HEARTBEAT_INTERVAL_SECS=2
```
---
## Nowe Endpointy API
### GET /api/config
Pobiera aktualną konfigurację serwera.
**Response:**
```json
{
"success": true,
"data": {
"peer_timeout_secs": 15,
"heartbeat_interval_secs": 3,
"warning_threshold": 2,
"critical_threshold": 4,
"verbose_logging": false,
"db_sync_interval_secs": 5
},
"version": "3.0.0"
}
```
### POST /api/config
Aktualizuje konfigurację (zapisuje do bazy danych).
**Request:**
```json
{
"key": "peer_timeout_secs",
"value": "10"
}
```
**Response:**
```json
{
"success": true,
"data": true,
"version": "3.0.0"
}
```
### GET /api/peers/stats
Zwraca szczegółowe statystyki urządzeń.
**Response:**
```json
{
"success": true,
"data": {
"total_peers": 150,
"online_peers": 87,
"offline_peers": 63,
"banned_peers": 2,
"total_heartbeats": 1548762
},
"version": "3.0.0"
}
```
### GET /api/server/stats
Statystyki serwera.
**Response:**
```json
{
"success": true,
"data": {
"uptime_seconds": 86400,
"memory_usage_mb": 45.2,
"api_version": "3.0.0",
"db_version": "3.0"
},
"version": "3.0.0"
}
```
---
## Nowe Kolumny Bazy Danych
Migracja automatycznie dodaje:
| Kolumna | Typ | Opis |
|---------|-----|------|
| `last_heartbeat` | DATETIME | Czas ostatniego heartbeatu |
| `heartbeat_count` | INTEGER | Licznik heartbeatów |
| `previous_ids` | TEXT (JSON) | Historia poprzednich ID |
| `id_changed_at` | DATETIME | Data zmiany ID |
### Tabela server_config
Nowa tabela dla konfiguracji runtime:
```sql
CREATE TABLE server_config (
key VARCHAR(100) PRIMARY KEY,
value TEXT NOT NULL,
updated_at DATETIME
);
```
---
## Rekomendowane Ustawienia
### Środowisko Produkcyjne (stabilność)
```bash
PEER_TIMEOUT_SECS=15
HEARTBEAT_INTERVAL_SECS=3
```
### Środowisko Krytyczne (szybka reakcja)
```bash
PEER_TIMEOUT_SECS=8
HEARTBEAT_INTERVAL_SECS=2
```
### Środowisko z Wolnymi Łączami
```bash
PEER_TIMEOUT_SECS=30
HEARTBEAT_INTERVAL_SECS=5
```
---
## Migracja z v2.0
1. **Backup bazy danych:**
```bash
cp /opt/rustdesk/db_v2.sqlite3 /opt/rustdesk/db_v2.sqlite3.backup
```
2. **Wymiana binarek:**
```bash
sudo ./install-improved.sh --fix
```
3. **Restart usług:**
```bash
sudo systemctl restart rustdesksignal rustdeskrelay
```
Migracja schematu bazy danych wykonuje się automatycznie przy pierwszym uruchomieniu.
---
## Pliki Źródłowe v3.0
| Plik | Opis |
|------|------|
| `peer_v3.rs` | Ulepszony system statusu peer |
| `database_v3.rs` | Rozszerzona obsługa bazy danych |
| `http_api_v3.rs` | Nowe endpointy API |
### Użycie w Kompilacji
Aby użyć nowych plików, zamień oryginalne:
```bash
cp hbbs-patch-v2/src/peer_v3.rs hbbs-patch-v2/src/peer.rs
cp hbbs-patch-v2/src/database_v3.rs hbbs-patch-v2/src/database.rs
cp hbbs-patch-v2/src/http_api_v3.rs hbbs-patch-v2/src/http_api.rs
```
Następnie skompiluj:
```bash
./build-betterdesk.sh --auto
```
---
## Znane Ograniczenia
1. **Zmiany konfiguracji przez API** wymagają restartu dla niektórych parametrów
2. **WebSocket real-time push** nie jest jeszcze zaimplementowany (planowane w v3.1)
3. **Zmiana ID urządzeń** jest przygotowana w bazie danych ale wymaga zmian w kliencie RustDesk
---
## Changelog
### v3.0.0 (2026-02-06)
- Konfigurowalny timeout offline
- Konfigurowalny interwał heartbeat
- Statusy pośrednie (DEGRADED, CRITICAL)
- Nowe endpointy API (/api/config, /api/peers/stats, /api/server/stats)
- Automatyczne migracje bazy danych
- Tabela server_config dla runtime configuration
- Batch operations dla lepszej wydajności