Kategorien
Linux Programmieren

Bash mit Rest

Die Division mit Rest ist in der Bash sehr einfach möglich.


#!/bin/bash
for i in {1..22}; do
 echo "$i / 5 Rest $(($i % 5))"
done

In der Schleife werden die Zahlen von 1 bis 22 durchgezählt. Die Modulo Rechnung erfolgt via $i % 5 und die Ausgabe ist der Rest.
Mit einer Prüfung if [ $(($i % 5)) -eq 0 ]; then läst sich auf Teilbarkeit prüfen.
Das folgende Skript gibt ausschließlich die durch 512 teilbaren Zahlen zwischen 0 und 49152 aus.:

#!/bin/bash
for i in {1..49152}; do
 if [ $(($i % 512)) -eq 0 ]; then
   echo "$i"
 fi
done

Kategorien
IPTables Linux security

Wie verheimliche ich zusätzliche Router

Internetanbieter können feststellen wie viele Router Du betreibst, nicht das das irgend jemanden außer dich selbst etwas angehen würde.

Wie stellen Internetanbieter einen Router fest? an dem TTL (Time to Live) der TCP-Pakete Die du an sie weiter gibst.

Die TTL Kannst Du in einem vernünftigen* Router jedoch ändern.

Setze in der Firewall für das POSTROUTING einfach eine neue TTL.:

iptables -t mangle -I POSTROUTING 1 -j TTL --ttl-set 64

Die TTL von 64 wird von Unix Geräten, wie zum Beispiel Android Telefonen verwendet. Wenn Alle Pakete als direkt von einem Windows Gerät stammend wirken sollen wäre der richtige Wert 128.

Kategorien
Grafik Video

Videoformate und Auflösungen

CINEMA DCP 4k

  • 1.85:1 (Flat) / 3996×2160
  • 2.39:1 (Scope) / 4096×1716
  • 16:9 (QuadHD) / 3840×2160
  • Full Container / 4096×2160

CINEMA DCP 2k

  • 1.85:1 (Flat) / 1998×1080
  • 2.39:1 (Scope) / 2048×858
  • 16:9 (QuadHD) / 1920×1080
  • Full Container / 2048×1080

5k

  • 1.33:1 (4:3) / 5120×3840
  • 1.66:1 (5:3) / 5120×3072
  • 1.77:1 (16:9) / 5120×2880
  • 1.85:1 / 5120×2768
  • 1.9:1 / 5120×2700
  • 2:1 / 5120×2560
  • 2.37:1/ 5120×2160
  • 2.4:1 / 5120×2142
  • 2.44 / 5120×2098
  • 2.35:1 / 5120×2179

4k

  • 1.33:1 (4:3) / 4096×3072
  • 1.66:1 (5:3) / 4096×2458
  • 1.77:1 (16:9) / 4096×2304
  • 1.85:1 / 4096×2214
  • 1.9:1 / 4096×2160
  • 2:1 / 4096×2048
  • 2.35:1 / 4096×1679
  • 2.37:1 / 4096×1743
  • 2.4:1 / 4096×1728
  • 2.44 / 4096×1714

4kHD

  • 1.33:1 (4:3) / 3840×2880
  • 1.66:1 (5:3) / 3840×2304
  • 1.77:1 (16:9) / 3840×2160
  • 1.85:1 / 3840×2076
  • 2:1 / 3840×1920
  • 2.35:1 / 3840×1634
  • 2.37:1 / 3840×1620
  • 2.4:1 / 3840×1607
  • 2.44 / 3840×1574

2k

  • 1.33:1 (4:3) / 2048×1536
  • 1.66:1 (5:3) / 2048×1229
  • 1.77:1 (16:9) / 2048×1152
  • 1.85:1 / 2048×1107
  • 2:1 / 2048×1024
  • 2.35:1 / 2048×871
  • 2.37:1 / 2048×864
  • 2.4:1 / 2048×858
  • 2.44 / 2048×839

1080p

  • 1.66:1 (5:3) / 1920×1152
  • 1.77:1 (16:9) / 1920×1080
  • 1.85:1 / 1920×1038
  • 2:1 / 1920×960
  • 2.35:1 / 1920×817
  • 2.37:1 / 1920×810
  • 2.4:1 / 1920×803
  • 2.40:1 / 1920×800
  • 2.44 / 1920×787
  • 1.33:1 (4:3) / 1920×1440

720p

  • 1.33:1 (4:3) / 1280×962
  • 1.66:1 (5:3) / 1280×768
  • 1.77:1 (16:9) / 1280×720
  • 1.85:1 / 1280×692
  • 2:1 / 1280×640
  • 2.35:1 / 1280×545
  • 2.37:1 / 1280×540
  • 2.4:1 / 1280×536
  • 2.44 / 1280×525
Kategorien
MySQL

MySQL Prozessliste, ohne ruhende Prozesse, anzeigen

Leider erlaubt MySQL keine Filter für SHOW PROCESSLIST. Hierdurch wird die Übersicht der laufenden Prozesse schnell unübersichtlich.

Ab PHP 5.1 kann ich die laufenden MySQL Anfragen mit dem folgenden Befehl anzeigen:

SELECT * FROM information_schema.processlist;

Hierbei werden alle Prozesse, genau wie mit SHOW PROCESSLIST angezeigt, es ist aber auch eine Filterung möglich. Mit dem folgenden Befehl können alle laufenden MySQL Anfragen ohne die ruhenden Prozesse angezeigt werden.:

SELECT * FROM information_schema.processlist WHERE command != 'Sleep';

Die Ausgabe kann auch sortiert werden und weiter eingeschränkt werden. Mit dem folgenden Befehl werden dir MySQL Prozesse nach laufzeit sortiert und nur die Prozesse angezeigt die länger als zwei Sekunden laufen.:

SELECT user, time, state, info FROM information_schema.processlist WHERE command != 'Sleep' AND time >= 2 ORDER BY time DESC, id;

Die zur verfügung stehenden Felder sind ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS, STAGE, MAX_STAGE, PROGRESS, MEMORY_USED, EXAMINED_ROWS, QUERY_ID, INFO_BINARY und TID.

ColumnBeschreibung
ID Verbindungskennung
USERDer Benutzer der diesen Prozess gestartet hat
HOSTServer von dem die Verbindung eingeht
DBBenutzte Datenbanbk oder NULL wenn keine
COMMAND Art des ausgeführten Befehls
TIME Sekunden, seit der dieser Prozess in seinem aktuellen Zustand ist
STATE Aktueller Status des Prozesses
INFO Anweisung, die in diesem Prozess ausführt wird , oder NULL wenn keine
TIME_MSZeit in Millisekunden seit dem sich der Prozess im aktuellen Status befindet
STAGE Die Phase, in der sich der Prozess derzeit befindet
MAX_STAGE Die maximale Anzahl von Stufen
PROGRESS Der Fortschritt des Prozesses in der aktuellen Phase (0-100%)
MEMORY_USED Speicher in Bytes, der von diesem Prozess verwendet wird
EXAMINED_ROWSTabellenzeilen die von diesem Prozess gelesen wurden.
Nur bei UPDATE-, DELETE- und ähnliche Anweisungen. Bei SELECT- und ähnlichen Anweisungen bleibt der Wert Null
QUERY_IDID.
INFO_BINARY Informationen zu Binärdaten
Kategorien
Linux NAS

autossh als Dienst einrichten

So nutze ich AutoSSH aum meinem Gnubee 2 NAS um von überall an die Daten auf meinem NAS zu gelangen!
Die verwendung von autossh wurde auf meinem NAS notwendig da sie sonst nicht mehr über das Internet erreichbar ist. Mein Internetprovider bietet nur noch DS-Light an. 🙁

autossh?

Autossh ist ein Programm das einen Open-SSH Tunnel bei Verbindungsabbrüchen automatisch wiederherstellt.

Verbindung zum Server etablieren

Meine NAS muss eine Passwortlose Verbindung zu meinem Server aufbauen können.
Hiezu generiere ich einen SSH-Key und übertrage den Public-Key auf den Server.:

ssh-keygen -t rsa -b 2048
mv ~/.ssh/id_rsa.pub ~/.ssh/autossh-key.pub
mv ~/.ssh/id_rsa ~/.ssh/autossh-key
ssh-copy-id -i autossh-key benutzername@example.org

Verbindung testen

ssh benutzername@example.org

Dienst anlegen

Um den Tunnel beim Systemstart automatisch wieder herstellen zu lassen lege ich die Datei /etc/systemd/system/sshtunnel.service mit dem folgenden Inhalt an:

[Unit]
Description=Keeps a tunnel to 'example.org' open
After=network-online.target ssh.service

[Service]
User=root
Environment="AUTOSSH_PORT=0"
Environment="AUTOSSH_GATETIME=0"
RestartSec=30
Restart=always

ExecStart=/usr/bin/autossh -NT -o "ExitOnForwardFailure=yes" -R 17777:127.0.0.1:22 -p 22 -l benutzername example.org -i /root/.ssh/autossh-key
ExecStop=killall -s KILL autossh
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target

example.org ist durch den Hostnamen des Servers zu ersetzen, benutzername durch den verwendeten Benutzernamen.

Dienst aktivieren

Um den neu angelegten Dienst sshtunnel zu aktivieren muss dieser noch aktiviert und gestartet werden.

sudo systemctl enable sshtunnel.service
sudo systemctl start sshtunnel.service
Kategorien
Linux Postfix

Postfix: Zugriff von bestimmten IP-Adressen blockieren

Es gibt immer wieder EMail-Versender die mir mit ihren Spam EMails gewaltig auf die Nerven gehen. Die Absender geben an, das es sich um einen Newsletter handelt, jedoch bewirkt ein abbestellen des Newsletters nur das noch mehr “Newsletter” zugestellt werden.

Da diese Newsletter bei mir immer von der gleichen IP-Adresse kommen habe ich mir einen gängigen Weg gesucht die Kommunikation mit dieser Adresse vollständig zu unterbinden.

1. IP-Adresse ermitteln

Im EMail-Header ist die gesuchte IP-Adresse die erste vorkommende IP-Adresse die nicht zum eigenen Server gehört.
In meinem Beispiel-EMail-Header ist es die IP-Adresse 192.0.2.85.
(Keine Sorge, der gesammte EMail-Header ist made up, er sieht nur möglichst echt aus. Die IP-Adressen sind IP-Adressen die laut RFC zu Dokumentationszwecken bestimmt sind.)

Return-Path: <newsletter@cadbdcedcbfabdadef.de>
Delivered-To: meine-mail@example.org
Received: from mail.example.org
by mail.example.org (Dovecot) with LMTP id NfYUAK7XSFviHAAALzVKdg
for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:42 +0200
Received: by mail.example.org (Postfix, from userid 114)
id D79F53FE5E; Fri, 13 Jul 2018 18:47:41 +0200 (CEST)
Authentication-Results: mail.example.org;
dkim=pass (1024-bit key; unprotected) header.d=cadbdcedcbfabdadef.de header.i=newsletter@cadbdcedcbfabdadef.de header.b="UKjn3gGF";
dkim-atps=neutral
X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail.example.org
X-Spam-Level: *
X-Spam-Status: No, score=1.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HTML_IMAGE_RATIO_04,HTML_MESSAGE,MIME_HTML_ONLY,URIBL_BLOCKED
autolearn=no autolearn_force=no version=3.4.1
Received: from mta5085.cadbdcedcbfabdadef.com (mta5085.cadbdcedcbfabdadef.com [192.0.2.85])
by mail.example.org (Postfix) with ESMTPS id 669E73FD27
for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:39 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=teneo; d=cadbdcedcbfabdadef.de;
h=MIME-Version:From:To:Reply-To:Date:Subject:Content-Type:Content-Transfer-Encoding:Message-ID; i=newsletter@cadbdcedcbfabdadef.de;
bh=OBg4dbrG8hhFyJR7HMx+3IDg91CCOeaN9fnJCAVA6oE=;
b=UKjn3gGF5j9dxocn0xfFlMVHW+bbvUjere1rI99nga/TVlqu5OQFSOFkwJNUjgklof9Mi/9DIHrf
gafjAml+Onn6z29PSoAid1Rrn+K67B5XxKVk0qrHjSen3jMIf6SPdQRB9rQzvh7uIUAhmyLCVAnC
zbc2RugGh4/eZEvVYu4=
Received: from mta003.example.com (198.51.100.78) by mta5085.cadbdcedcbfabdadef.com id h93bqk1bessq for <meine-mail@example.org>; Fri, 13 Jul 2018 18:47:32 +0200 (envelope-from <newsletter@cadbdcedcbfabdadef.de>)
X-ARF: b98b6becf874558246b684f462613228
Feedback-ID: 5283550-b98b6becf874558246b684f462613228:b98b6becf874558246b684f462613228:newsletter:cadbdcedcbfabdadef
MIME-Version: 1.0
From: "cadbdcedcbfabdadef"<newsletter@cadbdcedcbfabdadef.de>
To: meine-mail@example.org
Reply-To: noreply@cadbdcedcbfabdadef.de
Date: 13 Jul 2018 18:47:32 +0200
Subject: Micro-SD-Karten
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
Message-ID: <0.0.569.CF.1A41AC9425F793A.0@mta5085.cadbdcedcbfabdadef.com>

2. Datei für den Filter erstellen

Um die Datei zu erzeigen benutze ich den Editor vim. Nach dem starten des Editors mittels folgendem Befehl…:

vi /etc/postfix/access_client

…kann mittels Taste [i] der Eingabemodus gesartet werden.

# IP Adresse und IP-Netze die ich blockiere
192.0.2.85 REJECT

Nach der Eingabe kann mittels Taste [ESC] und folgender Eingabe von :wq die Datei geschlossen und gespeichert werden.

Anschließend die Datei mit postmap kompilieren, so das Postfix direkt etwas mit dem Filter anfangen kann.:

postmap hash:/etc/postfix/access_client

Durch diesen Aufruf wird eine Datei access_client.db im Ordner etc/postfix/ angelegt.

3. Postfix konfiguration anpassen

In der Postfix Konfigurationsdatei main.cf muss unsere Datei jetzt noch der Option smtpd_sender_restrictions hinzugefügt werden.
Herzu prüfen ich mittels postconf welche Parameter aktuell für die Option “smtpd_sender_restrictions” gesetzt sind.:

sudo postconf -p smtpd_sender_restrictions
smtpd_sender_restrictions =

Entsprechend der Ausgabe sind auf meinem Postfix-Server für die “smtpd_sender_restrictions” keine Optionen gesetzt.

sudo postconf "smtpd_sender_restrictions = check_client_access hash:/etc/postfix/access_client"

Im Anschluss muss, zur Aktivierung der geänderten Konfiguration, der Postfix-Dienst neu geladen werden.:

service postfix reload

Anschließend werden Die Zustellversuche vom Postfix abgelehnt. In den Logiles wird dies entsprechend mit “Client host rejected: Access denied” vermerkt

Jul 18 10:21:16 server postfix/smtpd[3304]: connect from mta5085.cadbdcedcbfabdadef.com[192.0.2.85]
Jul 18 10:21:16 server postfix/smtpd[3304]: NOQUEUE: reject: RCPT from mta5085.cadbdcedcbfabdadef.com[192.0.2.85]: 554 5.7.1 : Client host rejected: Access denied; from= to= proto=ESMTP helo=
Jul 18 10:21:16 server postfix/smtpd[3304]: disconnect from mta5085.cadbdcedcbfabdadef.com[192.0.2.85] ehlo=2 starttls=1 mail=1 rcpt=0/1 quit=1 commands=5/6
Jul 18 10:26:39 server postfix/anvil[3305]: statistics: max connection rate 1/60s for (smtpd:192.0.2.85) at Jul 18 10:21:16
Jul 18 10:26:39 server postfix/anvil[3305]: statistics: max connection count 1 for (smtpd:192.0.2.85) at Jul 18 10:21:16
Kategorien
Linux Postfix

EMail Datenschutz – Mail Header filtern

Vor einigen Tagen fiel mir bei der Untersuchung  des, auch an dieser Stelle behandelten, TLS-Fehlers auf, das die E-Mail Header aller über meinen Server vesandten EMails die folgenden beiden Header-Zeilen enthalten.:

Received: from [192.168.*.*] (ip********.dynamic.kabel-deutschland.de [95.91.*.*])
by server.angststalt.de (Postfix) with ESMTPSA id A64D13FCE1
for <*****@*****.de>; Mon, 26 Mar 2018 21:46:44 +0200 (CEST)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
Thunderbird/52.6.0

Ich bin mir, mit Blick auf den 25. Mai 2018 nicht sicher ob eine EMail diese zusätzlichen, nicht für die Erfüllung des Dienstes erforderlichen, Metadaten weiterhin beinhalten darf.
(Lieber Leser, liebe Leserin, wenn Du eine Online-Rechtsberatung erteilen darfst und dich mit der EU-Datenschutz-Grundverordnung auskennst, würde ich mich über einen Kommentar ↓ von Dir sehr freuen!)

Da ich es persönlich nicht mag wenn Daten versteckt vorliegen (in diesem Fall im EMail-Header) die nicht benötigt werden aber dritten unter bestimmten Umstenden helfen können mir zu schaden habe ich mich für die Entfernung der Header-Zeilen entschieden. Auch ein Blick in die RFC5321, und einige eigene Tests, zeigen das diese beiden Header-Zeilen nicht für die Zustellung verwendet werden und somit die Entfernung nicht schadet.

Vorgehen:

1.) Den EMail-Server Prüfen

Mit dem Postfix-Konfigurationsparameter header_checks kann ich die EMails am einen PCRE Filter weitergeben und verändern lassen.
Mit dem Postfix-Konfigurationsparameter smtpd_sasl_authenticated_header Erweitere ich den EMail-Header um einen Eintrag über den zur Authentifizierung am EMail-Server genutzten Benutzernamen.

postconf -n header_checks 2>/dev/null
postconf -n smtpd_sasl_authenticated_header 2>/dev/null

Ich bekomme für beide Konfigurationen eine leere Antwort, daher schaue ich nach den Defaultwerten.:

postconf -d header_checks 2>/dev/null
header_checks =
postconf -d smtpd_sasl_authenticated_header 2>/dev/null
smtpd_sasl_authenticated_header = no

2.) EMail-Server Konfiguration anpassen

Da ich vor habe den Filter über PCRE umzusetzen benötige ich das Debian Paket postfix-pcre, welches die Unterstützung dür die gewünschten Perl Regular Expressions für Postfix mitbringt.:

sudo apt install postfix-pcre
The following NEW packages will be installed:
postfix-pcre
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 320 kB of archives.
After this operation, 373 kB of additional disk space will be used.

Nach dem das Paket installiert ist lege ich auf dem Server eine Datei mit dem Namen “header_checks”, im Postfix Verzeichnis, an. In dieser Datei werden die Filterregeln hinterlegt.:
sudo vi /etc/postfix/header_checks

/^Received: .*\(Authenticated sender:.*/ IGNORE
/^Received: by server\.angststalt\.de .*from userid [0-9]+\)/ IGNORE
/^User-Agent:/ IGNORE

Im Anchluss verlange ich vom Postfix dem Benutzernamen, der zur Anmeldung am EMail-Server verwendet wurde in die Header einzufügen und die Mail Header über meinen Filter zu leiten.:

postconf -e smtpd_sasl_authenticated_header=yes
postconf -e header_checks=pcre:/etc/postfix/header_checks

Nach dem folgenden neustart von Postfix kann ich mir eine Testnachricht senden und die Header prüfen.

service postfix restart

Bei meinem Vergleich des neuen EMail-Headers mit dem EMail-Header einer älteren EMail, die ich mir vor der Einrichtung des Filters gesandt habe, fehlen die von mir zu begin beanstandeten Header Zeilen.

Kategorien
Linux Postfix

Korrektur für Postfix TLS-Fehler „untrusted issuer“

Ich konnte mal wieder, beim EMail-Versand von meinem EMail-Server (Postfix) zu GMX einmal wieder keine EMails zustellen. Aus der aktuellen Fehlermeldung, welche in der Mail Delivery Notification erwähnt wird, geht hervor das es einen Zertifikatsfehler gab.

In den Postfix Logfiles erscheint die TLS-Fehlermeldung „untrusted issuer“.:

Mar 27 16:05:12 server postfix/smtp[6752]: certificate verification failed for mx01.emig.gmx.net[212.227.17.5]:25: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
Mar 27 16:05:12 server postfix/smtp[6752]: A602E3FF5C: Server certificate not trusted
Mar 27 16:05:12 server postfix/smtp[6752]: certificate verification failed for mx00.emig.gmx.net[212.227.15.9]:25: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
Mar 27 16:05:12 server postfix/smtp[6752]: A602E3FF5C: to=<********@gmx.de>, relay=mx00.emig.gmx.net[212.227.15.9]:25, delay=1.2, delays=0.12/0.03/1/0, dsn=4.7.5, status=deferred (Server certificate not trusted)

Der Aussteller des Zertzifikats des GMX-EMail Servers war meinem Postfix nicht bekannt.
Das SSL-Zertifikat des GMX EMail Server ist mit dem von der “Deutsche Telekom Root CA 2” signiert. War über eine Suche im Internet schnell gefunden. Die erste Zeile des Zertifikats ist in der Datei /etc/ssl/certs/ca-certificates.crt enthalten.

Die erste Zeile des Zertifikats der Telekom lautet.: MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc

In meiner Suche konnte ich einfach feststellen das das CA-Zertifikat der Telekom ab der Zeile 1110 in der Datei ca-certificates.crt enthalten ist.:

~]> grep -n MIIDnzCCAoeg /etc/ssl/certs/ca-certificates.crt
1111:MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc

Da in der CA-Datei auf meinem Server das Zertifikat enthalten ist prüfe ich gegen welche CA-Zertifikate Datei mein Postix die Zertifikate der Kommunikationspartner auf Gültigkeit zu prüfen:

postconf -n smtp_tls_CAfile 2>/dev/null
smtp_tls_CAfile =

Ich hatte also versäumt meinem Postfix die aktuell CA Zertifikate Datei bekanntzugeben.
Ich habe mit postconf den CAfile bekannt gegeben.

postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt

Und anschließend meinen MTA neu gestartet.

service postfix restart

Abschließend werden meine EMails endlich wieder ohne Fehlermeldung auch an den Mailserver von GMX zugestellt.

Mar 27 16:17:44 server spamd[1256]: prefork: child states: II
Mar 27 16:17:45 server postfix/smtp[7300]: 9ACD13FF62: to=<********@gmx.de>, relay=mx01.emig.gmx.net[212.227.17.5]:25, delay=1.2, delays=0.12/0.03/0.79/0.29, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=1MvIfx-1ejZeK2V9d-00qsAg)
Mar 27 16:17:45 server postfix/qmgr[7226]: 9ACD13FF62: removed
Kategorien
Allgemein GnuBee 2 NAS

GnuBee2 – Erwerb und Preis

Ich hatte genug von meiner alten NAS und habe mir nach einer umfassenden Recherche zu meinen Anforderungen und Möglichkeiten eine GnuBee2 bestellt.

Die GnuBee Personal Cloud 2 ist eine NAS, bestehend aus freier, offener Hard- und Software, die bis zu 6 3,5-Zoll-SATA-Festplatten und/oder SSD, eine SD-Karte, eine Serielle Schnitstelle und 3 Gigabit LAN-Ports unterstützt.
Die Hardware wurde um den SOC MediaTek-MT7621A-CPU, welcher über zwei CPU-Kerne mit Hyperthreading verfügt die mit 880 MHz getacktet sind und auf 1,2 GHz übertaktet werden können sowie 512 MByte DDR3-Hauptspeicher gebaut. Dieser findet, wie hier gezeigt wird, in Zahlreichen Chinesischen WLAN-Routern verwendung.

Die vollständigen Blaupausen stehen zusammen mit der Dokumentation des Boards auf GitHub als PDFs unter CC-BY-SA 4.0 zur wirklich sehr freien Verfügung.

Als Kritikpunkt für das NAS sehe ich das “Gehäuse”. Dieses besteht aus zwei dünne Blech-Platten die mit je 3 Winkeln an das Mainboard geschraubt werden.

Ich habe meine Bestellung der GnuBee 2 am 04.02. 2018 auf der Internetseite Crowdsupply (USA) aufgegeben.
Der Versand erfolgte bereits am 07.02.2018 aus Portland (USA).
Die Lieferung dauerte insgesamt 18 Tage., geliefert wurde am 22.02.2018. Die Bestellung blieb 7 Tage zur Bearbeitung bei dem deutschen Zoll in Frankfurt am Main.

Der Preis für die NAS ohne steuer selbst war am 04.02.2018: 255,69 Euro. (324,00$ + 4,57 € Kreditkartengebühr für den Geldwechsel)
Die kosten für den deutsche Zoll betrugen 49,84 Euro.

So war die GnuBee 2 bei Ankunft verpackt

Mit Steuer, Versand und Kreditkartengebühren und der Gebühr für den
Währungsumtausch kostete mich das GnuBee 2 insgesamt 305,53 Euro.
Ein guter Preis für ein NAS mit Platz für 6 Festplatten, ohne Binary Blobs und inklusive “Gehäuse”.

Kategorien
lighttpd Linux

STRATO Linux VServer mit Webserver im Rettungssystem

Ich kann den STRATO vServern in ein Rettungssystem starten, welches leider keinen Webserver enthält.
Das Rettungssystem ist Praktisch, da ich über dieses Alternative Betriebssystem an alle Daten die auf dem Server abgelegt sind gelangen kann, auch wenn mein selbst verwaltetes Betriessystem auf dem Server nicht mehr funktioniert. Die Besucher meiner Seite erfahren leider nicht das ich meinen Server grade warte.
Um den potentiellen besuchern meiner Seite jedoch zeigen zu können das meine Seite durchaus noch vorhanden, nur grade in einem Wartungsfenster ist, ist ein solcher sehr wünschenswert.

Der einfache versuch via “apt update && apt install lighttps” führt jedoch leider zu ein paar nicht sehr aussagekräftigen Fehlermeldungen.

Es fehlen jedoch einfach nur ein paar Benutzer, genauer die Benutzer _apt, der Benutzer postfix und der Benutzer www-data.

adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup nogroup --force-badname -uid 119 _apt
adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup postfix -uid 111 postfix
adduser --quiet --gecos "" --no-create-home --disabled-password --disabled-login --ingroup www-data --uid 33 www-data

Im Anschluss kann der Webserver einfach installiert werden.:

apt update
apt -y install lighttpd php-cgi
lighttpd-enable-mod fastcgi

Im Anschluss bearbeite ich die Datei /etc/lighttpd/lighttpd.conf und füge am ende die folgenden 4 Zeilen an.:

url.rewrite = ( "" => "/maintenance.php" )
fastcgi.server = ( ".php" => ((
 "bin-path" => "/usr/bin/php-cgi",
 "socket" => "/tmp/php.sock"
)))

Die Raute # in der Zeile ‘#  “mod_rewrite”,’ muss entfernt werden, so das die erste Zeile jedwede Anfragen an die Datei maintenance.php im Ordner /var/www/html/ umleiten kann.
Die verbleibenden drei Zeilen ermöglichen es dem Webserver PHP-Scripte auszuführen.

Die Datei /var/www/html/maintenance.php gibt in meinem Beispiel den HTTP StatusCode 503 (Vorübergehend nicht verfügbar; Server überlastet, ausgefallen oder in Wartung) und einen kurzen Wartungstext aus.:

<?php
if ( $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1' )
 { $p = 'HTTP/1.1'; }else{ $p = 'HTTP/1.0'; }
header( $p.' 503 Service Unavailable', true, 503 );
header( 'Retry-After: 3600' );
?><!doctype html>
<title>Site Maintenance</title>
<style>
  body { text-align: center; padding: 150px; }
  h1 { font-size: 50px; }
  body { font: 20px Helvetica, sans-serif; color: #333; }
  article { display: block; text-align: left; width: 650px; margin: 0 auto; }
  a { color: #dc8100; text-decoration: none; }
  a:hover { color: #333; text-decoration: none; }
</style>

<article>
    <h1>We&rsquo;ll be back soon!</h1>
    <div>
        <p>Sorry for the inconvenience but we&rsquo;re performing some maintenance at the moment.</p>
        <p>we&rsquo;ll be back online shortly!</p>
        <p>&mdash; The Team</p>
    </div>
</article>

Zu guter letzt muss der Webserver nur noch neu gestartet werden, und es wird die Wartungsseite angfezeigt.

service lighttpd restart