Skip to content

HowTo - Einen eigenen SuperTuxKart Server im LAN aufsetzen und gegen Freunde zocken

Vor kurzem wurde eine neue SuperTuxKart Version veröffentlicht.

Wie schon aus der Beta bekannt war, bringt diese neue Version neben diversen Verbesserungen eine Netzwerkunterstützung mit.

Daneben sorgen ca. 20 Rennstrecken und verschiedene Spielmodi für Abwechslung. Der Funracer ist natürlich OpenSource und so hat jeder die Möglichkeit seinen eigenen Server zu betreiben.

Alle Infos findet ihr in den Release Notes.

SuperTuxKart1
Genau diese Netzwerkunterstützung will ich im Folgenden näher anschauen, denn für einen eigenen Server reicht bereits ein RaspberryPi aus.


Eigenen SuperTuxKart Server fürs LAN bauen

Als Basis dient ein Ubuntu 16.04 LTS oder ein Raspbian System, der Vorgang ist jeweils gleich.

Zunächst müssen ein paar Pakete installiert werden, damit der Build auch gelingt.

sudo apt-get install build-essential cmake libbluetooth-dev \
libcurl4-openssl-dev libenet-dev libfreetype6-dev libfribidi-dev \
libgl1-mesa-dev libglew-dev libjpeg-dev libogg-dev libopenal-dev libpng-dev \
libssl-dev libvorbis-dev libxrandr-dev libx11-dev nettle-dev pkg-config zlib1g-dev git subversion

Als nächstes werden die Installationsdateien auf das lokale System geladen.

cd /opt
sudo mkdir stk-code
sudo mkdir stk-asset
git clone https://github.com/supertuxkart/stk-code stk-code
svn co https://svn.code.sf.net/p/supertuxkart/code/stk-assets stk-assets

Der letzte Schritt kann etwas Zeit benötigen, da mehrere 100MB geladen werden müssen.

cd stk-code
sudo mkdir cmake_build
cd cmake_build/
sudo cmake .. -DSERVER_ONLY=ON
sudo make -j$(nproc)

Nun heißt es etwas warten, denn je nach CPU Leistung, kann dies etwas dauern...

stk-server

Schwups ist der fertige Server erstellt, ihr könnt ihn nun bereits ausprobieren oder systemweit mit sudo make install installieren.

Danach findet ihr den installierten Server unter /usr/local/bin/supertuxkart.


In unserem Fall starten wir den Server testweise direkt.

cd bin/

./supertuxkart --lan-server=test --network-console

stk-server-start

[info   ] GrandPrixManager: Loading Grand Prix files from ../../data/grandprix/
[info   ] GrandPrixManager: Loading Grand Prix files from /home/xyz/.local/share/supertuxkart/grandprix/
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Host initialized.
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Server port is 2759
Fri Apr 26 20:25:41 2019 [info   ] main: Creating a LAN server 'test'.
Fri Apr 26 20:25:41 2019 [info   ] ServerLobby: Reset server to initial state.
Fri Apr 26 20:25:41 2019 [info   ] ProtocolManager: A 11ServerLobby protocol has been started.
Fri Apr 26 20:25:41 2019 [info   ] STKHost: Listening has been started.

Nun solltet ihr darauf achten, dass der Port 2759 im lokalen Netz erreichbar ist und Firewalls diesen nicht blockieren.

Ebenfalls ist es wichtig lokal einen Servernamen beim Start anzugeben, da der Server sonst nicht startet.

Zusätzlich wird unter /opt/stk-code/.config/supertuxkart/config-0.10/server_config.xml beim ersten Start eine Konfigurationsdatei angelegt, dort können weitere Einstellungen gesetzt werden.

Für unseren Server muss hier Nichts weiter angepasst werden.

Alternativ könnt ihr eure eigene Konfigurationsdatei beim Start auch gleich mitgeben

supertuxkart --server-config=your_config.xml --network-console

Ob der Server läuft lässt sich mit einem einfachen netstat -lnp oder via ss -ln herausfinden (Artikel).

SuperTuxKart auf eigenen Server spielen

Um auf dem eigenen Server gegeneinander zu spielen, müsst ihr euch zunächst das Spiel installieren, dieses findet ihr hier.


Nach dem Start müssen folgende Schritte durchgeführt werden, um auf den eigenen Server zu gelangen,

stk-server-gui

stk-server-lan

stk-server-findstk-server-test-srv

Alternativ kann auch ein Server direkt aus dem Programm heraus erstellt werden und somit quasi mit jedem PC. Ein kleiner RapsberryPi ist allerdings um einiges praktischer.

Sollte ein STK Server übers Internet erreichbar sein, muss zusätzlich ein STK Account angelegt werden. Dieser Account muss beim Serverstart angegeben werden. Weitere Tipps finden sich hier.

supertuxkart --init-user --login=your_registered_name --password=your_password

Viel Spaß

 

LibreELEC Kodi - Tastenbelegung einer Fernbedienung (HDMI CEC) anpassen

Ich möchte die kleine LibreELEC Serie fortsetzen und heute zeigen, wie sich eine Fernbedienung für die Steuerung von Kodi anpassen lässt.

In unserem Szenario wird LibreELEC über den TV verwendet und somit über die normale TV Fernbedienung angesteuert.

Was ist eine Keymap

Jede Kodi Variante hat sogenannte Keymaps auf dem System hinterlegt. Dabei handelt es sich um XML Dateien in denen Tastenbelegungen verschiedener Eingabegeräte hinterlegt sind.

Diese lassen sich auf das eigene Setup anpassen. (In meinem Fall vermisse ich auf den meisten Fernbedienungen beispielsweise den Rechtsklick bzw. das Kontextmenü, welches ich auf einer extra Taste einrichte.)

Übersicht der Keymap Pfade auf den einzelnen Systemen

Android Android/data/org.xbmc.kodi/files/.kodi/userdata/ (see note)
iOS /private/var/mobile/Library/Preferences/Kodi/userdata/
Linux ~/.kodi/userdata/
Mac /Users/<your_user_name>/Library/Application Support/Kodi/userdata/ (see note)
LibreELEC /storage/.kodi/userdata/keymaps/
Windows Start - type %APPDATA%\kodi\userdata - press <Enter>
   

 

 

 

 

 

 

Unter LibreELEC befinden sich die original Keymaps unter /usr/share/kodi/system/keymaps

Weitere Informationen finden sich hier.

Keymap manuell anpassen

Eine angepasste Keymap würde in unserem Szenario unter /storage/.kodi/userdata/keymaps/gen.xml abgelegt werden.

Ein Eintrag für das Kontextmenü kann ungefähr wie folgt aussehen, wobei der Aufbau immer gleich ist:

<keymap>
    <virtualkeyboard>
        <keyboard>
            <key id="221">contextmenu</key>
        </keyboard>
    </virtualkeyboard>
    <global>
        <keyboard>
            <key id="221">contextmenu</key>
        </keyboard>
    </global>
</keymap>

Hier stellt sich recht schnell die Frage wie man auf die IDs kommt. Diese lassen sich beispielweise über das debug.log herausfinden, was aber Aufwand darstellt, daher würde ich beim Anpassen einer Fernbedienung den Weg über den Keymap Editor wählen.

Keymap mit dem Keymap Editor anpassen

Um sich Arbeit zu sparen, für Schritte wie Tastenbelegung erkunden und XML File anlegen wurde bereits ein einfaches Addon programmiert.

Installation Keymap Editor

Der Keymap Editor erlaubt es mit wenigen Schritten eine CEC Fernbedienung nach euren Wünschen zu programmieren. Praktischerweise ist dieser auch im System bereits vorhanden.

kodi-keymap-editor

Sollte unter den Programm-Addons kein Keymap Editor zu finden sein, dann installiert das Addon manuell über den Download Button weiter unten.

kodi-keymap-editor

Nach der Installation lassen sich Tasten einfach anpassen oder zusätzliche Funktionen auf freie Tasten legen.

kodi-keymap-editor

Fazit

Wie ihr seht ist es relativ einfach sich sein eigenes Bedienkonzept zu erstellen. Wobei die Variante über den Keymap Editor sicherlich die schnellste und einfachste dafür darstellt.

Download Keymap edito

 

LibreELEC Kodi - Screenshot via SSH erstellen und System steuern

LibreELEC oder auch OpenELEC dürfte Fans von freien Medienplayern ein Begriff sein. Ich selbst habe LibreELEC im Einsatz und bin recht zufrieden damit.

Da ich LibreELEC direkt am Fernseher betreibe und lediglich über die Fernbedienung steuere, vermisse ich manchmal Funktionen die über die Tastatur kein Problem darstellen. Allerdings führen viele Wege nach Rom. Dieses gilt zum Beispiel für das Erstellen eines Bildschirm Fotos.

Screenshot via SSH erstellen

Normalerweise kann ein Screenshot mit Strg+s über die Tastatur erstellt werden. Ist allerdings keine vorhanden, geht dies auch fix via SSH.

Dazu muss der Dienst natürlich aktiv sein.

kodi-sshSobald SSH aktiv ist, kann auf der Konsole gearbeitet werden. Kodi bringt dazu den Befehl kodi-send mit. Dieser erlaubt es verschiedene Befehle an das System zu senden unter anderem auch den Bildschirm abzufotografieren:

kodi-send --host=127.0.0.1 -a "TakeScreenshot"

Der Host muss auf dem lokalen Prompt nicht zwingend angegeben werden. Ich habe es der Vollständigkeit mit angegeben.

Kodi via SSH steuern

Dieser wird erst relevant, wenn der Befehl über Netzwerk versendet wird, Beispiel:

ssh root@192.168.10.19 'kodi-send --action="PlayerControl(Stop)"'

SSH sollte somit zwingend mit einem neuen Passwort versehen werden, wenn es aktiv ist. Das Default Passwort wäre übrigens "libreelec"

Das Kommando erlaubt weitere Funktionen. Die Hilfe kann mit --help aufgerufen werden.

kodi-send

Weitere Kommandos wären beispielsweise:

Laufende Wiedergabe anhalten

kodi-send --action="PlayerControl(Start)"

System ausschalten

kodi-send --action="Quit"

Plugin installieren (Zuständiges Repository sollte aktiv sein)

kodi-send --action="InstallAddon(plugin.video.kikamediathek)"

Eine Liste aller möglichen Befehle findet ihr hier.

 

Viel Spaß beim Probieren

Notepad++ (nicht Notepadqq) unter Ubuntu installieren und nutzen

Ob und wie sich das Tool Notepad++ unter Ubuntu nutzen lässt war vor Jahren schon einmal Thema auf ITrig. 

Damals hatte ich die freie Alternative Notepadqq empfohlen.

Mit der Einführung der Snap Apps und der Verwendung von wine-i386 steht nun das aus Windows bekannte Notepad++ unter Ubuntu zur Verfügung.

 

notepadplusplus

Seit Ubuntu 16.04 sind Snaps fester Systembestandteil, falls dennoch eine Installation nötig sein sollte, ist die mit folgendem Befehl möglich:

sudo apt-get install snapd 

Notepad++ unter Ubuntu installieren

Durch neue Paketformates kann der Notepad Klassiker nun unter Ubuntu verwendet werden.

sudo snap install notepad-plus-plus

Die Notepad++ Version entspricht der Windows Variante und bringt somit auch die gleichen Funktionen mit.

notepadplusplus-ubuntu-snap

Natürlich kann die oben erwähnte Alternative über den gleichen Weg installiert werden.

sudo snap install notepadqq

 

netplan unter Ubuntu Server 18.04 LTS konfigurieren oder entfernen

Seit einiger Zeit stellt Canonical für seine Distributionen die Netzwerkkonfiguration via netplan bereit.

Mit der Einführung der Serverversion 18.04 LTS ist diese fester Bestandteil der Long Term Support Edition.

Doch wo ist der Unterschied zur alten Konfiguration und welche Befehle werden benötigt?

netplan.iologo

netplan.io

Anders als die alten Netzwerkkonfigurationsdateien, beruht netplan auf der YAML Syntax. Außerdem werden als Renderer Networkmanager (Desktop), sowie system-networkd (Server) unterstützt.

Die Funktion ist relativ schnell erklärt: Beim Bootvorgang wird aus allen yaml Dateien  /etc/netplan/*.yaml eine Konfiguration generiert und unter /run abgelegt.

Die Konfiguration lässt sich aber auch im laufenden Betrieb anpassen.

Eine klassische Konfigurationsdatei /etc/netplan/01-netcfg.yaml mit fester IP-Adresse würde wie folgt aussehen:

system
network:
        version: 2
        renderer: networkd
        ethernets:
                eth0:
                        dhcp4: no
                        dhcp6: no
                        addresses: [192.169.1.100/24]
                        gateway4: 192.169.1.1
                        nameservers:
                                search: [itrig.lokal]
                                addresses: [1.1.1.1,8.8.8.8]

Als Renderer ist in diesem Fall networkd hinterlegt, es kann aber genauso renderer: NetworkManager angegeben werden, beispielsweise bei einem Desktop Betriebssystem.

Die Notation des Subnetzes erfolgt hier im CIDR Format. Als kleine Hilfestellung hier eine Tabelle wink

Prefix   | Subnet mask IPv4 | Subnet mask IPv6
/24      | 255.255.255.0    | 11111111.11111111.11111111.00000000
/25      | 255.255.255.128  | 11111111.11111111.11111111.10000000
/26      | 255.255.255.192  | 11111111.11111111.11111111.11000000
/27      | 255.255.255.224  | 11111111.11111111.11111111.11100000
/28      | 255.255.255.240  | 11111111.11111111.11111111.11110000
/29      | 255.255.255.248  | 11111111.11111111.11111111.11111000
/30      | 255.255.255.252  | 11111111.11111111.11111111.11111100
/31      | 255.255.255.254  | 11111111.11111111.11111111.11111110
/32      | 255.255.255.255  | 11111111.11111111.11111111.11111111

Um die neue Konfiguration zu generieren und anzuwenden werden folgende Befehle verwendet.

sudo netplan generate
sudo netplan apply

Eine Kontrolle kann mit neuen

sudo netplan try

sudo netplan --debug apply

sudo netplan config show

oder alternativ auch mit alten Befehlen erfolgen.

ip a

Hier gilt zu beachten, dass netplan apply keine virtuellen Geräte wie Netzwerkbrücken oder Netzwerkbündel entfernt, auch wenn sie nicht mehr in der Netplan Konfiguration stehen.

Hier muss momentan noch mit ip link delete dev bond0 operiert werden.

netplan.io

 

/etc/network/interfaces

Zum Vergleich eine alte Konfiguration, welche unter  /etc/network/interface zu finden ist.

auto lo eth0
iface lo inet loopback
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    network 192.168.1.0
    gateway 192.168.1.1
    #dns-nameservers 1.1.1.1 8.8.8.8
    dns-search itrig.lokal


netplan.io entfernen oder deaktivieren

Es besteht die Möglichkeit die oben beschriebene frühere Variante weiter zu verwenden. So bleibt eine alte Konfiguration beispielsweise bei einem Update von 16.04 auf 18.04 erhalten.

Bei einer Neuinstallation von 18.04 LTS kann ein Administrator ebenso auf die alte Variante schwenken, dazu muss das benötigte Paket installiert werden.

sudo apt-get install ifupdown

sudo apt -y purge netplan.io

Nun kann die Netzwerkkonfiguration unter /etc/network/interface abgelegt werden, sowie ein Neustart des Dienstes erfolgen.

sudo systemctl restart networking

[Update]

Zu Bedenken sind noch die DNS Settings, welche unter /etc/systemd/resolved.conf  abgelegt wurden, was sich unter Ubuntu 18.04 im Vergleich zu früher geändert hat.

Die Datei kann wie folgt modifiziert werden

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
DNS=8.8.8.8 1.1.1.1 8.8.4.4
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

Nun den Dienst neu starten und die DNS Server überprüfen

sudo systemctl restart systemd-resolved.service
sudo systemd-resolve --status

Alternativ kann auch das resolv Paket installiert werden.

sudo apt install resolvconf

Danach kann die Datei /etc/resolvconf/resolv.conf.d/head editiert und angepasst werden.

# Make edits to /etc/resolvconf/resolv.conf.d/head.
nameserver 1.1.1.1 
nameserver 8.8.8.8
sudo service resolvconf restart

Nun sollten die Netzwerkeinstellungen wieder der von Ubuntu 16.04 LTS oder 14.04 LTS entsprechen.