Willkommen

Herzlich Willkommen auf meinem kleinen privaten Blog!

Dieser Blog ist vor langer Zeit entstanden um die daheim gebliebenen mit Fotos und Geschichten über meinen Neuseelandaufenthalt zu informieren. Mittlerweile sind aber auch andere Geschichten dazu gekommen. Neben einigen Hilfestellungen für Computerprobleme (vor allem Linux) berichte ich auch von meinem Onlineshop www.bier-kaufen.de. Schaut euch einfach ein bisschen auf meiner Seite um und hinterlasst einen Kommentar.

Getränkekistenregal für Europalette

Heute gibt es mal wieder ein bisschen Spezielleres. Ich verkaufe ja Bier im Internet und benötige für meine Halle ein Regalsystem, in welchem ich viele Bierkisten passen. Fertige Regalsysteme im Netz fangen bei 300 Euro an. Das geht selbst besser.

Bauteile und Kosten

Da ich in der Halle viel Platz nach oben habe, wird das Regalsystem sehr hoch:

  • Höhe: ~2400 mm
  • Breite: ~1300 mm
  • Tiefe: ~400 mm

Die Breite ist so gewählt, dass genau vier Euro-Bierkisten nebeneinander passen und das Ganze auf eine Palette passt.

Insgesamt werden acht 30×50 mm Latten mit einer Länge von 3000 mm benötigt. Im Baumarkt um die Ecke gibt es das sägerau für 1,50 pro Latte. Insgesamt also 12 Euro.

Konstruktion und Zusammenbau

Ich habe zunächst die Latten auf Länge gesägt. Insgesamt werden benötigt:

  • 4x 2390 mm
  • 8x 1200 mm
  • 8x 340 mm

Es ist nicht unbedingt nötig aber die sägerauen Latten sind nicht sonderlich schön. Daher noch eine Runde über den Hobel mit allem.

Wenn alle Latten vorbereitet sind kann der Zusammenbau beginnen.

Die Latten der Voderseite sind 90 mm niedriger als auf der Rückseite. So bekommen die Kästen eine leichte Schräge und die Flaschen können besser entnommen werden. Das Ganze ist so konstruiert, dass auf die Palette nochmal eine Ebene an Kisten normal hingestellt werden kann. Pro Latte passen 4 Kisten, also Pro Regal 24 Kisten. Die Latten müssen viel aushalten, daher am besten mehrere (mindesten 2) Schrauben pro Latte verwenden.

Nachdem Vorder- und Rückseite montiert sind, können beide über Latten auf der Seite (340 mm) verbunden werden. Hier sind die Abstände nicht wichtig. Am besten über die gesamte höhe gleich verteilen.

Montage auf der Palette

Die Montage auf der Palette war relativ einfach. Ich habe diese lediglich mit jeweils 8 langen Schrauben im Holz der Europalette verankert. Bei der Montage des zweiten Regals ist aufgefallen, dass man hier etwas tiefer (etwa 10 cm) ansetzen sollte, da man sonst mit den überstehenden Ecken der Rückseite der Kisten an die des anderen Regals stößt. Dadurch verliert man die unterste Reihe direkt auf der Palette.

Fazit

Mit einfachsten Mitteln und etwa 20 Euro Geldeinsatz bekommt man ein Regal mit extra viel Platz und Stauraum. Das Regal steht jetzt schon mehrere Wochen voll beladen und hält nach wie vor einwandfrei.

gitea – Der bessere Alternative zu gogs (Howto zur Installation)

Hallo Leute,

die Entwicklung schreitet manchmal mit weiten Schritten voran und man muss immer am Ball bleiben um auf dem neusten Stand zu sein. Und so hab ich mir gitea mal etwas genauer angesehen.

Was ist gitea, gogs, gitlab?

gitea ist ein fork von gogs einem wirklich sehr coolem und Ressourcen sparenden github.com Klon. Mit beiden Systemen kann man sich quasi sein ganz persönliches github aufbauen und zwar auf seinen eigenen Servern.

Im übrigen lasse ich gitlab für mich mal vollkommen außen vor, weil es mir kalt über den Rücken läuft, wenn ich an Ruby on Rails Anwendungen denke und zudem gogs/gitea deutlich (!) Ressourcen sparender ist.

Ich selbst betreibe zwei Instanzen von gogs (privat und in der Forschungsgruppe) und möchte in diesem Artikel auch die Erfahrungen mit der Migration teilen.

Warum plötzlich gitea und nicht weiter mit gogs?

Wie bereits gesagt ist gitea ein Klon vom quelloffenen gogs. Die Hauptentwicklung bei gogs hing mehr oder weniger an einer Person und die Entwicklung stagnierte in letzter Zeit enorm. In gitea sind mittlerweile einige Feature eingearbeitet, welche so nicht bei gogs vorkommen. Einige Beispiele:

  • GPG verification
  • 2-Faktor-Authentifizierung
  • OpenID

Vor Allem hat mich die 2-Faktor-Authentifizierung überzeugt. Auch glaube ich, dass die Entwicklung durch mehr Personen einfach mehr leisten und schneller Updates bringt.

Gitea ist ja schön und gut, aber wie migriere ich von gogs?

Ich habe nun insgesamt 2 Instanzen von gitea aufgesetzt:

  • Neuinstallation unter Debian 9 (Stretch)
  • Migration von gogs 0.11.19.* unter Arch

Neuinstallation von gitea unter Debian 9 (Stretch)

Die einfachste Variante ist wohl die Neuinstallation. Alle der folgenden Befehle werden als sudo ausgeführt. Zunächst sollte ein User angelegt werden:

adduser --system git

Stellt sicher, dass git Installiert ist:

apt-get install git

Anschließend Ordner erstellen, gitea herunterladen und rechte anpassen:

mkdir -p /opt/gitea/custom/conf
mkdir /opt/gitea/data
cd /opt/gitea/
wget -O gitea https://dl.gitea.io/gitea/master/gitea-master-linux-amd64
chmod +x gitea
chown -R git:git /opt/gitea/

Die jeweils aktuelle gitea Version findet man unter https://github.com/go-gitea/gitea/releases oder https://dl.gitea.io/gitea/

Nun kann man gitea bereits mit folgendem Befehl starten:

./gitea web

Dieser Befehl legt auch schonmal eine leere config-datei unter /opt/gitea/custom/conf/ an.
Wir möchten gitea aber nicht ständig manuell starten und legen stattdessen ein .service-file für systemd an. Dazu im die Datei /etc/systemd/system/gitea.service mit folgendem Inhalt anlegen:

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gitea
ExecStart=/opt/gitea/gitea web
Restart=always

[Install]
WantedBy=multi-user.target

Mit folgenden Befehlen kann nun gitea gestartet, gestopt und enabled werden (Achtung: Vorher den Befehl „systemctl daemon-reload“ ausführen):

systemctl enable gitea.service
systemctl start gitea.service
systemctl stop gitea.service
systemctl status gitea.service

Hier auch noch der Auszug aus meiner nginx-config:

########################################
#
# git.website.tdl
#
########################################

server {
        listen 80;
        listen [::]:80;

        error_log /var/log/nginx/error.log warn;

        server_name git.website.tdl;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name git.website.tdl;

        error_log /var/log/nginx/error.log warn;

        proxy_cache off;
        ssl_certificate /etc/letsencrypt/live/git.website.tdl/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/git.website.tdl/privkey.pem;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        ssl_session_tickets off; # Requires nginx >= 1.5.9
        ssl_stapling on; # Requires nginx >= 1.3.7
        ssl_stapling_verify on; # Requires nginx => 1.3.7
        ssl_trusted_certificate /etc/letsencrypt/live/git.website.tdl/chain.pem;
        resolver 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=300s;
        resolver_timeout 5s;
        ssl_dhparam /etc/nginx/ssl/dhparams.pem;
        
	# Disalow to read .htaccess-Files
        location ~/\.ht {
                deny all;
        }

	client_max_body_size 1G;

	# Configuration for letsencrypt
    	location /.well-known {
		alias /srv/http/git.website.tdl/.well-known;
    	}

        location / {
                proxy_pass http://localhost:3000/;
        }

}

Es wird ein einfacher proxy_pass angelegt. Gitea sollte damit im Internet erreichbar sein. Nun noch wie üblich eine Datenbank anlegen (ich gehe davon aus, das schafft ihr) und man kann auch schon los legen.

Migration unter Arch

Zunächst einmal muss gitea installiert werden. Ich empfehle dabei das gitea aus dem user repository (mehr Infos: https://wiki.archlinux.org/index.php/Gitea) zu nehmen. Ich selbst habe mich dafür entschieden, die installation analog zu der unter Debian zu machen, da ich hier gerne das Upgrade selbst durchführen will.

Leider funktioniert die einfache Migration wie hier beschrieben nicht mehr: https://docs.gitea.io/en-us/upgrade-from-gogs/ Dazu wäre Version 0.9 nötig. Ich habe leider auch keine elegante Variante gefunden. Ich habe zwar die aufgezeigte Migration versucht, aber die Datenbank ist einfach nicht mehr konsistent. Einzige Migrationsmöglichkeit ist es, die Repos einzeln zu migrieren.

Kostenlose S/MIME Zertifikate vom Fraunhofer SIT

Normalerweise halte ich mich ja vor Dingen fern, die „Volks-“ im Namen haben, aber die Volksverschlüsselung des Fraunhofer SIT klingt einfach zu verlockend.

TL:DR; Bei der Volksverschlüsselung erhält man nach Authentifizierung ein für 2 Jahre gültiges S/MIME Zertifikat. Leider ist das Zertifikat selbst signiert, aber das Fraunhofer Institut arbeitet wohl schon an einer Aufnahme in die trusted stores.

Was ist S/MIME?

Secure / Multipurpose Internet Mail Extensions (S/MIME) ist ein toller weg seine Emails zu signieren und zu verschlüsseln. Es ist vergleichbar mit GnuPG ist aber deutlich besser in alle Email-Clients integriert und man benötigt keine Plugins oder Erweiterungen. Mehr dazu hier: http://t3n.de/news/mails-verschlusseln-eigentlich-482381/

Wie bekomme ich das Zertifikat?

Da für das Zertifikat der vollständige Name überprüft werden muss, funktionieren derzeit leider nur folgende Verifikationsmethoden:

  1. Personalausweis: Man nutzt die tollen Funktionen des Personalausweises und hat ein Lesegerät dafür.
  2. Telekom: Man ist Festnetzkunde der Telekom und kann über die Rechnung seinen Namen verifizieren
  3. Registrierungscode: Man findet jemanden vom Fraunhofer auf einer Veranstaltung und lässt sich vom Mitarbeiter verifizieren.

Die letzte Methdoe habe ich gewählt und beschreibe im Folgenden wie man sich das Zertifikat holt.

Leider gibt es die Antrags-Software derzeit nur für Windows. Daher empfehle ich einfach kurz eine Windows VM anzulegen und mit der Software ein Zertifikat beantrage. Das Tool einfach herunterladen, installieren und folgende Identitäsnachweis wählen:

Anschließend Email-Adresse und Antrags-Code auf der Karte eingeben. Nach der Überprüfung wird noch ein Bestätigungscode auf die angegebene Email-Adresse geschickt und schon ist der Antrag fertig.

Vergesst nicht euren Sperrcode sicher aufzuheben. Dieser wird benötigt, wenn das Zertifikat vor dem Ablaufdatum zurückgezogen werden muss.

Zertifikat exportieren

Zum exportieren des Zertifikates, muss links im Menü das Zahnrad ausgewählt werden und anschließend „Zertifikat exportieren“. Achtet darauf, dass ihr ein .p12 Zertifkat exportiert. Dieses kann in der Regel für alle Systeme verwendet werden.

Zertifikat in Thunderbird einbinden

Die Einbindung in Thunderbird ist dann eigentlich ein Kinderspiel. Man geht zu seinen Email-Konten (unter Linux: Bearbeiten -> Konten Einstellungen -> S/MIME-Sicherheit.

Anschließend wählt man für die Digitale Unterschrift und Verschlüsselung das richtige .p12 Zertifikat aus (gibt dann noch ein eventuell vergebenes Passwort ein) und schon wars das.

Es muss dann außerdem unter Bearbeiten -> Einstellungen -> Erweitert -> Zertifikate Verwalten das Zertifikat vom „Fraunhofer SIT“ suchen und bei allen Zertifikaten das „Vertrauen bearbeiten“ und alle drei Häckchen setzen.

Um zu testen, ob alles funktioniert hat, sendet das System automatisch eine verschlüsselte Email. Wenn alles richtig eingerichtet ist, solltet ihr die Nachricht ohne Probleme entschlüsseln können.

 

Tote die Politiker wählen – Gedanken die man sich so beim Wählen macht

Zunächst mal vorne weg:

Auch in der Bundestagswahl 2017 gibt es einen Anteil an Toten, die gewählt haben.

Ich habe gestern, also etwa 3 Wochen vor der Bundestagswahl 2017, meine Stimme per Briefwahl abgegeben und konnte danach folgenden Gedanken nicht mehr los werden:

Was passiert eigentlich wenn ich jetzt sterbe?

Theoretisch könnte ich ja jetzt sterben und meine Stimme, zusammen mit dem Wahlschein wäre im Briefwahlbüro und würde in 3 Wochen ausgezählt werden. Theoretisch könnte zwar anhand des Wahlscheins überprüft werden, ob ich noch lebe, aber laut Aussage eines Wahlvorstandes wird dies nicht gemacht.

Weiterer interessanter Gedanke eines Freundes:

Wenn morgen die Revolution ausbricht, gibt es da draußen ein Dokument mit meinem Namen und meiner politischen Gesinnung.

Hach ja, was man sich nicht alles für Gedanken macht, wenn man wählen geht. Alles in allem ist es gerade aber ein komisches, aber auch befreiendes Gefühl sich jetzt nicht mehr von Wahlwerbung beeinflussen lassen zu müssen. In diesem Sinne: Geht wählen 🙂

Howto: Multi-Node Spark Cluster im Standalone-Mode auf Debian 9

Hallo Zusammen,

die Reise des verteilten Rechnens geht weiter. Ich setze voraus, dass ihr bereits einen Funktionsfähigen Hadoop-Cluster habt. Wie man diesen Aufsetzt kann hier nachgelesen werden: Hadoop-Cluster mit Debian 9 aufsetzen

Ich setze bei der Namensgebung stark auf diese Anleitung auf. Es lohnt sich also immer, diese

Spark Herunterladen und Konfigurieren

Ich setze hier voraus, dass ihr die Key-File-Anmeldung mit SSH eingerichtet habt und die verschiedenen Rechner in der /etc/hosts benannt sind.

Alle folgenden Arbeiten werden zunächst auf dem Master „hadoop-master“ (192.168.123.90) durchgeführt (vgl. Hadoop-Cluster mit Debian 9 aufsetzen). Zunächst die aktuelle Version herunterladen und entpacken. Wählt dazu die Pre-build Version für Apache Hadoop in der entsprechenden Version.

cd /opt/
wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
tar xvf spark-2.2.0-bin-hadoop2.7.tgz
mv spark-2.2.0-bin-hadoop2.7/ spark/
chown -R hadoop:hadoop spark/
  • /opt/spark/conf/slaves.template zu /opt/spark/conf/slaves kopieren, anpassen und festlegen, auf welchen Maschinen ein Spark Worker gestartet werden soll
# A Spark Worker will be started on each of the machines listed below.
#localhost
hadoop-master
hadoop-slave-1
hadoop-slave-2
hadoop-slave-3
hadoop-slave-4
hadoop-slave-5
hadoop-slave-6
  • /opt/spark/conf/sparks-env.sh.template zu /opt/spark/conf/spark-env.sh kopieren und am Ende Folgendes einfügen:
SPARK_MASTER_HOST=hadoop-master
  • /opt/spark/conf/sparks-defaults.conf.template zu /opt/spark/conf/spark-defaults.conf kopieren und wie folgt anpassen:
spark.master                     spark://hadoop-master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://hadoop-master:8021/spark-log

Spark auf Slaves Verteilen

Nun erstelle wir zunächst mit Hilfe von tmuxinator (vgl. ) auf den Slaves das Sparks-Verzeichnis.

sudo mkdir /opt/spark/
sudo chown -R hadoop:hadoop /opt/spark/

Jetzt verteilen wir auf dem master die files auf die slaves:

scp -r spark/* hadoop-slave-1:/opt/spark/.
scp -r spark/* hadoop-slave-2:/opt/spark/.
scp -r spark/* hadoop-slave-3:/opt/spark/.
scp -r spark/* hadoop-slave-4:/opt/spark/.
scp -r spark/* hadoop-slave-5:/opt/spark/.
scp -r spark/* hadoop-slave-6:/opt/spark/.

Spark Cluster Starten

Nun sollte alles installiert sein und wir können den Spark-Cluster starten:

# Starts both a master and a number of slaves.
./opt/spark/sbin/start-all.sh
# Stops both the master and the slaves.
./opt/spark/sbin/stop-all.sh

Ab jetzt kann man über http://192.168.123.90:8080/ (hier natürlich die eigene IP eingeben) das Webinterface aufrufen und sieht seine Worker.

Hadoop-Cluster mit Debian 9 aufsetzen

Im Rahmen einer Forschungsarbeit beschäftige ich mich mit Spark auf einem Hadoop-Cluster. Ich habe daher ein wenig Spielzeug bekommen und wollte mal sehen, wie geeignet das System für uns ist. Der Testaufbau soll vor allem auch zeigen, ob man große Daten auch mit geringen Ressourcen gut verarbeiten kann.

Die Maschinen

Ingesamt 7 Desktop-Rechner mit

  • i7-2600 @3,4 GHz mit 4 Kernen
  • 500GB HDD
  • 8 GB RAM

Ich weiß, die Specs sind laut Empfehlungen viel zu klein für ein Hadoop-Cluster, aber der Test soll auch zeigen, wie weit man mit geringen Ressourcen kommt.

Das Betriebssystem

Mal wieder steht man vor der Wahl des Betriebssystem. Ich fühle mich eigentlich auf Arch am wohlsten, da ich aber weniger Arbeit mit der Wartung der Maschinen als vielmehr mit Hadoop verbringen möchte, hab ich mich für Debian 9 entschieden.

Festplattenkonfiguration

  • 30GB: /
  • 8GB: SWAP
  • Rest für /home/

Netzwerkkonfiguration

Wir arbeiten ein einem abgeschottenen Netzwerk innerhalb der Hochschule. Die IP-Adressen sind eigentlich egal und dienen nur mir als Gedächtnisstütze ;). Wichtig ist nur, dass man die Hosts-Datei /etc/hosts entsprechend anpasst:

192.168.123.90 hadoop-master
192.168.123.91 hadoop-slave-1
192.168.123.92 hadoop-slave-2
192.168.123.93 hadoop-slave-3
192.168.123.94 hadoop-slave-4
192.168.123.95 hadoop-slave-5
192.168.123.96 hadoop-slave-6

tmux dein Freund zur Administration vieler Maschinen

Für die Administration vieler Maschinen ist tmux quasi unverzichtbar. Ich verwende dazu noch das tool tmuxinator mit folgender Konfiguration:

name: hadoop
root: ~/
windows:
  - editor:
      layout: tiled
      synchronize: after
      panes:
        - ssh [email protected]
        - ssh [email protected]
        - ssh [email protected]
        - ssh [email protected]
        - ssh [email protected]
        - ssh [email protected]
        - ssh [email protected]
  - server: bundle exec rails s

Installation Hadoop

Ich habe mich an der Anleitung http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html orientiert und bilde hier nur die wichtigsten Schritte ab.

Zunächst die neuste Java-Version und rsync installieren:

sudo apt-get install openjdk-8-jdk rsync

SSH Public-Key Authentifizierung für alle Maschinen

Der master sollte auf alle slaves Zugriff haben. Daher habe ich auf dem master einen Schlüssel erstellt und diesen auf die anderen Maschinen verteilt.

Installation und Konfiguration des Masters

Die folgenden Arbeiten werden zunächst nur auf dem Master vorgenommen. Die neuste Version von Hadoop herunterlade und entpacken:

mkdir /opt/hadoop
cd /opt/hadoop/
wget http://www-eu.apache.org/dist/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz
tar -xzf hadoop-1.2.0.tar.gz
mv hadoop-2.8.1 hadoop
chown -R hadoop:hadoop /opt/hadoop/

Nun müssen einige files auf dem Master angepasst werden:

  • /opt/hadoop/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
  • /opt/hadoop/hadoop/etc/hadoop/core-site.xml
<configuration>
	<property>
		<name>fs.default.name</name> 
		<value>hdfs://hadoop-master:9000/</value>
	</property>
	<property>
		<name>io.file.buffer.size</name>
		<value>131072</value>
	</property>
</configuration>
  • /opt/hadoop/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
	<property> 
		<name>dfs.name.dir</name> 
		<value>/home/hadoop/hadoop/dfs/name</value> 
	        <final>true</final> 
	</property> 
</configuration>
  • /opt/hadoop/hadoop/etc/hadoop/slaves
hadoop-slave-1
hadoop-slave-2
hadoop-slave-3
hadoop-slave-4
hadoop-slave-5
hadoop-slave-6

Installation und Konfiguration der Slaves

Nun müssen die Files auf alle slaves verteilt werden (hier hilft wieder tmux).

scp -r /opt/hadoop/hadoop hadoop-slave-1:/opt/hadoop
scp -r /opt/hadoop/hadoop hadoop-slave-2:/opt/hadoop
scp -r /opt/hadoop/hadoop hadoop-slave-3:/opt/hadoop
scp -r /opt/hadoop/hadoop hadoop-slave-4:/opt/hadoop
scp -r /opt/hadoop/hadoop hadoop-slave-5:/opt/hadoop
scp -r /opt/hadoop/hadoop hadoop-slave-6:/opt/hadoop

Nun auf den Slaves noch folgendes Config-File anpassen:

  • /opt/hadoop/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
	<property> 
		<name>dfs.name.dir</name> 
		<value>/home/hadoop/hadoop/dfs/name</value> 
	        <final>true</final> 
	</property> 
</configuration>

Und fertig ist die komplette Konfiguration. Nund muss das HDFS formatiert werden:

/opt/hadoop/hadoop/bin/hdfs namenode -format <cluster_name>

Starten und Beenden der Dienste

Am Ende sollten verschiedene Dienste gestartet werden. Dazu zunächst in folgendes Verzeichnis wechseln:

  • /opt/hadoop/hadoop/sbin/
# Starten der HDFS Namenode und Datanodes
./start-dfs.sh
# Starten der YARN Prozesse
./start-yarn.sh
# Starten des WebAppProxy Servers
./yarn-daemon.sh --config /opt/hadoop/hadoop/etc/hadoop/ start proxyserver
# Starten des MapReduce JobHistory Servers
mr-jobhistory-daemon.sh --config /opt/hadoop/hadoop/etc/hadoop/ start historyserver

Möchte man die Server beenden können folgende Befehle verwendet werden:

# Stoppen der HDFS Namenode und Datanodes
./stop-dfs.sh
# Stoppen der YARN Prozesse
./stop-yarn.sh
# Stoppen des WebAppProxy Servers
./yarn-daemon.sh --config /opt/hadoop/hadoop/etc/hadoop/ stop proxyserver
# Stoppen des MapReduce JobHistory Servers
mr-jobhistory-daemon.sh --config /opt/hadoop/hadoop/etc/hadoop/ stop historyserver

Webinterfaces

Nach dem Starten aller Dienste, sollten folgende Dienste erreichbar sein (IP-Addresse ist diejenige wo auch der Service läuft, in dieser Beschreibung der Master; Port ist jeweils der Standardport):

  • NameNode: http://192.168.123.90:50070
  • ResourceManager: http://192.168.123.90:8088
  • MapReduce JobHistory Server: http://192.168.123.90:19888

Arch Linux: Android Studio Virtual Devices starten nicht

Heute nach langer Zeit mal wieder ein kleiner quick and dirty bugfix:

Ich habe mir Android Studio aus den Paketquellen installiert, doch leider konnte ich keine virtuellen Devices starten.

Einzige Lösung:

/home/[user]/Android/Sdk/emulator/emulator -use-system-libs -avd [vm_name]

Damit das ganze auch innerhalb von Android Studio klappt, musste ich folgenden Workaround anwenden:

cd /home/[user]/Android/Sdk/emulator/lib64/libstdc++
mkdir old
mv * old/
ln -s /usr/lib/libstdc++.so.6
ln -s /usr/lib/libstdc++.so.6.0.24

und nochmal das ganze für 32bit:

cd /home/[user]/Android/Sdk/emulator/lib/libstdc++
mkdir old
mv * old/
ln -s /usr/lib/libstdc++.so.6
ln -s /usr/lib/libstdc++.so.6.0.24

Das hat bei mir zum Erfolg geführt.

Update 27.08.2017

Übrigens muss diese Methode nach einem Update der SDKs wiederholt werden.

Automatischer Aufbau einer openVPN Verbindung beim Start von freeNAS

Hallo Zusammen,

ich arbeite derzeit mit FreeNAS und bin sehr begeistert von diesem System. Dieses bietet alles, was man 2017 von einem NAS erwartet und gibt mir noch dazu viele Freiheiten.

Situation

Leider befindet sich der FreeNAS Server hinter einer Firewall, die zwar Verbindungen in das Internet zulassen, aber nicht aus dem Internet auf den FreeNAS-Server. Dennoch habe ich einen Server im Internet, welcher als openVPN-Server fungiert. Das Ziel ist es, dem FreeNAS automatisch eine VPN-Verbindung zu dem Server im Internet aufbauen zu lassen. Von hier aus kann dann weiter agiert werden.

VPN Konfiguration

FreeNAS verwendet openBSD als Betriebssystem mein VPN-Server läuft mit Arch Linux. Da ich jetzt nicht den 100dersten „Wie konfiguriere ich VPN“-Beitrag posten möchte, verweise ich auf zwei sehr sehr gute Wiki-Beiträge im ArchWiki:

Konfiguration im FreeNAS

Für die Konfiguration im FreeNAS haben wir verschiedene Möglichkeiten. Leider habe ich es nur über eine Möglichkeit geschafft (die erste direkt im Betriebssystem). Unabhängig von der Lösung müssen alle benötigten Dateien auf den Ordner gepackt werden:

  • ca.crt
  • freenas.crt
  • freenas.key
  • ta.key
  • client.conf

Anschließend kann die Konfiguration auf dem FreeNAS-Server mit

openvpn /root/vpn/client.conf

getestet werden.

Direkt im Betriebssystem

Ich habe die oben genannten Dateien unter /root/vpn/ gelegt. Achtet dabei, dass in der client.conf immer der absolute Pfad angegeben ist. Anschließend muss in der Datei /conf/base/etc/rc.conf am Ende Folgendes Ergänzt werden:

# Start openVPN
openvpn_enable="YES"
openvpn_if="tun"
openvpn_dir="/root/vpn"
openvpn_configfile="/root/vpn/client.conf"

Anschließend reicht ein Neustart und die openVPN Verbindung wird automatisch erstellt.

Über Init/Shutdown Befehl oder Script

In der Weboberfläche kann unter Tasks -> Init/Shutdown Scripts -> Add Init/Shutdown Script ein Befehl bzw. Script angegeben werden, welches gestartet wird. Ich habe folgende Konfiguration versucht:

Leider war dies nicht von Erfolg gekrönt. Ich konnte auch leider keine Fehlerlogs finden. Die Verbindung wurde einfach nie aufgebaut. Ich habe dann ein einfaches BASH-Script geschrieben, welches die Verbindung aufbauen soll, doch leider können die Startscripte nur auf einem gemounteten Volume liegen. Auf /root/vpn/ hat man somit keinen Zugriff. Leider ist es in meiner Konfiguration auch nicht möglich auf ein gemountetes Volume gleich vom Start weg zuzugreifen, da dieses verschlüsselt ist und erst gemountet/geöffnet werden muss.

 

All Hail the Gottkanzler!

Ich habe ja schon hier: Der König von Narnia und die Technische Niederschule Regensburg über ein paar Trolle unter unseren Studierenden berichtet. Jetzt ist es schon wieder passiert und die Methoden werden immer besser.

Folgende Situation: Es ist Prüfungszeit und Regensburg wurde am 31.01.2017 von einem heftigen Eisregen überrannt. Die Prüfungskommission unter Leitung des Vizekanzlers Utto Spielbauer hat entschieden, die Prüfungen am Vormittag ausfallen zu lassen und hat dies mit folgender Email an [email protected] geschickt:

Sehr geehrte Professorinnen und Professoren,
sehr geehrte Mitarbeiterinnen und Mitarbeiter,
sehr geehrte Studierende,

aufgrund der Wetterlage hat die Hochschulleitung der OTH zusammen mit dem Vorsitzenden des Prüfungsausschusses beschlossen, dass sämtliche Prüfungen, die heute, 31.01.2017 vor 12.00 Uhr beginnen, ausfallen.

Über die Ersatztermine werden Sie dezentral über die Fakultäten informiert.

Mit freundlichen Grüßen

Utto Spielbauer
Vizekanzler

Völlig legitim und alles OK. Ca. eine Stunde später kam eine weitere Email mit folgendem Inhalt:

Sehr geehrte Professorinnen und Professoren,
sehr geehrte Mitarbeiterinnen und Mitarbeiter,
sehr geehrte Studierende,

die heutige Prüfungen können freiwillig geschrieben werden. Die Kollegen
und Kolleginnen werden die Prüfungen, basierend auf freiwilliger Teilnahme,
stattfinden lassen. Studierende, die nicht teilnehmen können, werden
zeitnah über die weitere Vorgehensweise informiert und eine Nichtteilnahme
führt nicht zu einem Fehlversuch.

Mit freundlichen Grüßen

Auto Spielbaur
Gottkanzler

Spätestens beim Gottkanzler sollte man stutzig werden. Sieht man dann genauer hin, merkt man, dass die Email von „[email protected]“ gekommen ist.

Alles in Allem hab selbst ich Anfangs geglaubt es würde sich um einen Schreibfehler beim Namen und Titel handeln und musste erst zweimal hinsehen. Abgesehen davon, dass ich hoffe, die Studierenden haben dadurch keine negativen Folgen, muss ich diesem speziellen Troll meinen Respekt zollen.

Wiederum sollte man über die Freigabepolitik für Emails an [email protected] nachdenken. Diese werden manuell von Menschen freigegeben und man kann menschliches Versagen anbringen. Wiederum frage ich mich, warum überhaupt externe Email Adressen an diese Email schreiben können? Zumindest hier kann man leicht gegensteuern.