Valheim sunucu kurulumu SteamCMD üzerinden yapılır: 896660 numaralı dedicated server uygulaması anonim girişle indirilir, start_server.sh betiğine sunucu adı, dünya ve parola yazılır ve 2456-2458/UDP aralığı açılır. Yarım saatlik bir iş. Asıl takılınan yer kurulum değil, parola kuralı ve dünya dosyalarının yedeklenmesi.
Bu rehberde Ubuntu 24.04 LTS üzerinde adım adım kurulumu anlatıyoruz; Windows karşılıklarını her başlıkta kısa kısa veriyoruz. Başlatma parametreleri, crossplay ayarı, yetkili listesi, BepInEx ile mod desteği, yedekleme ve donanım planlaması sırayla ele alınıyor.
Midgard, parola Midgard123 olursa sunucu açılışta kapanır. En sık gelen “sunucu açılıyor sonra hemen kapanıyor” bildiriminin sebebi tam olarak budur.Kurulum Öncesi Hazırlık#
- İşletim sistemi
- Ubuntu 24.04 LTS (birinci tercih) veya Windows Server 2022/2025.
- Portlar
- 2456/UDP (oyun), 2457/UDP (sorgu), 2458/UDP (ayrılmış).
- Disk
- Sunucu dosyaları birkaç GB; dünyalar ve yedeklerle birlikte 50 GB NVMe SSD alt sınır.
- Linux ek paketleri
lib32gcc-s1,lib32stdc++6,curl,tar.- Steam hesabı
- Gerekmez — sunucu paketi anonim girişle indirilir.
- Erişim
- Kök yetkili VDS veya dedicated sunucu. Paylaşımlı hostingde çalışmaz.
Sunucuya bağlanma kısmını burada tekrarlamıyorum; SSH ile sunucuya bağlanma ve Windows tarafı için uzak masaüstü bağlantısı sayfalarına bakabilirsiniz. Yeni bir makine aldıysanız önce VDS ilk ayarlar rehberindeki temizlik adımlarını uygulayın.
-
SteamCMD — resmî doküman ve indirmeZorunluAç
-
Valheim resmî sitesi (Iron Gate)Aç
-
BepInEx — resmî depo (mod altyapısı)İsteğe bağlıAç
-
Notepad++ — betik ve liste dosyalarını düzenlemeİndir
-
WinSCP — dünya dosyalarını indirmeİndir
-
PuTTY — SSH bağlantısıİndir
Valheim sunucu dosyaları yalnızca SteamCMD üzerinden indirilir. Üçüncü taraf sitelerden hazır paket indirmeyin; sürüm numarası her yamada değiştiği için burada sabit bir dosya adı vermiyoruz.
Adım 1: SteamCMD ile Sunucu Dosyalarını Kurma#
Önce ayrı bir sistem kullanıcısı açın. Oyun sunucusunu root ile çalıştırmak, bir gün gelip başınızı ağrıtacak bir alışkanlıktır.
# Ubuntu 24.04 — 32 bit kutuphaneler SteamCMD icin gerekli
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tar
sudo adduser --disabled-password --gecos "" valheim
sudo su - valheim
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# Sunucu dosyalarini indir (uygulama kimligi 896660)
cd ~/steamcmd
./steamcmd.sh +force_install_dir /home/valheim/server \
+login anonymous \
+app_update 896660 validate \
+quit
REM Windows Server
C:\steamcmd\steamcmd.exe +force_install_dir C:\valheim ^
+login anonymous ^
+app_update 896660 validate ^
+quit
Aynı komut güncelleme komutudur da. Iron Gate bir yama yayınladığında app_update 896660 validate satırını tekrar çalıştırırsınız; sunucu sürümü istemciyle uyuşmazsa oyuncular bağlanamaz.
steamclient.so kütüphanesini bulamaz ve açılışta sessizce kapanır. Bu ihtimali baştan ortadan kaldırmak için kütüphaneyi beklenen konuma kopyalayın: mkdir -p ~/.steam/sdk64 && cp ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/Adım 2: Başlatma Betiği ve Parametreler#
Sunucu klasöründe hazır bir start_server.sh dosyası gelir. Bu dosyayı doğrudan düzenlemek yerine kopyasını almak daha sağlıklı, çünkü her güncellemede orijinali üzerine yazılır.
cd /home/valheim/server
cp start_server.sh baslat.sh
nano baslat.sh
#!/bin/bash
# /home/valheim/server/baslat.sh
export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppId=892970
echo "Valheim sunucusu baslatiliyor..."
./valheim_server.x86_64 \
-name "Batihost Valheim" \
-port 2456 \
-world "Yggdrasil" \
-password "ruzgarli-kayin-42" \
-savedir /home/valheim/kayit \
-public 1 \
-crossplay
export LD_LIBRARY_PATH=$templdpath
REM Windows — C:\valheim\baslat.bat
@echo off
set SteamAppId=892970
cd /d C:\valheim
valheim_server.exe -name "Batihost Valheim" -port 2456 -world "Yggdrasil" -password "ruzgarli-kayin-42" -public 1
pause
| Parametre | Ne yapar | Not |
|---|---|---|
-name | Sunucu listesinde görünen ad | Parolayla aynı kelimeyi içeremez |
-port | Oyun portu | Sorgu portu otomatik olarak bir fazlası (2457) olur |
-world | Yüklenecek dünyanın adı | Dünya yoksa oluşturulur; parolayla aynı olamaz |
-password | Giriş parolası | Zorunlu, en az 5 karakter |
-savedir | Kayıt klasörünü değiştirir | Yedeklemeyi kolaylaştırır, şiddetle önerilir |
-public | Topluluk listesinde görünme | 1 görünür, 0 gizli (IP ile girilir) |
-crossplay | PlayFab üzerinden platformlar arası oyun | Xbox ve Microsoft Store oyuncuları için |
-saveinterval | Otomatik kayıt aralığı (saniye) | Varsayılan 1800; 900 daha güvenli |
-backups | Tutulacak otomatik yedek sayısı | Gerçek yedeğin yerini tutmaz |
chmod +x /home/valheim/server/baslat.sh
mkdir -p /home/valheim/kayit
/home/valheim/server/baslat.sh
Konsolda “Game server connected” satırını gördüğünüzde sunucu ayaktadır. Bu satır gelmiyorsa neredeyse her zaman parola kuralı ya da port çakışması söz konusudur. Şöyle ki: Valheim sunucusu port çakışmasını açıkça söylemez, sadece kapanır.
Adım 3: Portları Açma ve Bağlanma#
# Ubuntu / Debian — UFW
sudo ufw allow 22/tcp
sudo ufw allow 2456:2458/udp
sudo ufw enable
sudo ufw status numbered
# Portlar gercekten dinleniyor mu?
ss -lnup | grep 245
# Windows Server
New-NetFirewallRule -DisplayName "Valheim" -Direction Inbound -LocalPort 2456-2458 -Protocol UDP -Action Allow
Oyuncular oyunda karakterini seçtikten sonra Join Game → Join IP yolunu izler, sunucunun genel IP adresini ve portu (2456) girer, ardından parolayı yazar. Crossplay açıksa katılım kodu kullanılır. Sunucunuz evdeki bir bilgisayardaysa modemde port yönlendirmesi gerekir; mantığını port açma rehberinde anlattık. Güvenlik duvarı kuralının tamamı için firewall yapılandırması sayfasına bakın.
Adım 4: Sunucuyu Servis Olarak Çalıştırma#
SSH oturumunu kapattığınızda sunucu da kapanır. Hızlı çözüm screen, kalıcı çözüm systemd. Uzun süre ayakta kalacak bir sunucu için ikincisini seçin.
# /etc/systemd/system/valheim.service
[Unit]
Description=Valheim Dedicated Server
After=network.target
[Service]
Type=simple
User=valheim
WorkingDirectory=/home/valheim/server
ExecStartPre=/home/valheim/steamcmd/steamcmd.sh +force_install_dir /home/valheim/server +login anonymous +app_update 896660 validate +quit
ExecStart=/home/valheim/server/baslat.sh
Restart=on-failure
RestartSec=20
KillSignal=SIGINT
TimeoutStopSec=120
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
sudo systemctl status valheim
journalctl -u valheim -f
KillSignal=SIGINT satırını silmeyin. Valheim son kaydı yalnızca düzgün bir kapatma sinyali aldığında yapar; süreç zorla öldürülürse son kayıttan sonraki tüm ilerleme kaybolur. TimeoutStopSec değerini de kısaltmayın, büyük dünyalarda kapanış kaydı otuz saniyeyi bulabilir.Servis mantığının ayrıntısı ve arka planda çalıştırma yöntemleri için systemd servisi oluşturma ile screen ve tmux kullanımı sayfalarına bakın; oradaki yapı birebir Valheim’e uyarlanabiliyor. Windows tarafında aynı işi NSSM ile valheim_server.exe’yi hizmete dönüştürerek yaparsınız.
Crossplay ve Yetkili Yönetimi#
Crossplay, -crossplay parametresiyle açılır ve sunucuyu Steam ağının yanı sıra PlayFab üzerinden de yayınlar. Böylece Xbox ve Microsoft Store oyuncuları da katılabilir. Karşılığında bir davranış değişikliği var: crossplay açık sunuculara IP yerine join code ile girilir, kod sunucu günlüğünde yazar.
# Katilim kodunu gunlukten cikar
journalctl -u valheim | grep -i "join code"
Yetkili, yasaklı ve izinli oyuncu listeleri kayıt klasörünün kökünde düz metin dosyaları olarak durur:
/home/valheim/kayit/adminlist.txt Yonetici kimlikleri
/home/valheim/kayit/bannedlist.txt Yasakli kimlikler
/home/valheim/kayit/permittedlist.txt Beyaz liste (doluysa sadece bunlar girer)
Her satıra bir kimlik yazılır: Steam oyuncuları için SteamID64, crossplay ile bağlananlar için PlayFab kimliği. Dosyaları düzenledikten sonra sunucuyu yeniden başlatın. Yetkili olan oyuncu oyun içinde F5 ile konsolu açıp ban, kick, save gibi komutları kullanabilir.
Dünya Dosyaları ve Yedekleme#
Valheim her dünyayı iki dosya olarak saklar: .db uzantılı olan dünyanın kendisidir, .fwl ise tohum ve ilerleme bilgisini tutar. İkisi bir arada olmadan dünya açılmaz — sadece .db dosyasını kopyalayıp yedek aldığını sanan çok kullanıcı gördük. Yanlarında .db.old ve .fwl.old yedekleri de bulunur; bunlar bir önceki kaydı temsil eder, gerçek yedek yerine geçmez.
Linux : ~/.config/unity3d/IronGate/Valheim/worlds_local/
Windows: %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\
-savedir kullanildiysa: <savedir>/worlds_local/
#!/bin/bash
# /home/valheim/yedek.sh
TARIH=$(date +%F-%H%M)
HEDEF=/home/valheim/yedek
KAYNAK=/home/valheim/kayit
mkdir -p $HEDEF
tar -czf $HEDEF/valheim-$TARIH.tar.gz $KAYNAK
# 14 gunden eski yedekleri sil
find $HEDEF -name "valheim-*" -mtime +14 -delete
echo "$(date) yedek tamam: valheim-$TARIH.tar.gz"
chmod +x /home/valheim/yedek.sh
crontab -e
# Her gun 04:00 ve 16:00'da yedek al
0 4,16 * * * /home/valheim/yedek.sh >> /var/log/valheim-yedek.log 2>&1
Zamanlanmış görev kurmayı bilmiyorsanız cron job rehberimiz yeterli olur; kaç kopya tutulacağı ve yedeğin nerede duracağı konusunda 3-2-1 yedekleme kuralına bakın. Snapshot ile dosya yedeği arasındaki farkı da ayrı bir sayfada anlattık.
BepInEx ile Mod Kurulumu#
Valheim’in mod ekosistemi BepInEx üzerine kuruludur. Sunucu tarafına BepInEx paketini açar, mod .dll dosyalarını BepInEx/plugins/ klasörüne atarsınız. Ama işin aslı burada: modların çoğu hem sunucuda hem istemcide bulunmak zorundadır ve sürümleri birebir aynı olmalıdır. Tek taraflı kurulan mod ya hiç çalışmaz ya da oyuncuyu bağlanırken atar.
# Sunucu tarafinda beklenen klasor yapisi
/home/valheim/server/BepInEx/
/home/valheim/server/BepInEx/plugins/ <- mod .dll dosyalari buraya
/home/valheim/server/BepInEx/config/ <- mod ayarlari
/home/valheim/server/doorstop_libs/
Donanım Önerisi#
Valheim sunucusu ana oyun döngüsünü ağırlıklı olarak tek bir çekirdek üzerinde işler. Yani çekirdek sayısını artırmak beklediğiniz faydayı vermez; belirleyici olan işlemcinin saat hızıdır. Düşük frekanslı, çok çekirdekli sunucu işlemcileri Valheim için kötü bir tercihtir.
| Kullanım | RAM | İşlemci | Disk |
|---|---|---|---|
| 2-5 oyuncu, arkadaş grubu | 8 GB | Ryzen 9 3900X ve üzeri | 50 GB NVMe SSD |
| 5-10 oyuncu, yoğun inşa | 12 GB | Ryzen 9 7900X | 50 GB NVMe SSD |
| 10 oyuncu, modlu sunucu | 16 GB | Ryzen 9 7900X / 7950X | 100 GB NVMe SSD |
| Birden fazla dünya / sunucu örneği | 32 GB ve üzeri | Ryzen 9 7950X | 200 GB+ NVMe SSD |
Bellek tarafında bir ayrıntı var: Valheim’in kullanımı oturum uzadıkça artar, çünkü oyuncular haritada dolaştıkça yüklenen bölge sayısı büyür. Günlük bir yeniden başlatma bu birikmeyi sıfırlar ve bellek kullanımını izlemek için monitoring kurulumunu öneririz.
# Her gun 05:00'te yeniden baslat
sudo crontab -e
0 5 * * * /usr/bin/systemctl restart valheim
# Bellek kullanimini izle
ps -o pid,rss,etime,comm -C valheim_server.x86_64
free -h
Disk tarafında NVMe SSD tercih edin: Valheim kayıt sırasında dünya veritabanının tamamını yeniden yazar ve yavaş bir diskte bu işlem her kayıtta hissedilir bir donma yaratır. Türkiye lokasyonlu, yüksek frekanslı seçenekler için yüksek frekanslı VDS paketlerine bakabilir, tam izolasyon isterseniz dedicated sunucu tarafını değerlendirebilirsiniz. Hangisi size uyar, VDS mi dedicated mi karşılaştırmasında anlattık.
Sık Karşılaşılan Sorunlar#
| Belirti | Sebep | Çözüm |
|---|---|---|
| Sunucu açılıyor, hemen kapanıyor | Parola kuralı ihlali | En az 5 karakter, sunucu/dünya adıyla aynı olmasın |
| Sunucu listede görünmüyor | 2457/UDP kapalı veya -public 0 | Sorgu portunu açın, parametreyi 1 yapın |
| Oyuncular bağlanamıyor | 2456/UDP kapalı | UFW veya Windows kuralını ekleyin |
| Açılışta sessizce kapanıyor | steamclient.so bulunamıyor | ~/.steam/sdk64/ altına kopyalayın |
| “Incompatible version” hatası | Sunucu sürümü eski | app_update 896660 validate çalıştırın |
| Dünya boş açılıyor | Yanlış -savedir veya eksik .fwl | İki dosyayı birlikte geri yükleyin |
| İlerleme kayboluyor | Süreç zorla öldürülüyor | KillSignal=SIGINT ve yeterli TimeoutStopSec |
| Zamanla lag artıyor | Bellek birikmesi | Günlük yeniden başlatma kurun |
| Modlu sunucuya girilemiyor | İstemci-sunucu mod sürümü farkı | İki tarafta aynı sürümü kullanın |
Özetle#
Valheim sunucu kurulumu üç adıma iner: SteamCMD ile 896660 uygulamasını indirmek, başlatma betiğinde ad, dünya ve parolayı tanımlamak, 2456-2458/UDP aralığını açmak. Steam hesabı gerekmez, anonim giriş yeterlidir.
İki ayrıntıyı atlamayın. Parola en az 5 karakter olmalı ve sunucu ya da dünya adıyla çakışmamalı; çakışırsa sunucu hiç açılmaz. Dünya .db ve .fwl dosyalarının ikisi birden yedeklenmeli, tek başına biri işe yaramaz. Bunu hala atlayan çok oluyor.
Kalıcı çalışma için systemd servisi kurun ve KillSignal=SIGINT satırını bırakın — Valheim son kaydı yalnızca düzgün kapanışta yapar. Crossplay istiyorsanız -crossplay parametresi yeterli, karşılığında oyuncular katılım koduyla bağlanır. Mod kuracaksanız BepInEx’i hem sunucuya hem istemcilere kurmayı unutmayın.
Donanımda 8 GB RAM, yüksek saat hızlı bir Ryzen 9 ve NVMe SSD sağlıklı bir başlangıç; modlu ya da kalabalık bir dünyada 16 GB planlayın. Benzer kurulumlar için Palworld dedicated server, Project Zomboid sunucusu ve Terraria sunucu kurulumu rehberlerimize, altyapı tarafı için Ubuntu Server kurulumu sayfasına bakabilirsiniz. Takıldığınız bir yer olursa destek talebi açmanız yeterli.