--------------------------------------- README für den selfhost.de-IP-Updater --------------------------------------- * Wird die neueste Version eingesetzt? -> 20181020 * Bei Fragen hilft die Mailingliste: Abonnieren: Einfach eine leere E-Mail senden an: selfhost-subscribe@jonaspasche.de Abbestellen: Einfach eine leere E-Mail senden an: selfhost-unsubscribe@jonaspasche.de In beiden Fällen kommt erst noch eine Rückfragemail, nach deren Beantwortung man die Liste abonniert oder abbestellt hat. An die Liste schreiben: selfhost@jonaspasche.de Die E-Mail wird umgehend verteilt (keine Moderation); auch der Absender erhält seine eigene E-Mail selbst, da er ja auch Listenempfänger ist. Bitte keine Anfragen zu "Wie mache ich das mit der crontab" - das hat nichts mit dem selfhost-updater zu tun, sondern mit der zugrundeliegenden Linux- Distribution, deren Dokumentation ausführlich die Funktion von crontabs erklären sollte. * Ein Wort zum Support... Obwohl die Entwicklung des selfhost-updater für Linux von selfhost.de als Auftragsarbeit initiiert wurde, handelt es sich nicht um ein offizielles Produkt von selfhost.de (genausowenig wie beispielsweise die Windows-Clients im Download-Bereich). Insofern wird Support für den selfhost-updater auch _nicht_ von selfhost.de selbst geleistet, sondern von mir (dem Entwickler) und den vielen anderen Benutzern dieses Tools. Der selfhost-updater wird unter einer freien Lizenz (GPL) zur Verfügung gestellt; eine Haftung ist somit in jedem Fall ausgeschlossen. Gleichzeitig bedeutet das auch, dass er z.B. für eigene Zwecke angepasst werden kann. Die Weitergabe von angepassten Versionen ist jedoch nur gestattet, wenn diese selbst wieder der GPL unterliegen. Wie bei freier Software üblich, wird der Support per Mailingliste geleistet. Das hat viele Vorzüge: Zum einen kann jeder zur Problemlösung beitragen, auch wenn ich, der Entwickler, persönlich einmal nicht verfügbar sein sollte. Zum anderen profitieren alle Mailinglisten-Teilnehmer auch durchs Mitlesen schon von den Fragen und Antworten anderer. So sind auch schon einige Ideen und Anregungen entstanden, die in den selfhost-updater eingeflossen sind. Last but not least geht es auch ein bißchen um's Geben und Nehmen: Wer heute vielleicht noch Hilfe in Anspruch nehmen muss, kann morgen vielleich schon anderen mal ein bißchen weiterhelfen. Also: Bestehen Fragen oder Schwierigkeiten, so stehen die Teilnehmer der Mailingliste gerne zur Verfügung. Ich lese und schreibe natürlich auch auf der Mailingliste mit. Außerdem veröffentliche ich dort Meldungen über Updates; das sollte doch schon Grund genug sein. :-) Und für alle, die ein bisschen Angst vor vielen E-Mails haben: Keine Sorge, die Liste ist nicht sehr hochvolumig. Außerdem werden E-Mail-Adressen natürlich keinesfalls weitergegeben oder für andere Zwecke genutzt; Ehrensache. * Das Script liegt unter folgender URL zum Download bereit: http://jonaspasche.de/selfhost-updater In einem Verzeichnis speichern, das im PATH liegt, z.B. /usr/local/sbin; anschließend Ausführungsrechte vergeben. Beispiel für eine Installation, hier exemplarisch mit wget: su - # um root zu werden cd /usr/local/sbin # hier soll das Script hin wget http://jonaspasche.de/selfhost-updater # Script herunterladen chmod 700 selfhost-updater # ausführbar machen Auf Systemen, auf denen wget nicht zur Verfuegung steht (z.B. MacOS X), kann auch cURL verwendet werden: curl -O http://jonaspasche.de/selfhost-updater * Erstkonfiguration: (Die spitzen Klammern sollen deutlich machen, dass es sich hier um Variablen handelt und dürfen nicht mit eingegeben werden!) Der DynDNS-Username und das DynDNS-Passwort sind *nicht* die Kundendaten bei selfhost, also *nicht* die Daten, mit der man sich auf der selfhost-Website einloggt. Die erforderlichen Daten können in den Details des DynDNS-Accounts eingesehen werden. Hintergrund ist, dass es durchaus mehrere DynDNS-Accounts unter einer selfhost-Kundennummer geben kann, und die müssen sich dann natürlich anhand ihrer Zugangsdaten auch unterscheiden. selfhost-updater setusr selfhost-updater setpwd selfhost-updater setdev entspricht dabei dem Gerät, über das die Internet-Verbindung läuft, also in der Regel ppp0 oder ippp0. Bei Zugang über einen Router oder wenn das Gerät nicht bekannt ist, ``router'' als Gerät angeben; hierbei wird die IP-Adresse dann mit Hilfe eines externen IP-Checkers ermittelt. * Erster Test: selfhost-updater update Das Update sollte erfolgreich sein. Wenn nicht, Mailingliste fragen, und dabei bitte den vollständigen Output des Programms mitschicken (copy+paste) * Wenn "router" als Gerät gesetzt ist, aber beim ersten Aufruf die Ermittlung der IP-Adresse fehlschlägt... Ein wenig zum Hintergrund: Im Modus "router" benutzt der selfhost-updater eine externe URL, um seine eigene IP-Adresse zu erfahren. Dabei stehen mehrere wechselnde URLs zur Verfügung, die von selfhost.de nach einem Update übermittelt werden. Im Script voreingestellt ist eine Default-URL, die man benutzen kann, wenn die "richtige" Liste der IP-Check-URLs noch nicht ver- fügbar ist - also nur beim allerersten Aufruf des Scripts. Sollte die URL des IP-Checkers just bei diesem ersten Aufruf allerdings einmal offline sein, so ist das natürlich problematisch. Abhilfe: Einfach ein Update durchführen, bei dem die IP-Adresse manuell angegeben wird, z.B. "selfhost-updater update 1.2.3.4". Damit wird die automatische Übermitt- lung übergangen, sprich, man braucht keinen IP-Checker. Mit der Bestätigung des Updates erhält man dann die _aktuellen_ URLs der IP-Checker, die derzeit verfügbar sind und kann dann also unmittelbar danach ein normales Update mit "selfhost-updater update" durchführen. Die automatische Ermittlung der IP sollte dabei dann funktionieren. * "...es trat ein temporärer Fehler auf", oder allgemein: * SSL wird vom verwendeten Tool nicht unterstützt: Der selfhost-updater arbeitet seit der Version 20020106 von Haus aus mit SSL. Wenn das verwendete Tool (z.B. lynx) jedoch kein SSL unterstützt, kann jedoch das Update-CGI-Script nicht aufgerufen werden. Da der selfhost-updater in diesem Fall keine Rückmeldung bekommt, geht er von einem temporären Fehler aus. Wer diese Meldung also dauerhaft erhält, sollte einmal versuchen, den SSL-Support auszuschalten, in dem er die Umgebungsvariable NOSSL setzt: NOSSL=1 selfhost-updater update In diesem Fall wird wie bisher die unverschlüsselte URL benutzt. * lynx unterstützt den SSL-Modus nicht korrekt, obwohl es SSL kann Tests haben gezeigt, dass einige lynx-Versionen eine Prüfung des Zertifikats durchführen. Im interaktiven Modus von lynx wird dann nachgefragt, ob das Zertifikat akzeptiert werden soll; im Shell-Modus wird eine fehlgeschlagene Prüfung ohne aussagekräftige Fehlermeldung als Fehler dargestellt. Um lynx allgemein die Prüfung von Zertifikaten abzugewöhnen (funktioniert einfach, ist aber nicht empfohlen, wenn Sie lynx noch zu anderen Zwecken benutzen), tragen Sie in /etc/lynx-site.cfg ein: FORCE_SSL_PROMPT:NO Alternativ können Sie das benutzt Root-Zertifikat von GeoTrust in Ihren lokalen Zertifikatsspeicher installieren. Laden Sie es sich von dieser URL herunter: https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer Um es in den Zertifikatsspeicher zu kopieren, fügen sie einfach den Inhalt dieser Datei an den bestehenden Zertifikatsspeicher an. Unter Fedora Linux findet er sich beispielsweise in /usr/share/ssl/cert.pem. Bei anderen Distri- butionen kann er auch woanders liegen. Hinweis: Die meisten aktuellen _grafischen_ Browser unterstützen das Root-Zertifikat von GeoTrust direkt, allerdings ist es nicht bei allen Distributionen auf im von lynx genutzten Zertifikatsspeicher vorhanden, wodurch obiges Problem auftritt. * Bestimmten Web-Client benutzen Der selfhost-updater ermittelt automatisch, ob wget, lynx oder links vorhanden sind (in dieser Reihenfolge). Wer einen bestimmten Web-Client verwenden will, kann dessen Namen in /etc/selfhost/tool hinterlegen, z.B. "lynx" - hier wird dann die automatische Ermittlung übergangen und lynx benutzt, auch wenn wget auf dem System installiert ist. * Wenn alles klappt: Einen Cron-Job einrichten, der das Tool periodisch aufruft. Beispiel für den Eintrag in einer crontab ("crontab -e" als root): */10 * * * * /usr/local/sbin/selfhost-updater update | logger -t selfhost Damit wird alle 10 Minuten die IP-Adresse geprüft und ggf. aktualisiert. Die Ausgabe des Scripts wird dabei über den Befehl "logger" zum syslog- Daemon geschickt und findet sich z.B. in der Datei /var/log/messages wieder oder allgemein dort, wohin syslog Meldungen der Klasse user.notice schreibt. Die genaue Beschreibung der Handhabung von Crob-Jobs würde diese README spren- gen; Dokumentation dazu sollte sich aber zum einen im Handbuch der verwendeten Linux-Distribution und zum anderen auf der manpage ("man crontab") finden. * Benachrichtigungsmeldungen vom selfhost-updater Wer gerne nicht nur ein Logfile haben möchte, sondern automatisch eine E-Mail bekommen will, wenn ein erfolgreiches Update lief oder ein Update fehlschlug, kann die gewünschte E-Mail-Adresse in /etc/selfhost/notify setzen und wird dann automatisch benachrichtigt. Dafür muss das Programm "mail" auf dem Linux-Rechner installiert sein, und ein Mailserver die Mail auch nach draußen schicken können. Wichtig: Hier bitte möglichst _NICHT_ eine Adresse auf dem DynDNS-Host angeben. Nach einem Update braucht's noch einen Augenblick, bis die neue IP online ist, und vor allem Fehlermeldungen über Fehler beim Updaten von meinhost.selfhost.de lassen sich nicht wirklich gut an die Adresse info@meinhost.selfhost.de zustellen (es sei denn, der Mailserver läuft auf dem gleichen Rechner). * Update auf bestimmte IP-Adresse (ohne automatische Ermittlung): Unter bestimmten Umständen kann es praktisch sein, manuell die IP-Adresse festzulegen, die beim Update verwendet werden soll. Die automatische Ermittlung wird in diesem Fall übergangen. Und so geht's: selfhost-updater update * Update erzwingen: Das Script speichert seine aktuelle IP in /etc/selfhost/ip - wenn die aktuell gefundene mit der dort gespeicherten übereinstimmt, wird kein Update veranlaßt. Wer eins erzwingen will, braucht nur diese Datei zu löschen und erneut ein Update zu starten. Achtung, selfhost.de läßt aus Sicherheitsgründen nur eine begrenzte Anzahl von Updates in einem Zeitraum zu. Es kann also sein, dass ein Host für einige Minuten gesperrt wird, wenn er zuviele Updates an selfhost.de sendet. Bei krassen Fällen (hunderte von Updates...) kann auch eine Sperrung bis zum nächsten Tag erfolgen. Diese kann jedoch auch vorzeitig im Web-Konfigurationsmenü von selfhost.de entsperrt werden. In eigenem Interesse sollte man aber zuerst schauen, was die Ursache für derart viele Updates war. * Server offline schalten: selfhost-updater offline Damit wird der dynamische DNS-Eintrag auf die IP-Adresse von selfhost geschaltet, wo eine Offline-Meldung hinterlegt ist. Macht sich z.B. gut in if-down.local, um den DNS-Eintrag offline zu schalten, wenn der Server heruntergefahren wird. * Auswahl ob IPv4 oder IPv6 Adresse aktualisiert werden soll In der Konfigurationsdatein ipversion kann eingestellt werden, ob die IPv4 oder die IPv6 Adresse aktualisiert werden soll. Zwei Angaben in der Datei sind als einzelner Wert möglich: "IPv4" oder "IPv6". Die Einstellung konkurriert mit der Angabe "router" als Device. Die Angabe "router" meint tatsächlich ausschließlich die Adresse des Routers, nicht etwa des Servers hinter einem Router. Es wird automatisch eine IPv4 Adresse bei Selfhost aktualisiert, auch wenn die IP-Version auf "IPv6" lautet. Dies müsste in der Programmierung erst abgefragt werden. Stattdessen wird eine IPv6 Adresse an Selfhost gemeldet, wenn die Angabe in der Datei "device" nicht "router" heißt. Bei der Ermittlung der IP-Adresse wird darauf geachtet, dass keine ULA an Selfhost gemeldet wird, sondern die globale IPv6. * Mehrere Accounts verwenden: Die Konfiguration wird standardmäßig in /etc/selfhost gespeichert. Dies kann jedoch über die Umgebungsvariable CONFIGDIR geändert werden. Der Aufruf sieht dann wie folgt aus: CONFIGDIR=/etc/mydir selfhost-updater update Entsprechend muß dann auch die Konfiguration für dieses Verzeichnis mit der Angabe von CONFIGDIR erfolgen, zum Beispiel: CONFIGDIR=/etc/mydir selfhost-updater setdev router CONFIGDIR kann hierbei z.B. auch im eigenen home-Verzeichnis liegen, so dass der selfhost-updater auch ohne root-Rechte aufgerufen werden kann! * Wenn sich der selfhost-updater selbst gesperrt hat: Wenn selfhost bei einem Update einen Statuscode der Klasse 4xx zurück- liefert, deutet dies auf einen Konfigurationsfehler hin (z.B. Zugangsdaten ungültig, Domain ist keine DynDNS-Domain, Domain ist noch nicht verfügbar, Mahnverfahren), der in jedem Fall eine Analyse und konkrete Fehlerbehebung erfordert. Der selfhost-Support und die Mailingliste können hier unterstützen. Der selfhost-updater sperrt sich dabei vorerst selbst, um nicht ein fehlerhaftes Update nach dem anderen zu selfhost zu schicken. Der selfhost-updater entsperrt sich selbst automatisch nach 24 Stunden. Soll die Sperre früher aufgehoben werden, einfach /etc/selfhost/locked löschen. WICHTIG: Alle Fehler der Klasse 4xx (400-499) deuten IMMER auf einen Konfi- gurationsfehler hin. Solche Fehler lösen sich (im Gegensatz zu Fehlern der Klasse 5xx, die nur temporär sind), NIE von alleine. * Debugging Bei Problemen bitte einen Aufruf von "selfhost-updater update" mit DEBUG=1 durchführen: DEBUG=1 selfhost-updater update Hierbei wird sowohl der verwendete Web-Client als auch die aufgerufene URL (Passwort ausgeblendet) als auch die vollständige Rückmeldung des Tools aus- gegeben. Bei Problemberichten an die Mailingliste bitte immer diese Ausgabe per Copy+Paste mitschicken! * Autor: Jonas Pasche Bitte keine Fragen und Problemberichte an mich direkt senden; dafür steht die Mailingliste zur Verfügung.