Hier beschreibe ich meine Verwendung eines meiner Pine64 (https://www.pine64.com/) als Download-Server mit JDownloader und Fernzugriff via xrdp und vnc. Ziel ist es einen kleinen Server zu verwenden, der eine sehr geringe Leistungsaufnahme hat und über Remote-Zugriff verwaltet werden kann.

Als Basis verwende ich das Ubuntu Image [20160530] direkt von den Download-Seiten zum Projekt:

Dieses Image habe ich entpackt und anschließend mit Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/) von meinem Windows PC auf eine geeignete Speicherkarte geschrieben. In meinem Fall eine SanDisk Extreme 64GB microSDXC, U3 Speicherkarte.
Anschließend mit einem Netzwerkkabel, USB-Tastatur und USB-Maus verbunden, das System gestartet und gemäß Vorgabe zum Image mit Benutzername ubuntu und Passwort ubuntu angemeldet.

Erste Schritte:

Da ich direkt zu Beginn keine Pakete installieren und aktualisieren konnte, habe ich über System, Administration, Software & Updates, Aktenreiter Other Software die Paketquellen für ubuntu-pine64-flavour-makers deaktiviert.

pine64_disable_pine64_sources

Wir verlassen das Menü über Close. Anschließend führen wir einen notwendigen Reload durch:

pine64_reload.png

Danach öffnen wir eine Konsole durch die Tastenkombination STRG + ALT und T und installieren die Pakete:

  • ssh
  • x11vnc
  • xrdp
  • mc
  • nano

mittels dem Befehl:

sudo apt-get install ssg x11vnc xrdp mc nano -y

pine64_apt-get_install_ssh_x11vnc_xrdp_mc_nano.png

Durch ssh haben wir nun die Möglichkeit das System über Fernzugriff zu steuern. Unter Windows können wir mittels putty (Download-Quelle: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) und winscp (Download-Quelle: https://winscp.net/eng/download.php) Befehle ausführen und Dateien auf das System kopieren.

Alternativ können wir bereits mittels mstsc von einem Windows-PC auf das System zugreifen. Hierzu einfach folgenden Befehl in der Kommandozeile (WIN-Taste + R) eingeben:

mstsc -v ip-adresse_pine64

Danach erscheint der folgende Dialog, wo wir die bekannten Anmeldedaten eingeben:

pine64_xrdp-test_mstsc01.png

Nachdem wir die Eingabe bestätigt haben, können wir bereits das System über die GUI steuern:

pine64_xrdp-test_mstsc02.png

In meinem Fall verwenden ich als Bildschirm einen LG 34UC98-W mit 3340x1440er-Auflösung Der pine64 hat somit kein Problem solch große Displays zu verwenden.

Zusätzlich werden jetzt Bildschirm, Maus und Tastatur nicht mehr am pine64 benötigt.

In meinem Fall habe ich meinen pine64 mittels Befehl:

 init 0

heruntergefahren und an seinem zukünftigen Platz installiert (nur Strom und Netzwerk).

Nach dem ersten Neustart  wird als Erstes die maximal verfügbare Größe der Speicherkarte dem System zur Verfügung gestellt.

Hierzu geben wir den folgenden Befehl in putty oder in einer Konsole auf dem System ein:

sudo /usr/local/sbin/resize_rootfs.sh

Zur Sicherheit überprüfen wir den Erfolg durch den Befehl df -h.

pine64_resize_rootfs

Zum Neustart des Systems geben wir folgenden Befehl ein:

sudo init 6

Sobald das System wieder verfügbar ist (etwa 1 Minute) führen wir ein paar notwendige Updates durch:

sudo apt-get upgrade -y

pine64_sudo_apt-get_upgrade.png
sudo /usr/local/sbin/pine64_update_kernel.sh

pine64_pine64_update_kernel

sudo /usr/local/sbin/pine64_update_uboot.sh

pine64_pine64_update_uboot.png

und starten anschließend das System durch.

 

Konfiguration von xrdp und x11vnc:

Nachdem das System wieder verfügbar ist, konfigurieren wir xrdp und x11vnc.

Zunächst konfigurieren wir die Verwendung von x11vnc. Hierzu setzen wir ein Passwort (Beispiel: jdownloader) mittels:

sudo x11vnc -storepasswd /etc/x11vnc.pass

pine64_x11vnc_storepasswd.png

Anschließend konfigurieren wir x11vnc zum Systemstart mittels:

sudo nano /lib/systemd/system/x11vnc.service

und fügen folgende Zeilen ein (Achtung: ggf. wird das Minus-Zeichen nicht korrekt übernommen):

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -repeat -loop -shared -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /var/log/x11vnc.log

[Install]
WantedBy=multi-user.target

Bei Verwendung von putty einfach rechts Maustaste verwenden.

Zum Speichern und Schließen geben wir folgende Tastenkombinationen ein:

  • STRG + O
  • ENTER
  • STRG + X

Anschließend aktivieren wir x11vnc zum Start mittels:

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service

pine64_set_service_x11vnc

Danach richten wir xrdp ein. Zur Sicherheit erstellen wir zunächst eine Kopie der aktuellen Konfig mittels:

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini_bak

Danach passen wir die aktuelle Konfig mittels:

sudo nano /etc/xrdp/xrdp.ini

an. Die Datei hat zu Beginn folgenden Inhalt:

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
max_bpp=24
#black=000000
#grey=d6d3ce
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

[xrdp2]
name=console
lib=libvnc.so
ip=127.0.0.1
port=5900
username=na
password=ask

[xrdp3]
name=vnc-any
lib=libvnc.so
ip=ask
port=ask5900
username=na
password=ask

[xrdp4]
name=sesman-any
lib=libvnc.so
ip=ask
port=-1
username=ask
password=ask

[xrdp5]
name=rdp-any
lib=librdp.so
ip=ask
port=ask3389

[xrdp6]
name=freerdp-any
lib=libxrdpfreerdp1.so
ip=ask
port=ask3389
username=ask
password=ask

[xrdp7]
name=sesman-X11rdp
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
xserverbpp=24

In meinem Fall wurden die Konfig-Elemente xrdp2 und xrdp4 bis xrdp7 vollständig gelöscht und xrdp3 zu xrdp2 umbenannt. In nano können Zeilen zum Beispiel mittels Tastenkombination:

STRG + K

gelöscht werden. Ergebnis:

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
max_bpp=24
#black=000000
#grey=d6d3ce
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

[xrdp2]
name=vnc-any
lib=libvnc.so
ip=ask
port=ask5900
username=na
password=ask

Wer wie ich das System lediglich so konfiguriert, dass andere Systeme auf dieses zugreifen, jedoch dieses nicht auf die anderen (es ist ein Frage zwischen Sicherheit und Komfort) kann zusätzliche Anpassungen für xrdp1 und xrdp2 durchführen.

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
max_bpp=24
#black=000000
#grey=d6d3ce
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ubuntu
password=ubuntu
ip=127.0.0.1
port=-1

[xrdp2]
name=vnc-any
lib=libvnc.so
ip=127.0.0.1
port=ask5900
username=na
password=jdownloader

Bei xrdp1 habe ich Benutzername und Passwort hinterlegt. Bei xrdp2 die Loopback-IP-Adresse, damit ich mittels vorliegender RDP-Sitzung die vnc-Sitzung auf dem pine64 direkt ansprechen kann und auch hier das Passwort für meine VNC-Sitzung.

Zum Prüfen, dass auch die Dienste zum Start korrekt ausgeführt werden, führen wir erneut einen Neustart durch.

Anschließend testen wir die Verbindungen mittels:

mstsc -v ip-adresse_pine64

pine64_xrdp-test_mstsc03.png pine64_xrdp-test_mstsc04.png

pine64_xrdp-test_mstsc05.png

pine64_xrdp-test_mstsc06.png

Zusätzlich sollte ein Test mit einem regulären VNCViewer erfolgen.

 

Weitere Anpassungen:

Zum Ende empfiehlt sich die Installation der deutschen Sprache auf dem System und die Umstellung des Tastaturlayouts. Als erstes rufen wir über die GUI mittels System, Personal, Language Support den Language Support auf.

pine64_language_support.png

Als erstes bestätigen wir Install und geben das Passwort ein:

pine64_language_support_install.png

Danach aktualisiert das System die Sprachpakete:

pine64_language_support_applying_changes.png

und im Anschluss danach fügen wir die deutsche Sprache hinzu:

pine64_language_support_add_language.png

Jetzt bestimmen wir das deutsche Tastaturlayout über System, Preferences, Hardware, Keyboard:

pine64_keyboard_layout

Danach öffnen wir den Dialog zum Hinzufügen eines neuen Tastaturlayouts:

pine64_keyboard_layout_add

Wählen als Land German und schließen das Fenster. Jetzt verändern wir die Reihenfolge zur Anwendung des Tastaturlayouts durch Auswahl German und Move Up:

pine64_keyboard_order

Anschließend führen wir erneut einen Neustart durch, da nicht unmittelbar die Korrekturen aktiv werden.

JDownloader – Installation:

Hinweis: Bitte die JDownloader2-Installation beachten!

Zur Installation von JDownloader fügen wir die PPA-Quellen hinzu und installieren die Pakete mittels:

sudo add-apt-repository ppa:jd-team/jdownloader
sudo apt-get update
sudo apt-get install jdownloader-installer unrar -y

pine64_jdownloader_add_repo

pine64_jdownloader_install

Anschließend können wir JDownloader über Anwendung, Internet, JDownloader starten:

pine64_jdownloader_start_menu

Die Meldung bzgl. falscher Runtime ignorieren wir:

pine64_jdownloader_java_error

Warten den Update-Prozess ab:

pine64_jdownloader_first_run.png

Führen ein paar Einstellungen durch:

pine64_jdownloader_config

Bestätigen das erfolgreiche Update:

pine64_jdownloader_update

… und führen kein Update durch, da dies derzeit fehlschlägt:

pine64_jdownloader_update_problem

JDownloader kann jetzt verwendet werden.

 

Installation SUN Java JDK:

Hinweis: Trotz erfolgreicher Installation von Java SDK war es anschließend nicht möglich JDownloader erfolgreich zu starten. Unabhängig der alten oder neuen Version. Für kurze Zeit war ein entsprechender Java-Prozess zu sehen der jedoch ohne weitere Meldung beendet wurde.

Wer es selbst versuchen möchte:

Die meiner Meinung nach korrekte Version hatte ich hierbei von SUN direkt heruntergeladen:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

pine64_sun_java_sdk_site.png

 

pine64_sun_java_sdk_download

 

Anschließend habe ich die folgende Befehle ausgeführt:

tar zxvf jdk-8u91-linux-arm64-vfp-hflt.tar.gz
sudo mv /home/ubuntu/Downloads/jdk1.8.0_91/ /usr/lib/jvm/
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_91/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_91/bin/javac" 1
sudo chmod a+x /usr/bin/java
sudo chmod a+x /usr/bin/javac
sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_91/

Zur Prüfung der aktuell verwendeten Version können die Befehle:

  • javac -version
  • java -version
  • sudo update-alternatives –config java

verwendet werden:

pine64_sun_java_set_version02

Hinweis: Wer später Probleme hat JDownloader zu starten, muss lediglich:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_91/bin/java" 1

erneut ausführen und mittels 0 [Die Zahl] den alten Standard setzen.

 

JDownloader 2 – Installation:

Zur Installation von JDownloader2 habe ich zunächst ein Verzeichnis über die Konsole erstellt:

mkdir $HOME/.jd2

Anschließend habe ich den Installer über folgende Quelle heruntergeladen:

  • installer.jdownloader.org/JDownloader.jar

Hinweis: Erst als ich die Datei von meinem Windows-PC heruntergeladen habe und diese per WinSCP in das neue Verzeichnis gespeichert habe, konnte ich die Installation erfolgreich durchführen. Der Download mittels wget unter Ubuntu war zwar erfolgreich, jedoch konnte ich die Installtion nicht erfolgreich starten. Wer in WinSCP den versteckten Ordner .jd2 nicht sieht, kann mittels STG + ALT + H zwischen der zusätzlichen Darstellung von versteckten Dateien und Ordner wechseln. Unter Ubuntu ist diese Tastenkombination STRG + H.

2. Hinweis: Bei meinen Tests konnte ich auch die Datei JD2SilentSetup.sh (http://installer.jdownloader.org/JD2SilentSetup_x64.sh) zwar herunterladen, jedoch wurden die hierbei integrierten Pakete durch unrar200 nicht erfolgreich entpackt.

Anschließend setze ich die notwendigen Berechtigungen zur Ausführung:

chown -R ubuntu:ubuntu $HOME/.jd2

und erstellte eine Verknüpfung auf meinem Desktop mittels:

nano /$HOME/Desktop/jDownloader2.desktop

wo ich folgenden Inhalt hinterlege:

[Desktop Entry]
Encoding=UTF-8
Name=jDownloader2
Comment=jDownloader2
Exec=bash -c "java -jar $HOME/.jd2/JDownloader.jar"
Icon=$HOME/.jd2/themes/standard/org/jdownloader/images/logo/jd_logo_256_256.png
Type=Application
Categories=GTK;Utility;

Anschließend speichern und die Verknüpfung ausführbar machen:

chmod +x $HOME/Desktop/jDownloader2.desktop

Zur Sicherheit habe ich vorm ersten Start eine Sicherheitskopie der jar-Datei erstellt, da diese nach dem ersten Start aktualisiert wird:

cp $HOME/.jd2/JDownloader.jar $HOME/.jd2/JDownloader_backup.jar

Nach dem ersten Start mittels Verküpfung auf unserem Desktop sollte nun zu sehen sein:

pine64_jdownloader2_first_run

pine64_jdownloader2_first_run02

Anbei zum Vergleich der Verzeichnisinhalt nach erstem Start:

pine64_jdownloader2_ls_l

Erweiterung des verfügbaren Arbeitsspeicher mittels zram:

Es wird bei Systemen wie pine64 empfohlen keine SWAP-Partitionen zu verwenden. In meinem Fall verfügt mein pine64 lediglich über 1GB RAM und bei Tests mit JDownloader hatte ich mehrfach das Problem, dass die Anwendung unerwartet und ohne Meldung beendet wurde (RAM kleiner 10000). Es war zum Beispiel nie möglich die Plugins von JDownloader 2 zu öffnen. Der verfügbare RAM wurde innerhalb einer Minute immer kleiner, bis die Anwendung geschlossen wurde. Nach der Aktivierung von zram werden die Plugins innerhalb zwei Sekunden geöffnet.

Zum Aktivieren von zram erstellen wir zunächst eine Datei für einen neuen Service:

sudo nano /lib/systemd/system/zram.service

und fügen folgenden Inhalt ein:

[Unit]
Description=zRam block devices swapping

[Service]
Type=oneshot
ExecStart=/bin/bash -c "modprobe zram && echo 2G > /sys/block/zram0/disksize && mkswap --label zram0 /dev/zram0 && swapon --priority 100 /dev/zram0"
ExecStop=/bin/bash -c "swapoff /dev/zram0 && rmmod zram"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Anschließend speichern wir die Datei und führen den folgenden Befehl aus:

sudo systemctl enable zram
Für Tests kann auch der Befehl:
sudo /bin/bash -c "modprobe zram && echo 2G > /sys/block/zram0/disksize && mkswap --label zram0 /dev/zram0 && swapon --priority 100 /dev/zram0"

verwendet werden. Nach einem Neustart kann mit dem Befehl:

zramctl
geprüft werden, ob die Aktivierung erfolgreich war.
pine64_zram_test_command
Alternativ sehen wir das Ergebnis mit dem Befehl:
top
pine64_zram_active

Hinweis: In einigen Quellen wurde zusätzlich der Befehl echo lz4 > /sys/block/zram0/comp_algorithm unter ExecStart im Dienst hinterlegt. Leider existiert die Datei nicht und konnte auch nicht mit entsprechenden rechten erstellt werden. Ich bin jedoch derzeit mit der Leistung meines pine64 zufrieden.

Aktivierung ffmpeg-Unterstützung für Youtube-Download:

Wer gelegentlich Videos von Youtube herunterladet benötigt in JDownloader ffmpeg. Zur Installation muss der folgende Befehl ausgeführt werden:

sudo apt-get install ffmpeg -y

Anschließend hinterlegen wir den Pfad zu ffmpeg im JDownloader über das Menü Einstellungen, Profileinstellungen (linke Seite mit Warndreieck) und Suchen den Eintrag FFmpegSetup: Binary Path. Den Wert null ändern wir zu:

/usr/bin/ffmpeg

pine64_jdownloader_ffmpeg_path

Quellen: