Velocity Proxy ile Network Kurulumu: Eksiksiz Rehber
Velocity kurulumu, velocity.toml yapılandırma, backend sunucu ekleme, modern forwarding, forced hosts, güvenlik, LuckPerms network setup.
# Velocity Nedir?
Velocity, PaperMC ekibi tarafından geliştirilen modern bir Minecraft proxy yazılımıdır. Birden fazla Minecraft sunucusunu tek bir IP altında birleştirerek oyuncuların sunucular arasında sorunsuz geçiş yapmasını sağlar. BungeeCord'un modern, güvenli ve performanslı alternatifidir.
# BungeeCord vs Velocity Karşılaştırması
| Özellik | BungeeCord | Velocity |
|---|---|---|
| Geliştirici | SpigotMC (md_5) | PaperMC |
| Performans | Orta — eski mimarisi nedeniyle daha fazla CPU/RAM kullanır | Yüksek — %50'ye kadar daha az kaynak tüketimi |
| Forwarding | BungeeGuard veya legacy IP forwarding | Modern forwarding (HMAC tabanlı, güvenli) |
| Güvenlik | IP spoofing açığı (ek eklenti gerektirir) | Yerleşik güvenlik, UUID spoofing koruması |
| Plugin API | Eski, callback tabanlı | Modern, event-driven, CompletableFuture desteği |
| Backend Desteği | Spigot, Paper | Paper, Purpur, Fabric, Forge |
| DDoS Koruması | Yok (eklenti gerekir) | Yerleşik rate limiting |
| 1.21+ Uyumluluk | Var | Var — öncelikli destek |
| Aktif Geliştirme | Yavaş | Çok aktif |
| Topluluk | Geniş (eski) | Büyüyen (modern) |
# Velocity Kurulumu
Velocity için ayrı bir kullanıcı ve dizin oluşturun. Proxy, backend sunuculardan bağımsız çalışır.
# Gereksinimler
- Java 17 veya üzeri
- Minimum 512 MB RAM (proxy için)
- Ayrı port (varsayılan: 25577)
- Backend sunucular için ek RAM ve portlar
# İndirme ve İlk Başlatma
İlk başlatmadan sonra aşağıdaki dosyalar oluşur:
# Dizin Yapısı
~/velocity/
├── velocity-3.4.0.jar # Ana proxy dosyası
├── velocity.toml # Ana yapılandırma
├── forwarding.secret # Modern forwarding anahtarı
├── server-icon.png # Sunucu listesi ikonu (64x64)
├── plugins/ # Velocity eklentileri
└── logs/ # Log dosyaları
# velocity.toml Yapılandırması
velocity.toml, proxy'nin tüm davranışını belirleyen ana config dosyasıdır. Her ayarı detaylı inceliyoruz:
# Genel Ayarlar
| Ayar | Varsayılan | Önerilen | Açıklama |
|---|---|---|---|
bind | 0.0.0.0:25577 | 0.0.0.0:25577 | Proxy'nin dinleyeceği IP ve port |
motd | A Velocity Server | Özel MOTD | Sunucu listesinde görünen açıklama (renk kodu destekler) |
show-max-players | 500 | 500 | Sunucu listesinde gösterilen maks oyuncu |
online-mode | true | true | Mojang doğrulaması (premium kontrol) |
force-key-presence | true | true | Chat imzalama anahtarı zorunluluğu (1.19.1+) |
player-info-forwarding-mode | NONE | modern | IP/UUID iletim modu (modern = en güvenli) |
announce-forge | false | false | Forge istemcilerine mod listesi gönder |
# velocity.toml — Genel ayarlar
bind = "0.0.0.0:25577"
motd = "&b&lKEYDAL &fNetwork &7| &aSunucumuza hoş geldiniz!"
show-max-players = 500
online-mode = true
force-key-presence = true
player-info-forwarding-mode = "modern"
# Sunucu Tanımları
[servers] bölümünde backend sunucuları tanımlarsınız. Her sunucu bir isim ve IP:port çiftinden oluşur.
[servers]
lobby = "127.0.0.1:25565"
survival = "127.0.0.1:25566"
skyblock = "127.0.0.1:25567"
creative = "127.0.0.1:25568"
# Oyuncu ilk bağlandığında sırayla denenecek sunucular
try = ["lobby"]
try listesi sıralıdır. İlk sunucu dolu veya kapalıysa ikincisine geçer. Genellikle sadece lobby yeterlidir.# Forced Hosts
Farklı alan adları ile farklı sunuculara doğrudan yönlendirme yapabilirsiniz:
[forced-hosts]
"play.example.com" = ["lobby"]
"survival.example.com" = ["survival"]
"skyblock.example.com" = ["skyblock"]
"creative.example.com" = ["creative"]
Tüm alan adları DNS'te aynı sunucu IP'sine ve Velocity portuna (25577) yönlenmelidir. Velocity, gelen hostname'e göre doğru backend'e yönlendirir.
# DNS A kayıtları (hepsi aynı IP'ye)
play.example.com A 185.x.x.x
survival.example.com A 185.x.x.x
skyblock.example.com A 185.x.x.x
# SRV kaydı (port 25577 ise gerekli)
_minecraft._tcp.play.example.com SRV 0 0 25577 play.example.com
# Gelişmiş Ayarlar
| Ayar | Varsayılan | Açıklama |
|---|---|---|
login-ratelimit | 3000 | Login denemeleri arası minimum süre (ms) |
connection-timeout | 5000 | Backend bağlantı zaman aşımı (ms) |
read-timeout | 30000 | Veri okuma zaman aşımı (ms) |
haproxy-protocol | false | HAProxy PROXY protocol desteği (TCPShield için) |
ping-passthrough | DISABLED | Ping bilgisini backend'den al (ALL, MODS, DESCRIPTION, DISABLED) |
[advanced]
compression-threshold = 256
compression-level = -1
login-ratelimit = 3000
connection-timeout = 5000
read-timeout = 30000
haproxy-protocol = false
tcp-fast-open = false
bungee-plugin-message-channel = true
show-ping-requests = false
failover-on-unexpected-server-disconnect = true
announce-proxy-commands = true
log-command-executions = false
log-player-connections = true
# Backend Sunucu Ekleme
Her backend sunucu bağımsız bir Paper/Purpur instance'ıdır. Farklı portlarda çalışır ve kendi config dosyaları vardır.
# Backend Dizin Yapısı
~/servers/
├── lobby/ # Port 25565
│ ├── paper.jar
│ ├── server.properties
│ └── config/paper-global.yml
├── survival/ # Port 25566
│ ├── paper.jar
│ ├── server.properties
│ └── config/paper-global.yml
└── skyblock/ # Port 25567
├── paper.jar
├── server.properties
└── config/paper-global.yml
# server.properties Ayarları
Her backend sunucunun server.properties dosyasında şu ayarlar kritiktir:
| Ayar | Değer | Açıklama |
|---|---|---|
server-port | 25565/25566/25567 | Her sunucu farklı port |
server-ip | 127.0.0.1 | Sadece localhost'tan bağlantı kabul et |
online-mode | false | Doğrulama Velocity'de yapılıyor |
prevent-proxy-connections | false | Proxy bağlantılarını engelleme |
online-mode=false zorunludur. Doğrulama Velocity üzerinden yapılır. Ancak server-ip=127.0.0.1 ile dışarıdan doğrudan erişimi mutlaka kapatın!# Modern Forwarding Yapılandırması
Modern forwarding, Velocity'nin HMAC tabanlı güvenli IP/UUID iletim sistemidir. Backend sunucular oyuncunun gerçek IP'sini, UUID'sini ve skin bilgilerini güvenli şekilde alır.
# Adım 1: Velocity Tarafı
# velocity.toml
player-info-forwarding-mode = "modern"
Bu ayar zaten varsayılan olarak mevcuttur. forwarding.secret dosyası ilk başlatmada otomatik oluşur.
# Adım 2: Secret'ı Kopyalama
Bu anahtarı her backend sunucuya kopyalamanız gerekir.
# Adım 3: Paper Backend Yapılandırması
Her backend sunucuda config/paper-global.yml dosyasını düzenleyin:
# config/paper-global.yml
proxies:
velocity:
enabled: true
online-mode: true
secret: "aB3dEf7GhI9jKlMnOpQrStUvWxYz12" # forwarding.secret ile birebir aynı
# Forwarding Modları Karşılaştırması
| Mod | Güvenlik | Açıklama |
|---|---|---|
none | Yok | IP/UUID iletimi yok — backend gerçek bilgileri alamaz |
legacy | Düşük | BungeeCord uyumlu — IP spoofing'e açık |
bungeeguard | Orta | BungeeGuard token ile korumalı legacy |
modern | Yüksek | HMAC tabanlı — sadece Velocity destekler, Paper/Purpur gerektirir |
# Sunucular Arası Geçiş
Oyuncuların sunucular arasında geçiş yapması için Velocity yerleşik komutlar sunar:
| Komut | Açıklama | Yetki |
|---|---|---|
/server lobby | Belirtilen sunucuya geç | velocity.command.server |
/server | Sunucu listesini göster | velocity.command.server |
/glist | Tüm sunuculardaki oyuncuları listele | velocity.command.glist |
/send Oyuncu survival | Oyuncuyu belirtilen sunucuya gönder | velocity.command.send |
/send all lobby | Tüm oyuncuları lobby'ye gönder | velocity.command.send |
/velocity plugins | Yüklü Velocity eklentilerini listele | velocity.command.plugins |
/velocity reload | velocity.toml'u yeniden yükle | velocity.command.reload |
Sunucu seçim menüsü (GUI) için LobbyAPI, HubCommand veya ServerSelectorX gibi eklentiler kullanabilirsiniz.
# Güvenlik
Network kurulumunda güvenlik kritiktir. Yanlış yapılandırma UUID spoofing, unauthorized erişim ve DDoS saldırılarına kapı açar.
# Firewall: Sadece Proxy Portunu Aç
Kural: Dışarıya sadece Velocity portu (25577) ve SSH (22) açık olmalı. Backend portları (25565-25567) dışarıdan erişilemez olmalı.
| Port | Durum | Açıklama |
|---|---|---|
| 22/tcp | ALLOW | SSH erişimi |
| 25577/tcp | ALLOW | Velocity proxy — oyuncuların bağlandığı port |
| 25565/tcp | DENY | Lobby backend — sadece localhost |
| 25566/tcp | DENY | Survival backend — sadece localhost |
| 25567/tcp | DENY | Skyblock backend — sadece localhost |
# Backend 25565 Kapat
Backend sunucuların server.properties dosyasında server-ip=127.0.0.1 ayarı ile sadece localhost'tan bağlantı kabul etmelerini sağlayın:
# Her backend sunucunun server.properties dosyasında:
server-ip=127.0.0.1
online-mode=false
# IPWhitelist
Backend sunucularda sadece Velocity'nin IP'sinden gelen bağlantıları kabul etmek için IPWhitelist eklentisi kullanabilirsiniz:
- Backend sunuculara IPWhitelist eklentisini kurun
- Config'de sadece
127.0.0.1(veya Velocity'nin IP'si) izin verin - Doğrudan bağlanan herkes reddedilir
server-ip=127.0.0.1 + firewall kombinasyonu zaten çok güvenlidir. IPWhitelist ek bir katman olarak düşünülmelidir.# DDoS Koruması
- TCPShield — Ücretsiz Minecraft DDoS koruması, reverse proxy
- Cloudflare Spectrum — Ücretli, enterprise düzey TCP proxy
- OVH Game DDoS Protection — OVH sunucularda yerleşik
- Velocity yerleşik rate limiting —
login-ratelimit: 3000ayarı ile brute force engeli
# LuckPerms Network Kurulumu
Network'te yetki yönetimi için LuckPerms'ü tüm sunuculara kurmanız ve ortak bir veritabanı kullanmanız gerekir. Böylece yetkiler tüm sunucularda senkron çalışır.
# MySQL Veritabanı Kurulumu
# LuckPerms Config (Her Sunucuda)
Velocity, lobby, survival ve tüm backend sunuculardaki LuckPerms config.yml dosyasında:
# plugins/LuckPerms/config.yml (tüm sunucularda aynı)
storage-method: mysql
data:
address: localhost:3306
database: luckperms
username: luckperms
password: 'guclu_sifre_buraya'
pool-settings:
maximum-pool-size: 10
# Sunucular arası anlık senkronizasyon
messaging-service: sql
messaging-service: sql ayarı ile bir sunucuda yapılan yetki değişikliği anında diğer sunuculara yansır. Redis kullanmak isterseniz messaging-service: redis yapabilirsiniz.# Network Bazlı Yetkiler (Context)
LuckPerms context sistemi ile belirli sunuculara özel yetkiler atayabilirsiniz:
# Sadece survival sunucusunda fly yetkisi
lp user Oyuncu permission set essentials.fly true server=survival
# Sadece creative sunucusunda gamemode yetkisi
lp group vip permission set essentials.gamemode true server=creative
# Tüm sunucularda geçerli yetki (context belirtilmezse)
lp group default permission set essentials.home true
# Başlatma Scripti
Tüm sunucuları tek komutla başlatmak için bir bash script oluşturun:
#!/bin/bash
# start-network.sh
echo "=== KEYDAL Network Başlatılıyor ==="
# Backend sunucuları screen ile başlat
echo "[1/4] Lobby başlatılıyor..."
screen -dmS lobby bash -c 'cd ~/servers/lobby && java -Xms1G -Xmx1G -XX:+UseG1GC -jar paper.jar --nogui'
sleep 8
echo "[2/4] Survival başlatılıyor..."
screen -dmS survival bash -c 'cd ~/servers/survival && java -Xms4G -Xmx4G -XX:+UseG1GC -jar paper.jar --nogui'
sleep 8
echo "[3/4] Skyblock başlatılıyor..."
screen -dmS skyblock bash -c 'cd ~/servers/skyblock && java -Xms2G -Xmx2G -XX:+UseG1GC -jar paper.jar --nogui'
sleep 8
# Velocity proxy'yi en son başlat
echo "[4/4] Velocity başlatılıyor..."
screen -dmS velocity bash -c 'cd ~/velocity && java -Xms512M -Xmx512M -XX:+UseG1GC -jar velocity.jar'
echo ""
echo "=== Tüm sunucular başlatıldı! ==="
echo "Bağlanmak için: screen -r <isim>"
echo " screen -r lobby"
echo " screen -r survival"
echo " screen -r skyblock"
echo " screen -r velocity"
# Systemd Service
Sunucu yeniden başladığında Velocity'nin otomatik açılması için systemd service oluşturun:
# /etc/systemd/system/velocity.service
[Unit]
Description=Velocity Minecraft Proxy
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/home/minecraft/velocity
ExecStart=/usr/bin/java -Xms512M -Xmx512M -XX:+UseG1GC -jar velocity.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=velocity
[Install]
WantedBy=multi-user.target
After=velocity.service ile Velocity'den sonra başlamalarını sağlayabilirsiniz.# Sık Yapılan Hatalar ve Çözümleri
| Sorun | Neden | Çözüm |
|---|---|---|
| Oyuncu bağlanamıyor | Firewall 25577 portunu engelliyor | ufw allow 25577/tcp kontrol et |
| "Unable to connect to server" hatası | Backend sunucu kapalı veya port yanlış | Backend'in çalıştığını ve doğru portta olduğunu kontrol et |
| "If you wish to use IP forwarding" hatası | Modern forwarding yapılandırılmamış | paper-global.yml'de velocity secret'ı gir |
| Skin'ler görünmüyor | Forwarding modu yanlış | player-info-forwarding-mode = "modern" kontrol et |
| UUID farklı sunucularda değişiyor | Backend'lerde online-mode tutarsız | Tüm backend'lerde online-mode=false ve paper-global'de online-mode: true |
| LuckPerms yetkileri senkron değil | Farklı storage veya messaging-service eksik | Tüm sunucularda aynı MySQL bağlantısı ve messaging-service: sql |
| Oyuncu sunucu değiştirirken bağlantı kopuyor | Backend timeout veya network sorunu | connection-timeout ve read-timeout değerlerini artır |
| velocity.toml değişiklikleri uygulanmıyor | Config yeniden yüklenmemiş | /velocity reload veya proxy'yi yeniden başlat |
| Forced hosts çalışmıyor | DNS kayıtları yanlış veya port uyumsuz | Tüm subdomain'lerin aynı IP:25577'ye yönlendiğini kontrol et |
| Backend'e doğrudan bağlanılabiliyor | server-ip=127.0.0.1 ayarlanmamış veya firewall eksik | server.properties + firewall birlikte kontrol et |
# Önerilen Velocity Eklentileri
| Eklenti | İşlev | Zorunlu mu? |
|---|---|---|
| LuckPerms (Velocity) | Network genelinde yetki yönetimi | Evet |
| SignedVelocity | Chat mesaj imzalama desteği (1.19.1+) | Önerilir |
| MiniMOTD | Özelleştirilebilir MOTD, sunucu ikonu, oyuncu sayısı | İsteğe bağlı |
| Geyser (Velocity) | Bedrock oyuncularının Java sunucuya bağlanması | İsteğe bağlı |
| ViaVersion (Velocity) | Farklı MC sürümlerinden bağlanma desteği | Önerilir |
| LimboFilter | Bot saldırılarına karşı antibot filtre | Önerilir |
| VelocityTools | Maintenance mode, MOTD yönetimi | İsteğe bağlı |
| NanoLimbo | Ultra hafif limbo sunucu (queue/maintenance) | İsteğe bağlı |
# Faydalı Kaynaklar
PaperMC'nin resmi Velocity belgeleri — yapılandırma, API ve eklenti geliştirme.
Network genelinde yetki yönetimi ve MySQL kurulumu.
Backend sunucu kurulumu ve temel yapılandırma.
Backend sunucuların performans ayarları.
Velocity proxy, backend sunucular, modern forwarding, LuckPerms network setup, firewall ve DDoS koruması dahil profesyonel Minecraft network kurulumu için KEYDAL ekibine ulaşın. Teklif alın →