Benutzer-Werkzeuge

Webseiten-Werkzeuge


raspberry:fedberry_quick_install

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
raspberry:fedberry_quick_install [2018/01/30 16:10]
gpipperr
raspberry:fedberry_quick_install [2018/01/30 16:20] (aktuell)
gpipperr [IPV6 disablen]
Zeile 1: Zeile 1:
 +=====Fedberry Linux Betriebsystem mit dem Raspberry PI 2 für einen Ubiquiti Network Controller=====
 +
 +**November 2017**
 +
 +Aufgabe: 
 +
 +Ubiquiti Network Controller für die Wlan Infrastruktur von Haus und Büro auf einem Raspberry PI 2 aufsetzen, zusätzlich sollen auf dem System noch weitere Monitorring Script auf Python 3 Basis laufen.
 +
 +Da auch [[raspberry:redsleeve_quick_install|redsleeve]] nicht mehr so frisch ausschaut, für das nächste Projekt auf  http://fedberry.org/#about  gesetzt.
 +
 +Warum Raspberry PI 2? Ist noch übrig .-). Warum überhaupt selber bauen? 
 +
 +Im Prinzip kaufmänisch völlig uninteressant, Ubiquiti UniFi Cloud Key [Controller, 1x Gbit LAN, 1GB RAM] kostet um die 80€ und ist dann auch auto update fähig. 
 +
 +Die Bastel Lösung unter einem RedHat Derivat kann das hier nicht bieten, da die Package Funktionalität von Debian von der Unifi Software für das AutoUpdate verwendet wird.
 +
 +
 +Ablauf Installation Basis-System:
 +  * Download Image von https://github.com/fedberry/fedberry/releases  ( aktuelle 25.1, fedberry-xfce-25.1.raw.xz)
 +  * Check des MD5 Hash (Wert "67eadcd298796292af4bec2383c01587" ) das auch alles korrekt ist
 +  * Auspacken des  Images mit [[http://www.7-zip.org/|7-zip]]
 +  * Schreiben des Images auf eine Micro SD Card mit [[https://sourceforge.net/projects/win32diskimager/win32diskimager|]] (starten als Admin!)
 +  * SD Karte in den Raspberry
 +  * Anschluss Raspberry Strom und Netz
 +  * System konfigurieren
 +    * Statische IP Adresse vergeben
 +    * Java 8 installieren
 +Ablauf Ubiquiti UniFi Controller
 +  * Software im RPM und im Debian Format organisieren
 +  * Software im RPM Format installieren
 +  * Scripte und Libs aus dem Debian Package ausleihen
 +  * Versuch den Autostart mit dem Java Demon Runner hinzubekommen (erstmal gescheitert ...)
 +
 +
 +==== Basis System konfigurieren ====
 +
 +Wird die Version XFCE & LXQt release images gewählt, wird doch noch eine Tastatur und Monitor benötigt. 
 +
 +
 +Siehe auch erst hier => https://github.com/fedberry/fedberry
 +
 +Alternativ bei einer Minimal Version:
 +
 +Nach dem Einschalten wird eine dynamische IP Adresse vergeben, diese aus der IP Umgebung ermitteln z.b. über den DHCP Server oder über einen Netzwerkscan, hier sind die Tools von [[https://mobaxterm.mobatek.net/|MobaXterm]] sehr praktisch, SSH session auf die gefundene IP Adresse mit z.b. MobaXterm aufbauen, root , PWD=fedberry
 +
 +===XFCE & LXQt release===
 +
 +Über die graphische Oberfläche:
 +
 +  * Zeitzone einstellen
 +  * Netzwerk und Hostname
 +  * Root Password setzen
 +  * Admin User anlegen, hier den Hacken "Administrator" setzen, damit der User auch das Sudo Recht hat!
 +  * Am System anmelden
 +
 +
 +Nach der Grundkonfiguration kann nun wieder entspannt weiter über die Console gearbeitet werden, ssh Session auf den den Server als Admin user starten, evtl. nächstes mal die Version ohne graphische Oberfläche wählen, braucht dann wohl auch weniger Platz.
 +
 +
 +===Updates einspielen===
 +
 +<code bash>
 +sudo yum update
 +</code>
 +
 +
 +
 +===X beim boot ausschalten===
 +
 +<code bash>
 +su -
 +
 +rm /etc/systemd/system/default.target
 +ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target 
 +
 +To switch back:
 +
 +rm /etc/systemd/system/default.target
 +ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 
 +
 +</code>
 +
 +
 +===IPV6 disablen===
 +
 +Bei mir wollte dann immer der Unfi auf der  IP V6 Adresse laufen, daher IPV6 ausgeschaltet, allerdings ist mir das auf dieser Distribution so nicht so recht gelungen, nach dem Start des Java Programms hat dieses doch wieder auf IPV6 Sockets gehorcht.  hmm…
 +<code bash>
 +vi /etc/sysctl.conf
 +
 +net.ipv6.conf.all.disable_ipv6 = 1
 +
 +sysctl -w net.ipv6.conf.all.disable_ipv6=1
 +
 +systemctl restart network
 +
 +#Fedora??
 +vi /etc/modprobe.d/ipv6.conf
 +
 +install ipv6 /bin/true
 +options ipv6 disable=1
 +
 +
 +# Hosts uncomment localhost entry
 +vi /etc/hosts
 +# ::1           localhost6.localdomain6 localhost6
 +
 +
 +vi /etc/sysconfig/network-scripts/ifcfg-eth0
 +
 +IPV6_AUTOCONF=no
 +IPV6INIT=no
 +
 +# nun sollte es auch nach einem Boot klappen
 +reboot
 +
 +</code>
 +
 +=== Java 8 einrichten===
 +
 +Download from http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
 +File dk-8u151-linux-arm32-vfp-hflt.tar.gz
 +
 +<code bash>
 +
 +cp jdk-8u151-linux-arm32-vfp-hflt.tar.gz /srv
 +
 +tar xvfz jdk-8u151-linux-arm32-vfp-hflt.tar.gz
 +
 +cd /usr/lib/jvm
 +
 +mv /srv/jdk1.8.0_151/ .
 +
 +
 +cd /usr/lib/jvm/jdk1.8.0_151/bin
 +
 +./java -version
 +
 +/usr/sbin/alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_151/bin/java  18151
 +
 +
 +# Versionen anzeigen
 +/usr/sbin/alternatives --display java
 + 
 +# Version einstellen
 +/usr/sbin/alternatives --config java
 +# Version auswählen
 + 
 +# testen
 +java -version
 +java version "1.8.0_151"
 +
 +
 +</code>
 +
 +===nmon - Htop für das Performance Monitoring===
 +
 +Siehe auch http://hisham.hm/htop/
 +
 +<code bash>
 + yum install htop
 +</code>
 +
 +siehe auch http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 
 +
 +nmon16b_arm.tar.gz 
 +
 +<code bash>
 +wget http://sourceforge.net/projects/nmon/files/nmon16b_arm.tar.gz
 +
 +tar xvfz nmon16b_arm.tar.gz
 +
 +chmod 777 nmon16b_arm_raspian
 +
 +cp nmon16b_arm_raspian /sbin/nmon
 +
 +</code>
 +
 +
 +----
 +
 +
 +==== Unifi Software installieren ====
 +
 +===Unfi User ===
 +
 +<code bash>
 +groupadd -g 1100 unifi
 +useradd -u 1101 -g unifi unifi
 +mkdir /var/lib/unifi 
 +mkdir /var/log/unifi 
 +mkdir /var/run/unifi
 +chown -R unifi:unifi UniFi/
 +chown -R unifi /var/lib/unifi /var/log/unifi /var/run/unifi
 +</code>
 +
 +=== Mongo DB Server===
 +<code bash>
 +yum install mongodb-server
 +
 +# Verzeichnisse anlegen
 +mkdir /srv/mongodb
 +mkdir /var/log/mongodb
 +
 +# config Datei anlegen
 +vi /etc/mongodb.conf
 +
 +# See http://www.mongodb.org/display/DOCS/File+Based+Configuration for format details
 +# Run mongod --help to see a list of options
 +
 +bind_ip = 127.0.0.1
 +quiet = true
 +dbpath = /srv/mongodb
 +logpath = /var/log/mongodb/mongod.log
 +logappend = true
 +
 +
 +# Vorerst manuell starten mit
 +
 +/usr/bin/mongod --config /etc/mongodb.conf
 +
 +# Autostart muss dann noch eingerichtet werden!
 +
 +</code>
 +
 +=== Unifi Software===
 +Für Fedberry bzw. Redhat Linux Derivate steht keinen direkteren Download zur Verfügung.
 +
 +Aber in einem inoffiziellen Repostitory gibt es eine Variante für Linux auf X86
 +<code bash>
 +# Ein dnf install http://dl.marmotte.net/rpms/redhat/el7/x86_64/unifi-controller-5.6.22-1.el7/unifi-controller-5.6.22-1.el7.src.rpm
 +# klappt wegen falscher Architektur nicht
 +# RPM direkt verwendet
 +wget http://dl.marmotte.net/rpms/redhat/el7/x86_64/unifi-controller-5.6.22-1.el7/unifi-controller-5.6.22-1.el7.src.rpm
 +rpm -ivh --ignorearch unifi-controller-5.6.22-1.el7.x86_64.rpm
 +#Rechte vergeben
 +chown -R unifi:unifi /opt/UniFi
 +cd /opt/UniFi
 +cat Readme.txt
 +# hmm, mal sehen ob das dann auch sauber so läuft ...
 +</code>
 +
 +===Unifi Software starten ===
 +
 +<code bash>
 +
 +cd /opt/UniFi
 +
 +#Port und IP Adresse einstellen
 +# Sonst horcht die Anwendung nicht auf der IP4 Adresse!
 +vi /opt/UniFi/data/system.properties
 +
 +portal.http.port=8880
 +portal.https.port=8843
 +system_ip=192.168.1.210
 +unifi.http.port=8080
 +unifi.https.port=8443
 +#Starten mit :
 +java -jar lib/ace.jar start
 +
 +# in einer zweiten Session prüfen ob das auch geklappt hat:
 +
 +netstat -tlpn
 +
 +#Firewall erstmal ausschalten
 +
 +systemctl list-unit-files --state=enabled | grep firewall
 +
 +systemctl stop firewalld.service
 +# Besser die richtigen Regeln eintragen!
 +systemctl disable  firewalld.service
 +</code>
 +
 +
 +Nun kann im Browser die Unifi Oberfläche aufgerufen werden <nowiki>http:\\<your_server>:8080</nowiki>.
 +
 + Wizard durcharbeiten bzw. hier bereits das Backup einspielen.
 +
 +
 +=== Einstellungen vom alten Controler (Softwareversion) retten ===
 +
 +
 +Im nächsten Schritt will ich dann versuchen das Backup von meinem "Software" Kontroller auf dem neuen "Hardware" Kontroller zu aktivieren.
 +
 +Über Settings/Maintaince ein Backup herunterladen und im neuen Kontroller wieder einspielen.
 +
 +
 +----
 +
 +----
 +
 +==== Feintuning ====
 +Bei der inoffiziellen Variante fehlen z.B. die Autostart Skripte, die Debian Variante lässt sich zwar nicht nach RPM umwandeln aber auspacken, d.h. wir können das auch manuell zusammensetzen und damit evtl. sogar eine Auto Update fähige Variante erhalten. Hierzu mit Alien das DB Package ausgepackt.
 +<note warning>
 +!Achtung, ab jetzt wird es ein gebastel und etwas wirr .....!</note>
 +
 +
 +
 +=== Alien verwenden um das Debian Package zu analysieren==
 +<code bash>
 +yum install alien
 +cd /srv
 +
 +wget http://dl.ubnt.com/unifi/5.6.22/unifi_sysvinit_all.deb
 +
 +# alles auspacken in das RPM Format
 +alien --to-rpm   unifi_sysvinit_all.deb --scripts -v --generate
 +
 +# Wieder ein RPM Bauen
 +rpmbuild --buildroot=/srv/unifi-5.6.22 -bb unifi-5.6.22-10206.spec
 +
 +#das läßt sich dann leider nicht so einfach einspielen da die Pfade komplett anders lauten
 +
 +</code>
 +
 +Nun haben wir aber alle Scripte aus dem Debian Package + den Code der Applikation und können das auch so installieren, bzw.  die Start Skripte entsprechend umbauen.
 +
 +Scripte übernehmen:
 +<code bash>
 +cd /srv/unifi-5.6.22_arm/usr/lib/unifi/bin
 +
 +cp ubnt-apttool unifi.init /opt/UniFi/bin/
 +
 +#anpassen 
 +vi /opt/UniFi/bin/unifi.init
 +
 +
 +set_java_home () {
 +
 +        # hack add your acutal Java 8 Home directly
 +        JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.fc25.arm
 +        return
 +
 +...
 +BASEDIR="/opt/UniFi"
 +....
 +
 +
 +# nach 
 +cd /srv/unifi-5.6.22_arm/lib/systemd/system
 +#Datei unifi.service anpassen
 +
 +vi unifi.service
 +
 +[Unit]
 +Description=unifi
 +After=local-fs.target remote-fs.target network-online.target
 +Wants=network-online.target
 +Conflicts=shutdown.target
 +
 +[Service]
 +Type=forking
 +TimeoutSec=5min
 +IgnoreSIGPIPE=no
 +KillMode=process
 +RemainAfterExit=yes
 +ExecStart=/opt/UniFi/bin/unifi.init start
 +ExecStop=/opt/UniFi/bin/unifi.init stop
 +ExecReload=/opt/UniFi/bin/unifi.init reload
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +
 +# Datei nach /usr/lib/systemd/system/ kopieren
 +
 +#save copy 
 +mv /usr/lib/systemd/system/unifi.service /tmp
 +
 +cp unifi.service /usr/lib/systemd/system/
 +
 +
 +systemctl enable unifi
 +Created symlink /etc/systemd/system/multi-user.target.wants/unifi.service → /usr/lib/systemd/system/unifi.service.
 +
 +
 +# /lib/lsb/init-functions nach installieren
 +yum install redhat-lsb-core
 +# jsvc - Java start as service
 +yum install apache-commons-daemon-jsvc
 +
 +
 +mkdir /var/lib/unifi
 +mkdir /var/log/unifi
 +mkdir /var/run/unifi
 +
 +#https://serverfault.com/questions/643006/what-is-status-of-proc-and-how-do-i-call-it
 +# add to /lib/lsb/init-functions
 +
 +vi /lib/lsb/init-functions
 +
 +status_of_proc () 
 +
 +    local pidfile daemon name status OPTIND;
 +    pidfile=;
 +    OPTIND=1;
 +    while getopts p: opt; do
 +        case "$opt" in 
 +            p)
 +                pidfile="$OPTARG"
 +            ;;
 +        esac;
 +    done;
 +    shift $(($OPTIND - 1));
 +    if [ -n "$pidfile" ]; then
 +        pidfile="-p $pidfile";
 +    fi;
 +    daemon="$1";
 +    name="$2";
 +    status="0";
 +    pidofproc $pidfile $daemon > /dev/null || status="$?";
 +    if [ "$status" = 0 ]; then
 +        log_success_msg "$name is running";
 +        return 0;
 +    else
 +        if [ "$status" = 4 ]; then
 +            log_failure_msg "could not access PID file for $name";
 +            return $status;
 +        else
 +            log_failure_msg "$name is not running";
 +            return $status;
 +        fi;
 +    fi
 +}
 +log_daemon_msg () {
 +    # Dummy function to be replaced by LSB library.
 +
 +    echo $@
 +}
 +
 +log_end_msg () {
 +    # Dummy function to be replaced by LSB library.
 +
 +    if test "$1" != "0"; then
 +      echo "Error with $DESCRIPTION: $NAME"
 +    fi
 +    return $1
 +}
 +
 +#jetzt fehlt noch die Commons Demon jar .-(
 +
 +# https://commons.apache.org/proper/commons-daemon/download_daemon.cgi
 +
 +cd /srv/
 +wget http://mirrors.ae-online.de/apache//commons/daemon/binaries/commons-daemon-1.1.0-bin.tar.gz
 +
 +tar xvfz commons-daemon-1.1.0-bin.tar.gz
 +
 +cd  /srv/commons-daemon-1.1.0
 +
 +ln -s  /srv/commons-daemon-1.1.0/commons-daemon-1.1.0.jar /usr/share/java/commons-daemon.jar
 +</code>
 +
 +
 +
 +Leider start der Controller nicht sauber, keine echten Fehlermeldungen .. tippe auf ein Problem mit Pfaden bzw. Klassenpfaden.
 +
 +Hmm, mal sehen ob sich die Mühe lohnt oder doch lieber kaufen...
 +
 +Demnächst mehr (vieleicht ...)
 +
 +
 +
 +
 +
 +----
 +
 +
 +
 +==== Quellen ====
 +
 +  * http://www.lowefamily.com.au/2016/06/02/installing-ubiquiti-unifi-controller-5-on-raspberry-pi/2/
 +
 +
  
"Autor: Gunther Pipperr"
raspberry/fedberry_quick_install.txt · Zuletzt geändert: 2018/01/30 16:20 von gpipperr