JavaFrnServer automatisch updaten

Anleitung: Automatisches Update-Skript für FRN_Server auf einem Raspberry Pi

Anleitung: Automatisches Update-Skript für FRN_Server auf einem Raspberry Pi

Einleitung:

Diese Anleitung erklärt, wie du ein automatisches Update-Skript für bis zu drei FRN_Server-Instanzen auf deinem Raspberry Pi einrichten kannst. Der FRN_Server ist eine Software, die im Freien Funknetz (FRN) verwendet wird, um Benutzern das Senden und Empfangen von Audiosignalen über das Internet zu ermöglichen. Mit diesem Skript kannst du bis zu drei FRN_Server-Instanzen automatisch aktualisieren und sicherstellen, dass sie immer auf dem neuesten Stand sind.

Voraussetzungen:

  1. Du benötigst einen Raspberry Pi mit Raspbian (oder einem anderen Linux-basierten Betriebssystem) und Zugriff auf das Terminal
  2. Stelle sicher, dass du eine funktionierende Internetverbindung hast.

Und du startest den JavaFrnServer mit einem Bash-Script z.B. start.sh. Mit diesem Kommandozeilenbefehl: java -jar FRN_Server.jar -sp server.properties -lp log4j.xml

Schritt 1: Erstellen des Skripts

Öffne das Terminal auf deinem Raspberry Pi und erstelle eine neue Datei mit dem Namen frnserver_update.sh im Verzeichnis /opt/frnserverupdate/. Du kannst dazu den Befehl nano /opt/frnserverupdate/frnserver_update.sh verwenden.


#!/bin/bash

# Verzeichnis erstellen, wenn es nicht existiert
mkdir -p /opt/frnserverupdate

# FRN_Server.zip herunterladen und im Zielverzeichnis ablegen
wget -O /opt/frnserverupdate/FRN_Server.zip https://freeradionetwork.de/assets/files/FRN_Server.zip

# Versionsnummer der heruntergeladenen ZIP-Datei extrahieren
NEW_VERSION=$(unzip -p /opt/frnserverupdate/FRN_Server.zip releasenotes.txt | grep -oP 'Version: \K\d+\.\d+\.\d+')

# Funktion zum Kopieren der Dateien in das FRN_Server-Verzeichnis, falls die Version aktueller ist
update_frnservers () {
  SERVER_PATH=$1

  # Versionsnummer der bereits installierten Dateien extrahieren
  INSTALLED_VERSION=$(grep -oP 'Version: \K\d+\.\d+\.\d+' $SERVER_PATH/releasenotes.txt)

  # Versionsvergleich
  if [[ "$NEW_VERSION" > "$INSTALLED_VERSION" ]]; then
    cp FRN_Server.jar $SERVER_PATH/
    cp releasenotes.txt $SERVER_PATH/
    cp log4j.xml $SERVER_PATH/
    cp properties_doc.pdf $SERVER_PATH/
    cp server_example.properties $SERVER_PATH/

    # Berechtigungen für die Dateien und Verzeichnisse setzen
    chmod -R 755 $SERVER_PATH

    echo "Update für $SERVER_PATH auf Version $NEW_VERSION abgeschlossen!"
  else
    echo "Kein Update erforderlich. Die installierte Version ($INSTALLED_VERSION) ist aktuell."
  fi
}

# Update für bis zu drei FRN_Server-Instanzen durchführen
update_frnservers "/opt/FRNSERVER"
update_frnservers "/opt/SERVERERSATZ"
update_frnservers "/opt/FRNSERVERFUNKNETZNRW"

# Skript zum Neustarten der FRN_Server-Instanzen

# Funktion zum Neustarten der FRN_Server-Instanz
restart_frnservers () {
  SERVER_PATH=$1

  # Prüfen, ob die FRN_Server-Instanz bereits ausgeführt wird
  if pgrep -f "$SERVER_PATH/FRN_Server.jar" > /dev/null; then
    echo "Neustarte FRN_Server-Instanz in $SERVER_PATH..."
    pkill -f "$SERVER_PATH/FRN_Server.jar"
    sleep 5
  fi

  # FRN_Server neu starten
  cd $SERVER_PATH
  nohup java -jar FRN_Server.jar -sp server.properties -lp log4j.xml >/dev/null 2>&1 &
}

# Neustart für bis zu drei FRN_Server-Instanzen durchführen
restart_frnservers "/opt/FRNSERVER"
restart_frnservers "/opt/SERVERERSATZ"
restart_frnservers "/opt/FRNSERVERFUNKNETZNRW"
  

Schritt 2: Berechtigungen setzen

Gib den folgenden Befehl im Terminal ein, um das Skript ausführbar zu machen:

chmod +x /opt/frnserverupdate/frnserver_update.sh

Schritt 3: Crontab-Konfiguration

Öffne die Crontab-Konfiguration, indem du den folgenden Befehl im Terminal ausführst:

crontab -e

Wenn es dein erstes Mal ist, die Crontab-Konfiguration zu bearbeiten, wirst du nach einem Texteditor gefragt. Wähle einen Editor aus der Liste (z. B. nano oder vim).

Schritt 4: Cron-Job hinzufügen

Füge die folgende Zeile am Ende der Crontab-Datei hinzu, um den Job einmal pro Woche (z. B. sonntags um 2 Uhr morgens) auszuführen:

0 2 * * 0 /bin/bash /opt/frnserverupdate/frnserver_update.sh >/dev/null 2>&1

Speichere und schließe den Editor.

Schritt 5: Testen

Das automatische Update-Skript ist nun eingerichtet. Es wird jeden Sonntag um 2 Uhr morgens im Hintergrund ausgeführt und aktualisiert bis zu drei FRN_Server-Instanzen, falls eine neue Version verfügbar ist.

Anmerkung: Um das Skript für andere Installationen anzupassen, passe die Pfade und die Anzahl der FRN_Server-Instanzen in der Funktion update_frnservers entsprechend an. Du kannst weitere Pfade und Instanzen hinzufügen, indem du den Funktionsaufruf update_frnservers kopierst und mit den gewünschten Pfaden ergänzt.

Fazit:

Herzlichen Glückwunsch! Du hast erfolgreich ein automatisches Update-Skript für bis zu drei FRN_Server-Instanzen auf deinem Raspberry Pi erstellt und eingerichtet. Die FRN_Server-Instanzen werden nun wöchentlich automatisch aktualisiert, um sicherzustellen, dass sie immer auf dem neuesten Stand sind. Genieße das ununterbrochene Funken und die einfache Wartung deiner FRN-Server!

Svxlink FRN Modul einrichten.

Einrichtung des FRN-Moduls in SvxLink

Einrichtung des FRN-Moduls in SvxLink

Die Anleitung geht davon aus, dass ihr svxlink so installiert habt wie ich es in einen vorherigen Beitrag beschrieben hatte

Geht in das folgende Verzeichnis:

cd /etc/svxlink/svxlink.d

Dort befindet sich die Konfigurationsdatei mit dem Namen ModuleFrn.conf.

Öffnet diese Datei mit dem Nano-Editor, indem ihr folgenden Befehl im Terminal eingebt:

nano ModuleFrn.conf

Ihr gelangt nun in den Nano-Editor, wo ihr den Eintrag bearbeiten könnt.

ModuleFrn.conf Einstellungen:

[ModuleFrn]
NAME=Frn
PLUGIN_NAME=Frn
ID=7
TIMEOUT=300
#MUTE_LOGIC_LINKING=1

# Details: http://freeradionetwork.eu/frnprotocol.htm

# Hauptserver
SERVER=127.0.0.1
PORT=10024

# Backup-Server
SERVER_BACKUP=127.0.0.2
PORT_BACKUP=10025

# Anmeldedaten
VERSION=2014000
EMAIL_ADDRESS=deine@example.com
DYN_PASSWORD=12345
CLIENT_TYPE=1
CALLSIGN_AND_USER="Rufzeichen, Benutzer"
BAND_AND_CHANNEL="446.03125FM CTC131.8"
DESCRIPTION="SvxLink FreeRadioNetwork Station"
COUNTRY=Antarctica
CITY_CITY_PART="Stadt - Straße"
NET=Test

# Debugging
#FRN_DEBUG=1
#DISABLE_RF=1
    

Wenn du bereits deine Daten vom Systemmanager erhalten hast, trage sie bitte ein.

Alternativ könnt ihr mit dem folgenden Skript neue Zugangsdaten erhalten, nachdem ihr die ModuleFrn.conf mit euren Daten gefüttert habt.

Das Skript findet ihr im Verzeichnis, wo ihr svxlink kompiliert habt. Bei mir ist das Skript unter /home/svxlink/src/svxlink/modules/frn/frn-register zu finden. Kopiere dieses Skript mit dem Befehl:

cp /home/svxlink/src/svxlink/modules/frn/frn-register /etc/svxlink/

Navigiere nun zum Verzeichnis:

cd /etc/svxlink/

Mache das Skript ausführbar:

chmod 755 /etc/svxlink/frn-register

Verschicke die Daten zur Registrierung, indem du folgenden Befehl ausführst:

/usr/bin/bash /etc/svxlink/frn-register

Nach kurzer Zeit erhältst du eine E-Mail mit den Zugangsdaten.

Beachte, dass du die Versionsnummer von VERSION=2014000 auf VERSION=2014003 ändern musst.

Bitte sei vorsichtig bei den Eintragungen, schon ein Leerzeichen kann die Datei unbrauchbar machen.

Java FRNClient als Service starten

Hier findest du alle Informationen, die du benötigst, um den FRN Client Service auf deinem Raspberry Pi zu installieren und auszuführen.

Anleitung:

„Die Anleitung geht davon aus, dass ihr die JavaFrnClient.zip im Ordner /home/pi/Desktop/FRNClient/ abgespeichert habt und diese dort auch entpackt habt. Ansonsten müsst ihr einiges anpassen!“

Anmeldung im Terminal: Öffne ein Terminalfenster und melde dich mit deinem Benutzernamen und Passwort auf deinem Raspberry Pi an.

Sudo-Berechtigungen erhalten: Gib den Befehl „sudo su“ ein, um zum Superuser (root) zu wechseln und die benötigten Administratorberechtigungen zu erhalten.

Start-Script erstellen: Gib den Befehl “ nano /home/pi/Desktop/FRNClient/start.sh“ ein und  füge folgendes ein.

#!/bin/bash
cd /home/pi/Desktop/FRNClient/
/usr/bin/bash FRN_Client.run

Danach die Datei speichern und die start.sh ausführbar machen ,mit folgenden Befehl “ chmod 755 start.sh

Service-Datei erstellen: Gib den Befehl „nano /etc/systemd/system/frnclient.service“ ein, um eine neue Service-Datei zu erstellen und zu bearbeiten.

[Unit]
Description=FRN Client Service
After=graphical.target

[Service]
Type=simple
User=root
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/pi/.Xauthority"
ExecStart=/usr/bin/bash /home/pi/Desktop/FRNClient/start.sh

[Install]
WantedBy=graphical.target

Einträge in die Service-Datei vornehmen: Füge die oben angegebenen Einträge in die Service-Datei ein und speichere die Datei.

Service aktivieren: Gib den Befehl „systemctl enable frnclient.service“ ein, um den Service zu aktivieren. Dadurch wird der Service beim Start des Raspberry Pi automatisch gestartet.

Service starten: Gib den Befehl „systemctl start frnclient.service“ ein, um den Service zu starten und den FRN Client auszuführen.

Service-Status überprüfen: Gib den Befehl „systemctl status frnclient.service“ ein, um den Status des Services zu überprüfen. Die korrekte Ausgabe wird angezeigt, wenn alles richtig eingerichtet ist.

frnclient.service - FRN Client Service
Loaded: loaded (/etc/systemd/system/frnclient.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-07-19 20:17:48 CEST; 10min ago
Main PID: 474 (bash)
Tasks: 35 (limit: 414)
CPU: 1min 33.124s
CGroup: /system.slice/frnclient.service
├─474 /usr/bin/bash /home/pi/Desktop/FRNClient/start.sh
├─479 java -Dfile.encoding=CP1252 -jar ./FRN_Client.run
├─847 dbus-launch --autolaunch 3762129e7c014e5da82acbd2c7b031f2 --binary-syntax --close-stderr
└─848 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session

Jul 19 20:17:48 raspberrypi systemd[1]: Started FRN Client Service.
Jul 19 20:21:44 raspberrypi bash[479]: at de.bevis.frn.client.WoRTa.inGic(ClientFrameController.java:6516)
Jul 19 20:21:44 raspberrypi bash[479]: at de.bevis.frn.client.rvErs.run(AudioConfigParser.java:69)
Jul 19 20:21:44 raspberrypi bash[479]: at java.lang.Thread.run(Thread.java:748)

Wir wünschen dir viel Erfolg und hoffen, dass unser FRN Client Service auf deinem Raspberry Pi reibungslos funktioniert. Bei Fragen oder Problemen stehen wir dir gerne zur Verfügung!

 

 

WordPress Cookie Plugin von Real Cookie Banner