Bu rehber, temiz bir Ubuntu/Debian sunucusunda RustDesk Server ve BetterDesk Console'u sıfırdan kurmak için gereken tüm adımları içerir.
cd /root
git clone https://github.com/UNITRONIX/Rustdesk-FreeConsole.git
cd Rustdesk-FreeConsole
curl -fsSL https://get.docker.com | sh
Kurulumu doğrula:
docker --version
docker compose version
Orijinal dosyada RustDesk image'ı shell içermediği için hatalar oluşuyor. Aşağıdaki düzeltmeleri yap:
docker-compose.yml dosyasını aç:
nano docker-compose.yml
HBBS bölümünü şu şekilde değiştir (satır 8-40 arası):
# RustDesk HBBS (Signal Server) with BetterDesk API
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: betterdesk-hbbs
hostname: betterdesk-hbbs
command: hbbs -k _
ports:
- "21115:21115" # TCP hole punching
- "21116:21116/tcp" # TCP relay
- "21116:21116/udp" # UDP hole punching
volumes:
- rustdesk-data:/root # RustDesk data persistence
environment:
- ALWAYS_USE_RELAY=N
- ENCRYPTED_ONLY=1
networks:
- betterdesk-net
restart: unless-stopped
Not:
commandsatırındakish -c "..."bloğunu kaldırıp sadecehbbs -k _yap. Healthcheck bölümünü tamamen kaldır.
HBBR bölümünü şu şekilde değiştir (satır 42-66 arası):
# RustDesk HBBR (Relay Server) with BetterDesk
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: betterdesk-hbbr
hostname: betterdesk-hbbr
command: hbbr -k _
ports:
- "21117:21117" # Relay port
volumes:
- rustdesk-data:/root # Shared data with HBBS
networks:
- betterdesk-net
restart: unless-stopped
depends_on:
- hbbs
Not:
commandsatırındakish -c "..."bloğunu kaldırıp sadecehbbr -k _yap.depends_onaltındakicondition: service_healthysatırını kaldır.
betterdesk-console bölümünde (satır 78):
# ÖNCE (hatalı):
- rustdesk-data:/opt/rustdesk:ro # Read-only access to RustDesk data
# SONRA (düzeltilmiş):
- rustdesk-data:/opt/rustdesk # RustDesk data access
Not:
:ro(read-only) kısmını kaldır, yoksa veritabanına yazılamaz.
Orijinal entrypoint dosyası peer tablosuna gerekli sütunları eklemiyor. Düzelt:
nano docker-entrypoint.sh
print('🔧 Creating indexes...') satırını bul ve öncesine şu bloğu ekle:
print('🔧 Adding columns to peer table...')
# Add columns to peer table for BetterDesk features
peer_columns = [
('is_deleted', 'INTEGER DEFAULT 0'),
('deleted_at', 'DATETIME'),
('is_banned', 'INTEGER DEFAULT 0'),
('banned_at', 'DATETIME'),
('banned_by', 'TEXT'),
('ban_reason', 'TEXT'),
('last_online', 'DATETIME'),
]
# Get existing columns
cursor.execute('PRAGMA table_info(peer)')
existing_columns = [row[1] for row in cursor.fetchall()]
for col_name, col_def in peer_columns:
if col_name not in existing_columns:
try:
cursor.execute(f'ALTER TABLE peer ADD COLUMN {col_name} {col_def}')
print(f' ✓ Added {col_name}')
except Exception as e:
print(f' ⚠ {col_name}: {e}')
Ayrıca print('🔧 Creating indexes...') bölümünün sonuna şu satırları ekle:
cursor.execute('CREATE INDEX IF NOT EXISTS idx_peer_is_banned ON peer(is_banned)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_peer_is_deleted ON peer(is_deleted)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_peer_last_online ON peer(last_online)')
mkdir -p data
export FLASK_SECRET_KEY=$(openssl rand -hex 32)
docker compose build --no-cache
docker compose up -d
Container başladıktan sonra veritabanı dosyaları oluşur. İzinleri düzelt:
# 5 saniye bekle (veritabanının oluşması için)
sleep 5
# İzinleri düzelt
chmod 777 data
chmod 666 data/db_v2.sqlite3*
docker restart betterdesk-console
# Container durumlarını kontrol et
docker compose ps
# Tüm container'lar "Up" durumunda olmalı
# betterdesk-hbbs, betterdesk-hbbr, betterdesk-console
Logları kontrol et:
docker logs betterdesk-console --tail=30
Şuna benzer çıktı görmelisin:
✅ Created default admin user
============================================================
🔐 DEFAULT ADMIN CREDENTIALS:
============================================================
Username: admin
Password: XXXXXXXXXXXXXXXX
============================================================
Önemli: Bu şifreyi not al!
# Sunucu IP adresi
hostname -I | awk '{print $1}'
# Public Key (RustDesk client için gerekli)
cat data/id_ed25519.pub
| Servis | URL/Port |
|---|---|
| Web Console | http://SUNUCU_IP:5000 |
| HBBS Signal | Port 21115, 21116 |
| HBBR Relay | Port 21117 |
RustDesk uygulamasında Settings → Network → ID/Relay Server:
SUNUCU_IPSUNUCU_IPdata/id_ed25519.pub dosyasındaki değer# Durumu kontrol et
docker compose ps
# Logları izle
docker compose logs -f
# Tüm servisleri yeniden başlat
docker compose restart
# Servisleri durdur
docker compose down
# Servisleri başlat
docker compose up -d
# Admin şifresini tekrar görüntüle
docker logs betterdesk-console 2>&1 | grep -A5 "DEFAULT ADMIN"
Veritabanına eksik sütunlar eklenmemiş. Manuel ekle:
docker exec betterdesk-console sqlite3 /opt/rustdesk/db_v2.sqlite3 "
ALTER TABLE peer ADD COLUMN is_deleted INTEGER DEFAULT 0;
ALTER TABLE peer ADD COLUMN deleted_at DATETIME;
ALTER TABLE peer ADD COLUMN is_banned INTEGER DEFAULT 0;
ALTER TABLE peer ADD COLUMN banned_at DATETIME;
ALTER TABLE peer ADD COLUMN banned_by TEXT;
ALTER TABLE peer ADD COLUMN ban_reason TEXT;
ALTER TABLE peer ADD COLUMN last_online DATETIME;
CREATE INDEX IF NOT EXISTS idx_peer_is_banned ON peer(is_banned);
CREATE INDEX IF NOT EXISTS idx_peer_is_deleted ON peer(is_deleted);
CREATE INDEX IF NOT EXISTS idx_peer_last_online ON peer(last_online);
"
docker restart betterdesk-console
Data dizini izinleri yanlış:
chmod 777 data
chmod 666 data/db_v2.sqlite3*
docker restart betterdesk-console
docker-compose.yml'daki shell komutları düzeltilmemiş. Adım 3'ü tekrar uygula.
docker logs betterdesk-console 2>&1 | grep -A5 "DEFAULT ADMIN"
veya
cat /var/lib/docker/volumes/rustdesk-freeconsole_console-data/_data/admin_credentials.txt
UFW kullanıyorsan:
ufw allow 21115:21117/tcp
ufw allow 21116/udp
ufw allow 5000/tcp
ufw reload
Tüm düzeltmeler yapıldıktan sonra, bu script ile hızlı kurulum yapabilirsin:
#!/bin/bash
set -e
# Docker kur
curl -fsSL https://get.docker.com | sh
# Repo'yu klonla
cd /root
git clone https://github.com/UNITRONIX/Rustdesk-FreeConsole.git
cd Rustdesk-FreeConsole
# Data dizini oluştur
mkdir -p data
# docker-compose.yml düzelt (sed ile)
sed -i 's/command: >$/command: hbbs -k _/' docker-compose.yml
sed -i '/sh -c "/,/fi"/d' docker-compose.yml
sed -i 's/:ro.*# Read-only/ # RustDesk/' docker-compose.yml
sed -i '/condition: service_healthy/d' docker-compose.yml
sed -i '/healthcheck:/,/start_period:/d' docker-compose.yml
# Build ve başlat
export FLASK_SECRET_KEY=$(openssl rand -hex 32)
docker compose build
docker compose up -d
# Bekle ve izinleri düzelt
sleep 10
chmod 777 data
chmod 666 data/db_v2.sqlite3* 2>/dev/null || true
# Veritabanı sütunlarını ekle
docker exec betterdesk-console sqlite3 /opt/rustdesk/db_v2.sqlite3 "
ALTER TABLE peer ADD COLUMN is_deleted INTEGER DEFAULT 0;
ALTER TABLE peer ADD COLUMN deleted_at DATETIME;
ALTER TABLE peer ADD COLUMN is_banned INTEGER DEFAULT 0;
ALTER TABLE peer ADD COLUMN banned_at DATETIME;
ALTER TABLE peer ADD COLUMN banned_by TEXT;
ALTER TABLE peer ADD COLUMN ban_reason TEXT;
ALTER TABLE peer ADD COLUMN last_online DATETIME;
" 2>/dev/null || true
# Yeniden başlat
docker restart betterdesk-console
# Bilgileri göster
echo ""
echo "========================================"
echo "KURULUM TAMAMLANDI!"
echo "========================================"
echo "Web Console: http://$(hostname -I | awk '{print $1}'):5000"
echo "Public Key: $(cat data/id_ed25519.pub)"
echo ""
docker logs betterdesk-console 2>&1 | grep -A5 "DEFAULT ADMIN"
Son Güncelleme: 2026-02-01