Steam + Origin + Battle.net + Riot Games + Frontier Launchpad + Windows Cache-Server

Es steht eine LAN-Party bevor und du hast nur ein langsames Internet zur Verfügung?
Du hast eine große Familie, welche täglich ihre Spielbibliothek herunterladen muss?
Wie wäre es mit einem Cache-Server?

Mit diesem Cache-Server kannst du Steam, Origin, Blizzard (Battle.net), Riot Games, Frontier Launchpad und Windows (WSUS) auf deinen Festplatten zwischenspeichern und an alle in deinem Netzwerk verteilen. Somit sind Datenraten von mehreren 100Mbit/s oder gar über 1Gbit/s möglich!



Vorraussetzungen:
– Linux-System (Ubuntu oder Mint empfehlenswert!)
– Viel Festplattenspeicher (200GB und mehr empfehlenswert)
– Schnellen Festplattenspeicher (SSDs oder mehrere HDDs in RAID0)
– Eine gute Netzwerkanbindung (LAN und 1Gbit/s empfohlen)
– Eine CPU min minimum 4 Threads und minimum 2GHz pro Thread
– Minimum 2GB RAM – Empfohlen sind min. 4GB RAM
– Minimum 3 statische IP-Adressen -> Pro Dienst benötigen wir eine IP-Adresse! (Beispiel: System (DNS) + Steam + uPlay = 3 IPs)
– Docker
– Port 53, 80 und 443 auf dem Cache-Server

Geht das auch auf Windows?
Ich empfehle hier Linux, da wir dem System direkt mehrere IP-Adressen zuweisen können, was für die verschiedenen Cache-Systeme benötigt wird.

Kann ich das auch in einer virtuellen Maschine machen?
Klar! Achte darauf, das du genug Speicher und RAM zuweist.
Es ist aber empfehlenswert, das ganze auf einer “echten” Hardware zu installieren.

 

WICHTIG: Ich werde hier nicht alles erklären. Dies ist ein “Kopier einfach den Code ab”-Tutorial. Was welcher Befehl tud, werde ich nicht erklären.

Los gehts!


1. Einrichten des Systems

Wir müssen dem System nun mehrere IP-Adressen zuweisen, auf die dann die einzelen Cache-Dienste zurückgreifen.
Dies ist in Linux Ubuntu / Mint sehr einfach über die grafische Oberfläche zu bewerkstelligen.
Wir gehen in die Netzwerkeinstellungen und weisen manuell IPv4-Adressen zu.
Als Adresse geben wir jeweils eine freie IP-Adresse ein.
Als Netzmaske wählen wir ebenfalls eine korrekte aus.
Nur bei der ersten IP-Adresse müssen wir ein Standardgateway festlegen. Dies ist die IP-Adresse des Routers.
Beispiel:

192.168.178.100 | 255.255.255.0 | 192.168.178.1
192.168.178.101 | 255.255.255.0 |
192.168.178.102 | 255.255.255.0 |
192.168.178.103 | 255.255.255.0 |
192.168.178.104 | 255.255.255.0 |
192.168.178.105 | 255.255.255.0 |
....

Füge nun hier so viele freie Adressen hinzu, wie du benötigst. Pro Dienst (also z.B. Steam), wird eine IP-Adresse benötigt.
(Beispiel: Das System (DNS), Steam, Origin, uPlay, BattleNet und Windows Updates benötigen 6 Adressen)

2. Installation von Docker

Wir installieren curl und Docker:

sudo apt install curl -y
sudo curl -sSL https://get.docker.com/ | sh

Prüfen ob Docker läuft:

sudo systemctl status docker

3. Installieren der Container für die Cache-Server

Hier kannst du selbst entscheiden, welche Dienste du nutzen möchtest. Es muss nicht alles gestartet werden. Du kannst auch nur Origin und Blizzard oder tatsächlich nur Steam starten.

Folgende Werte müssen von dir passend auf dein Netzwerk und System abgeändert werden:
USERNAME = Füge hier dein Benutzername ein, unter welchem Docker laufen soll
Beispiel:

/home/hoerli/cache/steam/data:/data/cache

192.168.X.X = Füge hier eine passende und freie IP-Adresse ein. Ich habe im Befehl unten eine Beispieladresse für ein “FritzBox-Netzwerk” eingefügt.
Beispiel:

192.168.178.210:80:80

Pro Cache-Dienst (z.B. Steam, Origin, WSUS) muss EINE IP-Adresse vergeben werden! Das kombinieren einer IP-Adresse mit mehreren Diensten ist NICHT möglich.

Steam:

sudo docker run \
--restart unless-stopped -d \
--name steam-cache \
-v /home/USERNAME/cache/steam/data:/data/cache \
-v /home/USERNAME/cache/steam/logs:/data/logs \
-p 192.168.178.210:80:80 \
steamcache/generic:latest

Origin:

sudo docker run \
--restart unless-stopped -d \
--name origin-cache \
-v /home/USERNAME/cache/origin/data:/data/cache \
-v /home/USERNAME/cache/origin/logs:/data/logs \
-p 192.168.178.211:80:80 \
steamcache/generic:latest

Blizzard (Battle.net):

sudo docker run \
--restart unless-stopped -d \
--name blizzard-cache \
-v /home/USERNAME/cache/blizzard/data:/data/cache \
-v /home/USERNAME/cache/blizzard/logs:/data/logs \
-p 192.168.178.212:80:80 \
steamcache/generic:latest

Riot Games:

sudo docker run \
--restart unless-stopped -d \
--name riot-cache \
-v /home/USERNAME/cache/riot/data:/data/cache \
-v /home/USERNAME/cache/riot/logs:/data/logs \
-p 192.168.178.213:80:80 \
steamcache/generic:latest

Frontier Launchpad:

sudo docker run \
--restart unless-stopped -d \
--name frontier-cache \
-v /home/USERNAME/cache/frontier/data:/data/cache \
-v /home/USERNAME/cache/frontier/logs:/data/logs \
-p 192.168.178.214:80:80 \
steamcache/generic:latest

Windows:

sudo docker run \
--restart unless-stopped -d \
--name windows-cache \
-v /home/USERNAME/cache/windows/data:/data/cache \
-v /home/USERNAME/cache/windows/logs:/data/logs \
-p 192.168.178.215:80:80 \
steamcache/generic:latest

4. Container starten:

In dem Befehl müssen nun zwei Dinge passend für dein Netzwerk abgeändert werden!
UPSTREAM_DNS=192.168.XXX.XXX = Trage hier ein DNS-Server deiner Wahl ein. Entweder den Router, ein Pi-Hole oder z.B. OpenDNS. Im Befehl habe ich z.B. hier mein Pi-Hole angegeben.
Trage ebenfalls die korrekte IP-Adresse für den jeweiligen DNS-Cache ein, die du in Schritt 3 vergeben hast.

Cache-Server und DNS-Dienst starten:

sudo docker run \
--restart unless-stopped -d \
--name steamcache-dns \
-p 192.168.178.210:53:53/udp \
-e UPSTREAM_DNS=192.168.178.200 \
-e STEAMCACHE_IP=192.168.178.210 \
-e ORIGINCACHE_IP=192.168.178.211 \
-e BLIZZARDCACHE_IP=192.168.178.212 \
-e RIOTCACHE_IP=192.168.178.213 \
-e FRONTIERCACHE_IP=192.168.178.214 \
-e WSUSCACHE_IP=192.168.178.215 \
steamcache/steamcache-dns:latest

Sniproxy starten, damit Origin genutzt werden kann:

sudo docker run \
--restart unless-stopped -d \
--name sniproxy \
-p 443:443 \
steamcache/sniproxy:latest

5. DNS-Server einrichten

Je nach dem wie viel Aufwand es ist, kann der DNS-Server entweder direkt auf den Zielrechnern abgeändert werden, oder du stellst den DNS-Server direkt im Router um.
Dazu kann ich dir aber keine Anleitung bieten, da es unterschiedliche Router mit unterschiedlichen Webinterfaces gibt.

Bei Windows findest du das so:
1. Rechtsklick auf das Netzwerksymbol in der Taskleiste.
2. Wähle “Netzwerk- und Interneteinstellungen öffnen” aus.
3. Klicke auf Adapteroptionen ändern.
4. Klick mit der rechten Maustaste auf den aktuell genutzten Adapter und wähle die Einstellungen an.
5. Setze ein Doppelklick auf “Internetprotokoll, Version 4 (TCP/IPv4)” UND wenn du es verwendest auf IPv6.
6. Gebe als DNS-Serveradresse nun die IP-Adresse des Cache-Servers an.
7. Trage als Alternativen DNS-Server dein Router ein (oder z.B. Cloudflare, Google, OpenDNS,…)
8. Drucke auf OK

6. Clients öffnen und Downloads starten

Der erste Download findet nun über die normale Internetanbindung statt. Der zweite aber nicht mehr!

7. Funktion von Docker überprüfen

docker logs steamcache-dns

Tipps zum Schluss:

Bandbreitenmaximierung:
Verwende SSDs für schnelleren Speicherzugriff.
Verwende viel RAM im Server, damit viele Daten dort ausgelagert werden können und noch schneller abrufbar sind.
Nutze mehrere Netzwerkkarten im Server und bündele diese. So kannst du noch mehr Daten transferieren.

Immer volle Downloadgeschwindigkeit:
Wenn du im Besitz eines Servers in einem Rechenzentrum bist, kannst du dort ebenfalls den Cache-Server installieren. Setze einfach die IP deines Server als DNS-Server und profitiere von ihm, wenn Steam, Origin & Co. Mal wieder überlastet ist.
Du kannst diese Bandbreite auch deinen Freunden zur Verfügung stellen.

Gut & Günstig:
Die Verwendung von 2 „guten“ HDD-Festplatten, welche zu einem RAID0 verbunden sind, reicht an Geschwindigkeit für eine 1Gbit/s Verbindung vollkommen aus.
So hast du viel Speicher, für wenig Geld, um dein Netzwerk zu befüttern.

Werbefrei und flott:
Falls du auch ein Pi-Hole installiert hast, kannst du es weiterhin nutzen und dein Netzwerk Werbefrei halten.
Die Route sollte wie folgt aufgebaut werden:
Variante 1: Dein PC -> Cache-Server -> Pi-Hole -> Router -> Internet
Variante 2: Dein PC -> Pi-Hole -> Cache-Server -> Router -> Internet
Variante 3: Dein PC -> Router -> Pi-Hole -> Cache-Server -> Internet (Empfohlen da geringsten Konfigurationsaufwand)
Ein Tutorial zur Installation eines Pi-Holes findest du HIER.

Hardware statt Software:
Um ein Effizienten Cache-Server zu haben und vor allem die Festplatte voll ausreizen zu können, nutze keine Virtuellen Maschinen.
Diese bremsen das System aus, da die Zugriffszeiten auf Daten durch die Virtualisierung verlangsamt werden.
Dies merkt man sehr schnell, wenn mehr als drei oder vier Personen gleichzeitig die Daten „downloaden“.

VMware VS. VirtualBox:
Beides sind gute Programme um Betriebssysteme zu virtualisieren. Den besten Datendurchsatz haben wir allerdings mit VirtualBox und dem standard Festplattenformat erzielt.

Auf folgende Dienste hört der Docker-Container:
Apple: APPLECACHE_IP
Arenanet: ARENANETCACHE_IP
Blizzard (BattleNET): BLIZZARDCACHE_IP
Daybreak: DAYBREAKCACHE_IP
Epic Games: EPICGAMESCACHE_IP
Frontier: FRONTIERCACHE_IP
Hirez HIREZCACHE_IP
Nexusmods: NEXUSMODSCACHE_IP
Neverwinter: NEVERWINTERCACHE_IP
Nintendo: NINTENDOCACHE_IP
Renegadex: RENEGADEXCACHE_IP
Riot: RIOTCACHE_IP
Rockstar Games: ROCKSTARCACHE_IP
Sony (PlayStation): SONYCACHE_IP
Steam: STEAMCACHE_IP
Uplay: UPLAYCACHE_IP
Teso: TESOCACHE_IP
Twitch: TWITCHCACHE_IP
Warframe: WARFRAMECACHE_IP
Wargaming: WARGAMINGCACHE_IP
MS WSUS: WSUSCACHE_IP
Xbox live: XBOXLIVECACHE_IP

Die Dienste müssen als Docker gestartet werden und können dann via DNS-Docker angesteuert werden.
*Auszug der Liste aus dem Docker-Container*

Noch mehr zum Cachen:
Es gibt noch weitere Projekte, welche die Daten anderer Plattformen cachen.
Mit dem Projekt Cache-Domains, können folgende Dienste noch in den Cache geschoben werden, um dein Netzwerk zu beschleunigen:
Apple, ArenaNET, DayBreak, Epic Games, Hirez, Nexusmods, Neverwinter, Nintendo, Renegade, Rockstar Games, Sony (Playstation), Teso (The Elder Scrols Online), Twitch, Warframe, Wargaming und Xbox Live.
Mehr Infos dazu gibts HIER.


Falls du interesse hast, die Quellen der Daten zu überprüfen, findest du die richtigen Links hier:
SteamCache
GitHub Code
Docker Code


10.10.2019
Hinweis zu anderen Cache-baren Services hinzugefügt und Befehle angepasst.

3 Kommentare

  1. Pingback:LanCache - Der Cache-Server für dein Netzwerk! - Hoerli.NET

  2. Hi,
    erstmal danke für das Tutorial – Top.
    Ich wollte hier nur eine kurze Sache loswerden.

    Sobald ich in Ubuntu die zusätzlichen ipv4 Adressen hinterlegt hatte, konnte keine Internetverbindung mehr aufgebaut werden.
    Falls noch jemand keine Ahnung hat (wie ich auch): Das Problem konnte gelöst werden, indem der DNS nicht automatisch ermittelt wird sondern manuell auf den Router (in meinem Fall eine Fritz.Box) gesetzt wird.

    VG Lennart

    • Danke für deine Info!
      Scheinbar hat sich da was bei Ubuntu mal geändert.
      Es ist für diese Zwecke allgemein eh besser, IP-Adressen immer statisch zu hinterlegen. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.