selfhost-updater/selfhost-updater.README

312 lines
14 KiB
Plaintext
Raw Normal View History

2023-11-18 19:50:37 +00:00
---------------------------------------
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<72>lt seine eigene E-Mail selbst, da er ja auch Listenempf<70>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<73>hrlich die Funktion von crontabs
erkl<6B>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<72>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 <20>blich, wird der Support per Mailingliste geleistet.
Das hat viele Vorz<72>ge: Zum einen kann jeder zur Probleml<6D>sung beitragen,
auch wenn ich, der Entwickler, pers<72>nlich einmal nicht verf<72>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<62>chen um's Geben und Nehmen: Wer heute
vielleicht noch Hilfe in Anspruch nehmen muss, kann morgen vielleich schon
anderen mal ein bi<62>chen weiterhelfen.
Also: Bestehen Fragen oder Schwierigkeiten, so stehen die Teilnehmer der
Mailingliste gerne zur Verf<72>gung. Ich lese und schreibe nat<61>rlich auch auf
der Mailingliste mit. Au<41>erdem ver<65>ffentliche ich dort Meldungen <20>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<41>erdem werden E-Mail-Adressen nat<61>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<69>end Ausf<73>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<73>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<61>rlich anhand ihrer Zugangsdaten auch unterscheiden.
selfhost-updater setusr <dyndns-username>
selfhost-updater setpwd <dyndns-passwort>
selfhost-updater setdev <ger<65>tename>
<ger<65>tename> entspricht dabei dem Ger<65>t, <20>ber das die Internet-Verbindung
l<>uft, also in der Regel ppp0 oder ippp0. Bei Zugang <20>ber einen Router oder
wenn das Ger<65>t nicht bekannt ist, ``router'' als Ger<65>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<73>ndigen Output des Programms mitschicken (copy+paste)
* Wenn "router" als Ger<65>t gesetzt ist, aber beim ersten Aufruf die Ermittlung
der IP-Adresse fehlschl<68>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<72>gung, die von selfhost.de nach einem Update
<20>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<61>rlich problematisch.
Abhilfe:
Einfach ein Update durchf<68>hren, bei dem die IP-Adresse manuell angegeben wird,
z.B. "selfhost-updater update 1.2.3.4". Damit wird die automatische <20>bermitt-
lung <20>bergangen, sprich, man braucht keinen IP-Checker. Mit der Best<73>tigung
des Updates erh<72>lt man dann die _aktuellen_ URLs der IP-Checker, die derzeit
verf<72>gbar sind und kann dann also unmittelbar danach ein normales Update mit
"selfhost-updater update" durchf<68>hren. Die automatische Ermittlung der IP
sollte dabei dann funktionieren.
* "...es trat ein tempor<6F>rer Fehler auf", oder allgemein:
* SSL wird vom verwendeten Tool nicht unterst<73>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<73>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<6F>ren Fehler aus. Wer diese Meldung also dauerhaft erh<72>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<68>sselte URL benutzt.
* lynx unterst<73>tzt den SSL-Modus nicht korrekt, obwohl es SSL kann
Tests haben gezeigt, dass einige lynx-Versionen eine Pr<50>fung des Zertifikats
durchf<68>hren. Im interaktiven Modus von lynx wird dann nachgefragt, ob das
Zertifikat akzeptiert werden soll; im Shell-Modus wird eine fehlgeschlagene
Pr<50>fung ohne aussagekr<6B>ftige Fehlermeldung als Fehler dargestellt.
Um lynx allgemein die Pr<50>fung von Zertifikaten abzugew<65>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<73>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 <20>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<70>ft und ggf. aktualisiert.
Die Ausgabe des Scripts wird dabei <20>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<65>nschte E-Mail-Adresse in /etc/selfhost/notify
setzen und wird dann automatisch benachrichtigt. Daf<61>r muss das Programm
"mail" auf dem Linux-Rechner installiert sein, und ein Mailserver die
Mail auch nach drau<61>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 <20>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<73>nden kann es praktisch sein, manuell die IP-Adresse
festzulegen, die beim Update verwendet werden soll. Die automatische
Ermittlung wird in diesem Fall <20>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 <20>bereinstimmt, wird kein
Update veranla<6C>t. Wer eins erzwingen will, braucht nur diese Datei zu
l<>schen und erneut ein Update zu starten.
Achtung, selfhost.de l<><6C>t aus Sicherheitsgr<67>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<65> 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<74>chlich ausschlie<69>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<65>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<64><6D>ig in /etc/selfhost gespeichert. Dies
kann jedoch <20>ber die Umgebungsvariable CONFIGDIR ge<67>ndert werden. Der
Aufruf sieht dann wie folgt aus:
CONFIGDIR=/etc/mydir selfhost-updater update
Entsprechend mu<6D> 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<75>ck-
liefert, deutet dies auf einen Konfigurationsfehler hin (z.B. Zugangsdaten
ung<6E>ltig, Domain ist keine DynDNS-Domain, Domain ist noch nicht verf<72>gbar,
Mahnverfahren), der in jedem Fall eine Analyse und konkrete Fehlerbehebung
erfordert. Der selfhost-Support und die Mailingliste k<>nnen hier unterst<73>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<66>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<6F>r sind), NIE von alleine.
* Debugging
Bei Problemen bitte einen Aufruf von "selfhost-updater update" mit DEBUG=1
durchf<68>hren:
DEBUG=1 selfhost-updater update
Hierbei wird sowohl der verwendete Web-Client als auch die aufgerufene URL
(Passwort ausgeblendet) als auch die vollst<73>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<61>r steht
die Mailingliste zur Verf<72>gung.