INWX DynDNS in Synology einstellen

Ich habe einige Domains in meinem Portfolio, die ich inzwischen alle bei INWX registriert habe. Der Registrar aus Berlin wurde mir vor langer Zeit mal empfohlen und ich hatte bisweilen nie Probleme damit. INWX hat auch ein DynDNS Feature on board. Ich habe heute gesehen, dass man inzwischen wohl 1 Domain bzw. ein DynDNS Konto frei hat (ich meine, das war nicht immer so).

Da ich schon 2 kostenlose DynDNS Domains verwende, um mein Synology NAS aus dem Web erreichbar zu machen, dachte ich es wäre am geschicktesten, diese neue Adresse auch über dasselbe Interface zu verwalten, also in der Diskstation. Leider bietet Synology standardmäßig INWX nicht als Provider an, aber das lässt sich mit wenigen Schritten nachrüsten.

Anmerkung: Ich erkläre hier nicht was DynDNS ist und was man damit machen kann. Dazu gibt es im Netz schon genügend Ressourcen.

1. DynDNS Konto einrichten

Im INWX Konto gibt es den Menüpunkt DynDNS. Dort kann man ein neues DynamicDNS Konto erstellen. Man kann jede Domain verwenden, die im eigenen INWX Konto registriert ist. Sub-Domains sind auch möglich.

Den Benutzernamen, Passwort und den Hostnamen gut merken, den brauchen wir später in der Diskstation.

Zweitens, die Update-URL ist auch wichtig: https://dyndns.inwx.com/nic/update?myip=

2. DDNS in der Diskstation

In der Systemsteuerung unter Externe Zugriff können neue DDNS Einträge hinterlegt werden. Die Diskstation übermittelt die eigene IP dann regelmäßig an die Dienste. Leider gibt es aktuell keinen INWX Serviceanbieter. Mit ein bisschen Terminal und vim Action lässt sich das aber beheben.

2.1. DDNS Provider Config anpassen

Logt euch mit SSH auf eurem NAS ein und fügt folgende Zeilen zur Datei /etc.defaults/ddns_provider.conf hinzu. Ihr braucht Root Rechte, um die Datei zu bearbeiten (sudo su -)

[INWX]
        modulepath=DynDNS
        queryurl=https://dyndns.inwx.com/nic/update?myip=__MYIP__

Das praktische ist, dass INWX einfach den DynDNS Standard verwendet und somit genau so funktioniert, wie jeder andere DynDNS Anbieter. Wir müssen über die Config der Diskstation nur sagen, wie der Endpoint heißt. Dies ist die Update-URL von INWX. __MYIP__ ist hier der Platzhalter für die eigene IP, die die Diskstation ausfüllt.

2.2. DDNS einrichten

Zurück auf der Diskstation können wir nun einen neuen DDNS Eintrag hinzufügen unter Systemsteuerung > Externer Zugriff > DDNS.

Hier haben wir nun auch INWX zur Auswahl und können unseren Benutzernamen, Password und die Domain eintragen.

Nun steht uns INWX als DynDNS Provider zur Verfügung.

Fazit

So einfach ist es neue DynDNS Provider mit der Synology Diskstation zu verheiraten. Und dank dem kostenlosen DynDNS Konto von INWX kann ich sogar eine eigene Domain verwenden und meine Dienste nun damit managen.

Eindeutigkeit der UUIDs

Auf digitalbunker.dev wurde ein interessanter Artikel gepostet, der erklärt wie UUIDs generiert werden.

Ein paar Punkte fand ich sehr interessante. Zum einen, dass es mehrere Versionen und Varianten gibt, wie die UUIDs generiert werden. Und die verwendete Version und Variation steht in der UUID immer drin an einer bestimmten stelle.

Zum anderen wurde die Frage gestellt, wie „eindeutig“ diese UUIDs sind. Also könnte es nicht doch vorkommen, dass ein Duplikat generiert wird. Theoretisch stimmt das, aber die Wahrscheinlichkeit ist doch eher gering. So schreibt der Autor, dass bei 10,000,000,000,000 [10 Billionen] UUIDs, die Chance auf zwei gleiche UUIDs wohl bei 0.00000006 % liegt. (Bei Version 4, die PRNG verwendet)

Wenn man Version 1 verwendet, die einen Timestamp nutzt, müsste man sein System schon für über 1.500 Jahre laufen lassen, bis sich der Timestamp im Jahre 3603 wiederholt. Wer so lange plant, sein System zu nutzen, der hat sicherlich noch andere Probleme, als UUIDs.

Datenbank mittels CLI command öffenen

Der Tipp kommt nicht von mir, aber ich finde die Idee super. Freek Van der Herten hat auf Twitter einen Tipp geteilt, wie er die aktuelle Datenbank, die in .env hinterlegt ist, in seiner Datenbank GUI (SequelPro, TablePlus, etc.) öffnen kann mit einem simplem CLI Script.

https://twitter.com/freekmurze/status/1306633113590738944?s=09

Der Trick ist, dass man eine Datenbank als URI beschreiben kann, und im Browser öffnet. Der Browser öffnet dann das dafür zuständige Programm.

function opendb () {
   [ ! -f .env ] && { echo "No .env file found."; exit 1; }

   DB_CONNECTION=$(grep DB_CONNECTION .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
   DB_HOST=$(grep DB_HOST .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
   DB_PORT=$(grep DB_PORT .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
   DB_DATABASE=$(grep DB_DATABASE .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
   DB_USERNAME=$(grep DB_USERNAME .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
   DB_PASSWORD=$(grep DB_PASSWORD .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)

   DB_URL="${DB_CONNECTION}://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_DATABASE}"

   echo "Opening ${DB_URL}"
   open $DB_URL
}

Quelle: github.com/freekmurze/dotfiles

Das Beispiel funktioniert mit dem Laravel Framework, aber lässt sich einfach für andere Projekte, z.B. WordPress, umschreiben.

Zufällige Zahlen in MySQL generieren und speichern

Ich hatte heute das Problem, dass ich für ein Demo Projekt tausende Zahlen brauchte um meine Datenbank zu befüllen. Sicherlich kann man das auch mit PHP & Co. machen, aber es geht tatsächlich auch direkt in SQL.

Ich hatte drei Anwendungsfälle:

  1. Ich brauche ganze Zahlen (integer)
  2. Ich brauche Geldbeträge (float)
  3. Ich möchte einen Bereich (min, max) angeben können, um die Demo Daten glaubhafter zu machen.

Der SQL Befehl sieht wie folgt aus:

SELECT FLOOR( RAND() * (maximum - minimum) + minimum) as randomValue;

Mit RAND() kann man eine Zahl zw. 0 und 1 generieren und mit etwas Math-Magic kann man dann auch noch einen Bereich festlegen. Und mittels FLOOR() wird draus eine natürliche Zahl.

Beispiel für eine Zahl zw. 20 und 100:

SELECT FLOOR( RAND() * (100 - 20) + 20) as randomValue;
+-------------+
| randomValue |
+-------------+
| 50          |
+-------------+
1 row in set (0.00 sec)

Beispiel für einen Geldbetrag zwischen 0,50 und 100,00: (wir generieren einen Cent Betrag und rechnen anschließend durch 100)

SELECT FLOOR( RAND() * (10000 - 50) + 50) / 100 as randomValue;
+-------------+
| randomValue |
+-------------+
| 45,65       |
+-------------+
1 row in set (0.00 sec)

Das Speichern ist dann nun ein leichtes. Ich hab so z.B. ein UPDATE durchgeführt, weil die Spalten mit leeren Werten schon existierten:

UPDATE facts
SET value = FLOOR( RAND() * (10000 - 50) + 50)
WHERE id IN (1,2,3,4)

Dozer: Menu-Icons verstecken

Ich habe einige Dienste auf meinem Mac laufen, die alle ihr eigenes Menu-Icon platzierne. Das ist schön und gut um schnell darauf zuzugreifen, aber mit der Zeit ist die Liste doch etwas lang und stielt mir die Übersicht. Ich hatte langezeit Bartender 2 im Einsatz und die App ist wirklich gut und ihr Geld wert. Inzwischen ist Bartender 3 erschienen und ich hätte ein kostenpflichtiges Update kaufen müssen. Wie gesagt, die App ist gut und definitiv ihr Geld wert und einige Features können sich sehen lassen, aber ich bin doch nochmal auf die Suche gegangen nach einer Alternativen und habe etwas gefunden.

Dozer räumt auf

Dozer ist eine kostenlose open source Lösung, die genau das tu was ich will: Man kann einzelne Icons verstecken bzw. über einen Klick/Tastenkürzel wieder anzeigen.

Für mich funktioniert das super und ich bin froh über dieses kleine Tool. Endlich ist meine Menubar wieder ansehbar.

Demo der Dozer App