selfhost-updater/selfhost-updater.README
2023-11-18 20:50:37 +01:00

312 lines
14 KiB
Plaintext

---------------------------------------
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 <dyndns-username>
selfhost-updater setpwd <dyndns-passwort>
selfhost-updater setdev <gerätename>
<gerätename> 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 <ip-adresse>
* 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 <mail AT jonaspasche.de>
Bitte keine Fragen und Problemberichte an mich direkt senden; dafür steht
die Mailingliste zur Verfügung.