Archives for posts with tag: Nextcloud

Ob automatische Updates ein Segen oder der Fluch sind, hängt meistens von der Erfahrung ab, die man damit so gemacht hat. Wenn alles hübsch leise und reibungslos im Hintergrund und ohne eigenes Zutun läuft, kurz: automatisch, supi. Dagegen wird sich der ein oder andere an Windows 7 und davor erinnern, wenn einen die Kiste nach der Mittagspause frisch gebootet mit dem Login Screen anfeixt. Selbstredend hat man irgendwas nicht gespeichert gehabt und die ganze schöne Arbeit ist dem Elektro-Äther entfleucht. Und das nur, weil man nicht da war um ‚Nein, verdammte Scheiße, jetzt nicht neu booten!!1!‘ zu klicken. Aber das sind nun alles Opas Geschichten aus dem Krieg, sogar Windows ist diszipliniert worden.

unbeaufsichtigte Upgrades

Weil man(n) sich natürlich nicht ständig aktiv um den eigenen Elektrozoo kümmern kann, bin ich ein großer Freund von dieser Automagie. Auf dem Raspi, der meine Nextcloud beherbergt, sind deswegen „unnattended upgrades“ installiert und aktiviert. Das bewerkstelligt man recht einfach mit einem apt install unattended upgrades und schon wird täglich wenigstens nach Sicherheitsupdates geguckt und der Kram gegebenenfalls installiert.

Nicht!

Gerade ist der Shit mit sudo passiert, was ich zum Anlass genommen habe, mal meiner Cloud-Installation hinterher zu gucken.

Unattended Upgrades hatte ich schon früher mal installert. Ein kurzes sudo apt install unattended-upgrades spült sie auf die Platte SD-Karte. Konfigurieren sollte man es noch: sudo dpkg-reconfigure -plow unattended-upgrades Und? Geht’s? Mit Aptitude kurz nachgeguckt, ob da Updates anstehen: ja. Also ein kleiner Trockenlauf: sudo unattended-upgrades –dry-run. Wie? da soll nichts sein?! Funktioniert also nicht!

Woran liegt’s?

Die Konfiguration sollte zwei Dateien angelegt haben, in der ersten gucken wir nach: sudo nano /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Verbose "2";

Soweit scheint alles ok, wichtig sind hier die zweite und dritte Zeile. In der zweiten Zeile, wie oft apt-get update automatisch ausgeführt werden soll. Die „1“ steht in dem Fall für „jeden Tag“, „0“ würde diese Automatik abschalten. Die dritte Zeile bestimmt, wie oft ein „upgrade“ automatisch vorgenommen werden soll.

Werfen wir einen Blick in die andere Datei, da wird festgelegt, was genau aktualisiert werden soll (Auszug): sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Unattended-Upgrade::Origins-Pattern {
// Codename based matching:
// This will follow the migration of a release through different
// archives (e.g. from testing to stable and later oldstable).
// Software will be the latest available for the named release,
// but the Debian release itself will not be automatically upgraded.
"origin=Debian,codename=${distro_codename}-updates";
// "origin=Debian,codename=${distro_codename}-proposed-updates";
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";

// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
};

Hm „Debian“? Nennt sich das hier nicht „Raspbian“? Genau! In den voreingestellten Repositories ist die Herkunft der Pakete nicht mit Debian bezeichnet. Für „Debian“ gibt es also auch keine Updates oder Upgrades!

Reparieren

Es müssen ein paar Zeilen ergänzt werden, über die Zeit gab es verschiedene Benamsungen. Ich will meine Hand nicht dafür ins Feuer legen, dass folgende schon alle sind:

Unattended-Upgrade::Origins-Pattern {
// Codename based matching:
// This will follow the migration of a release through different
// archives (e.g. from testing to stable and later oldstable).
// Software will be the latest available for the named release,
// but the Debian release itself will not be automatically upgraded.
"origin=Debian,codename=${distro_codename}-updates";
"origin=Raspbian,codename=${distro_codename}-updates";
// "origin=Debian,codename=${distro_codename}-proposed-updates";
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Raspbian,codename=${distro_codename},label=Raspbian";
"origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Raspbian,codename=${distro_codename},label=Raspbian-Security";

// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
};

Glücklich sein

Testet man jetzt den Trockenlauf mit sudo unattended-upgrades –dry-run, kann man im log /var/log/unattended-upgrades/unattended-upgrades.log sehen, dass sich auch was tut.

(swg)

Wo es nur geht betreibe ich meine IT-Infrastruktur selbst. Die letzte Errungenschaft ist meine eigene Nextcloud. Für das selber betreiben gibt es mehrere Gründe, die Reihenfolge der Aufzählung stellt jetzt keine Gewichtung dar. In der Hauptsache gehen einfach meine privaten Dateien/Termine/Kontakte/Fotos niemanden etwas an, soweit ich das nicht selbst teile. Und auch der Hinweis, $Marketingfuzzi sei an mir persönlich nicht interessiert und wolle mich ja nur Gruppen zuordnen können, macht das kaum besser. Ich lasse mich nicht gerne schubladisieren. Für die Nextcloud war meine Triebfeder der Gedanke, dass Google nicht den gesamten Familien-Terminkalender kennen sollte. Und es geht Google auch nichts an, wer so in meinem Telefonbuch steht.
Nextcloud Logo
Nachdem nun in der EU sogar die todgeglaubten Cryptowars wieder aufflammen – wie kann man so dämlich sein und eine Hintertür in Verschlüsselungen fordern?! – denken doch eine ganze Menge Leute darüber nach, wer so alles in ihr Leben guckt; Und das ist sehr gut so. Im Einzelnen möchte ich hier aufdröseln, was das Selbsthosten der Nextcloud bedeutet.

Herrsche

Fangen wir mit der Hoheit an. In meiner Nextcloud bin ich der Chef und kann sagen, was ich da drin alles an Features habe will, und was nicht. Und vor allem bestimme ich, wer etwas sehen darf. Die Cloud ist mir
– Dateiablage,
– Terminkalender,
– Kontaktverwaltung,
– Einkaufslisten und Projektorganisation (via Deck, einem Kanban-Board),
– Messenger (Talk mit Videochat!) und
– Online-Musikplayer (meine Musiksammlung liegt da rum).

All unsere Handys synchronisieren ihre Adressbücher und Terminkalender hier hinein, untereinander teilen können wir die natürlich ebenfalls. Die Fotos unserer Handys werden automatisch hochgeladen, sowie sämtliche Dateien, die ich als wichtig empfinde. Ich brauch‘ mich absolut nicht darum kümmern, das läuft von selbst. Es ist einfach mein gesamter Datenschatz für mich immer und überall zugreifbar, wenn ich nur Internet habe.

Ein voll cooles Feature ist die Musik-App: Meine Musiksammlung habe ich in die Cloud gelegt. Direkt über das Webinterface der Cloud kann ich die durchsuchen und abspielen. Fetzig!

Der absolute Killer ist die Messenger-App Talk: Alle Nutzer der Cloud können sich miteinander unterhalten. Es lassen sich Räume anlegen, in denen man zu mehreren chatten und sogar videotelefonieren kann! Als Dreier-Videokonferenz funktioniert das ganz ohne Probleme. Zu viert geht auch, darüber soll es Performance-Probleme geben. Da muss ich mal noch etwas mehr experimentieren.

Damit sind wir nach der Herrschaft und Zugreifbarkeit bei der nächsten großartigen Möglichkeit der eigenen Nextcloud: dem Teilen!

und teile

All die Daten, die man in der Nextcloud liegen hat, kann man mit anderen teilen. Dateien mit jemandem da draußen teilen? Ohne Account in dieser Cloud? Kein Problem: Einfach einen Link auf den Ordner/die Datei erstellen und verschicken! Alles lässt sich passwortschützen & mit Berechtigungen versehen. Pappt man einen Ablauftermin dran, vergisst man nicht mal die Freigabe wieder zu deaktivieren. Benutzt hab ich das Teilen von Dateien sogar schon mit Behörden. Als ich den Bus mitten im Corona-Lockdown zulassen musste, habe ich alle Dokumente in der Cloud abgelegt. Eine Email mit dem Freigabe-Link an die Zulassungsstelle und der freundlichen Frage, ob noch was für den persönlichen Termin fehlt, wurde schnell beantwortet. Ein Antrag wurde mir noch reingelegt, dann war alles komplett. Sehr geil.

Einfach mal Videotelefonieren mit Leuten ohne Account? Geht auch: Einen Talk-Link erstellen und verschicken. Mit nahezu jedem Browser kann man beliebig Leute einladen. Silvestergrüße haben wir videotelefonisch quer durch die verstreute Familie winken können.

Noch viel wichtiger sind die Funktionen intern: In erster Linie lassen sich Termine und Telefonbuch sehr leicht gemeinsam pflegen. Den Alltag kann man aber noch deutlich mehr organisieren. Mit Deck gibt es beliebig gestaltbare Kanban-Boards. Wir verwalten darüber gemeinsame Einkaufslisten, Aufgaben und Planung zum Beispiel zur Instandhaltung der Wohnung und auch größere Vorhaben, wie den Umbau vom Wohnmobil. Insgesamt geht im Alltag dadurch deutlich weniger unter bzw. wird vergessen.

Besitze!

So eine Nextcloud kann man auf verschieden Arten betreiben: Fertige Installationen lassen sich bei verschiedenen Anbietern mieten. Bei diversen Hostern lässt sich das Paket auch selbst installieren, Webspace reicht, man kann auch einen V-Server nehmen – ganz nach eigenem Anspruch.

Der Nachteil ist hier, dass man nicht Herr über den Rechner ist, auf dem das läuft. Und mein Vertrauen in die fremd-betriebene IT-Infrastruktur lässt immer weiter nach. Nicht das die Anbieter nicht kompetent wären, aber wer noch so alles auf meine Daten und Kommunikation gucken können möchte… Der EU-Rat hat gerade gucken lassen, die Ende-zu-Ende-Verschlüsselung aufmachen können zu wollen. Das ist nicht nur haarsträubend hanebüchen, es ist schlicht eine gefährlich antifreiheitliche Entwicklung!

Selber machen ist also angesagt, um nicht zu sagen: dringend geboten! Alles, was man braucht, ist ein halbwegs potenter Internet-Anschluss und ein kleiner Rechner – wie den RaspberryPi 4 (4 GB RAM) – und eine SSD als Datenhalde. Für jemanden, der das in dem Umfang noch nie gemacht hat, schätze ich den Aufwand inklusive des Betriebssystems (Raspian), Webserver, Datenbankserver, TURN-Server (wg. Videotelefonie) und dem Nextcloud-Paket auf zwei Abende. Dafür sollte man aber kein völliger Linux-Neuling sein und vielleicht schon etwas Kontakt mit Linux gehabt haben. Seine Handys mit allen Apps auszustatten und Daten, Kontakte und Kalender in die Cloud zu hieven wird noch einen Abend drauf gehen.

Für den einen oder anderen klingt das vielleicht viel, ich halte das aber für einen eher kleinen Aufwand für die Souveränität, die man damit zurück gewinnt. Wie ich die Nextcloud eingerichtet habe, soll in einem nächsten Artikel folgen.

(swg)

Langsam wird mein Elektrozoo mit sinnvollen Aufgaben betraut. Der Rasperry Pi im Küchenschrank kümmert sich nicht mehr nur ums Radio (MPD). Kürzlich hatte ich dort die Nextcloud installiert. Marias und mein Handy synchronisieren da hin, so haben wir immer alle Termine im Blick. Die Daten der Cloud habe ich inzwischen auf einer kleinen Festplatte gelagert, da hab ich jetzt ordentlich Platz.

Was mir noch fehlte, ist, dass das Küchenradio auch die Musiksammlung unter der Fuchtel hat und ich außerdem per Cloud drauf zugreifen kann. Besagte Sammlung lungert aber auf der ganz großen Datenschleuder, meinem Debian-Server mirny. Kann man doch gleich den Küchen-Raspi als Backup mit Mehrwert verwenden!

Damit die Musiksammlung auch immer aktuell ist, braucht es ein Sync-Script. Hier müssen gleich ein paar Aufgaben gelöst werden:

Sync

Als erstes muss das Musik-Verzeichnis synchronisiert werden, es reicht, wenn das Verzeichnis kopiert wird und es eine Sperre gegen versehentliches Löschen gibt. Dafür nehme ich rsync:
/usr/bin/rsync -xltbr –delete –backup-dir=/nextcloud-data/gelöscht –rsh=’ssh‘ \
–exclude-from=/opt/nextcloud/rsync-exclude swg@mirny:/Musikverzeichnis/ /nextcloud-data/Musik

Ein paar Erklärungen zu den Optionen seien hier noch gegeben

  • -l copy symlinks as symlinks
  • -t preserve modification times
  • -x berücksichtigt nur Objekte, die sich im gleichen Dateisystem befinden
  • –rsh wählt die remote shell aus, die meisten werden SSH nutzen. Also -e ssh
  • –delete vergleicht Quellverzeichnisse und Zielverzeichnisse und sorgt dafür, dass Dateien, die im Quellverzeichnis nicht (mehr) vorhanden sind, im Zielverzeichnis gelöscht werden. Dies kann dazu führen, dass man ungewollt Dateien löscht, die man aber noch in der Sicherung behalten möchte.
  • -b sorgt dafür, dass durch die Option –delete gelöschte sowie alle veränderten Objekte gesichert werden (siehe dazu folgende Option –backup-dir=)
  • –backup-dir=Verzeichnis gibt ein Verzeichnis für die gelöschten und geänderten Objekte an, siehe Option -b
  • -r –recursive
  • –exclude-from=Datei die Datei enthält eine Liste auszuschließender Muster

rsync kopiert immer alles aus dem Musik-Verzeichnis von mirny. Wenn eine Datei auf mirny nicht mehr da ist, wird sie auf dem Küchen-Raspi in ein Verzeichnis für gelöschte Dateien verschoben. So hab ich noch eine Kontrolle über das, was so verschwindet. Wogegen es nicht hilft, ist ein schleichender Defekt der Platte, kaputte Dateien werden auch im Backup kaputt sein.

Der Inhalt der exclude-Datei sieht bei mir so aus:
– .*
– upload

Es sind alle versteckten Dateien und Verzeichnisse ausgeschlossen, und was upload heißt.

Aufwachen!

Aus Gründen läuft mirny nicht durch. Die eeeBox ist eher schlecht entwärmt, woran die ION-Grafik die Hauptschuld trägt. Außerdem will ich die große Platte schonen, die soll nicht dauerlaufen. Naja und letzten Endes muss ich den Strom ja auch bezahlen. Mirny hat einen Mechanismus, der ihn ohne äußeren Zugriff nach ca. 20 min in den Suspend schickt. Wenn das Backup laufen soll, muss mirny also geweckt werden: etherwake hilft. Ob mirny läuft, teste ich mit nc auf einen aktiven ssh. Fünf Versuche in einer Schleife sollten fürs Wecken reichen:
MIRNY_AWAKE=0
wakeup_mirny()
{
_RETRY=5
while (( RETRY > 0 ))
do
# Test, ob mirny per ssh erreichbar ist
/bin/nc -z -w1 mirny > /dev/null
if [ $? -eq 0 ]
then # ja fertig!
RETRY=0
MIRNY_AWAKE=1
else # nein: mirny wecken
/usr/sbin/etherwake -i eth0 aa:bb:cc:dd:ee:ff
/bin/sleep 5
((RETRY–))
fi
done
}

Das ganze als bash-Funktion mit einem Rückgabewert MIRNY_AWAKE, obs geklappt hat.

Berechtigung & Index

Damit die Nextcloud wirklich auf die Musik zugreifen kann, müssen die Dateien für den www-data Benutzer zugreifbar sein. Nach dem rsync ist also die Besitzübernahme mit chown -R fällig.
chown -R www-data:www-data /nextcloud-data/Musik

Das die Daten im richtigen Verzeichnis liegen, ist nur die halbe Miete. In der Nextcloud sieht man sie erst, wenn sie auch in deren Datenbank indiziert stehen. Dafür muss im Installationsverzeichnis der Nextcloud manuell gesorgt werden:
/usr/bin/php occ files:scan –all

Sowas zieht sich je nach Umfang der Verzeichnisse ganz schön hin.

Script

Als ganzes Script ergibt sich dieses schöne Bild:

#!/bin/bash
MIRNY_AWAKE=0
LOGGER=“/usr/bin/logger“
#
wakeup_mirny()
{
RETRY=5
while (( RETRY > 0 ))
do
$LOGGER „music backup: check mirny!“
# Test, ob mirny per ssh erreichbar ist
/bin/nc -z -w1 mirny > /dev/null
if [ $? -eq 0 ]
then # ja fertig!
$LOGGER „music backup: mirny is awake!“
RETRY=0
MIRNY_AWAKE=1
else # nein: mirny wecken
$LOGGER „music backup: waking mirny…“
/usr/sbin/etherwake -i eth0 aa:bb:cc:dd:ee:ff
/bin/sleep 5
((RETRY–))
fi
done
}
#
$LOGGER „music backup: Starting backup…“
wakeup_mirny
if [ $MIRNY_AWAKE -eq 0 ]
then
$LOGGER „music backup: Failed to wake mirny! Backup failed!“
exit 1
fi
/usr/bin/rsync -xltbr –delete –backup-dir=/nextcloud-data/gelöscht –rsh=’ssh‘ \
–exclude-from=/opt/nextcloud/rsync-exclude \
swg@mirny:/Musikverzeichnis/ /nextcloud-data/Musik
if [ $? -eq 0 ]
then
$LOGGER „music backup: rsync successfully done!“
/bin/chown -R www-data:www-data /nextcloud-data/Musik
cd /var/www/nextcloud
# Das folgende muss als www-data laufen, sonst ist das nicht erlaubt!
$LOGGER „music backup: updating nextcloud index…“
/usr/bin/sudo -u www-data /usr/bin/php occ files:scan –all
$LOGGER „music backup: successfully done!“
else
$LOGGER „music backup: rsync error! Backup failed!“
fi
exit 0;

Das Script lasse ich per cron mit dem Nutzer root einmal die Woche laufen. Mit dem Logger ist dafür gesorgt, dass ein paar nachvollziehbare Meldungen im syslog landen.

Jetzt muss ich den MPD noch mit dem Musik-Verzeichnis bekannt machen, dann hab ich meine Musik nicht nur immer im Zugriff, sondern kann sie auch in der Wohnung direkt hören.

Wenn ihr das Script nutzen wollt, passt bitte bei etherwake Netzwerkinterface und MAC an, und ihr müsst natürlich alle Verzeichnisse, aus und zu denen ihr kopieren wollt, korrigieren. Wenn in Eurem Netzwerk Namen nicht in IPs aufgelöst werden, setzt einfach die (fest vergebenen) IPs ein.

(swg)

Prinzipiell halte ich mich ja von den sozialen Netzwerken und den großen Datenkraken fern. Weder hab ich facebook, noch irgend einen seiner einkassierten Ableger. Auf google hab ich eine Mailadresse (für Müll), aber google+ hab ich nie benutzt. Tut auch sonst kaum jemand, weswegen google den Krams jetzt abschaltet.

Was ich wirklich benutze, ist der google-Account mit Youtube. Was man da sonst als „trending“ angezeigt bekommt, spottet jeder Beschreibung. Ich brauch echt meine Filterblase.

Und dann wäre da noch der Kalender. Google kennt jeden unserer Termine. Es ist ja auch unglaublich einfach zu nutzen, zu syncen und mit dem Webinterface hat man immer und überall Zugriff, auch ohne Handy. Ein Dorn im Auge ist mir das trotzdem schon lange: Googles wegen.

Aber wie ändern? Eine komplette Owncloud installieren? Gedacht hab ich das vor ein paar Jahren schon. Etwas Recherche zeigte erstmal, dass das nicht komplett freie Software ist und es schien auch massig Probleme zu geben. Neue Probleme brauchte ich nicht. Also blieb erstmal alles, wie es war.

Neulich hat Roman mir dann was empfohlen: Baikal. Das synchronisiert als Zentrale alle Kalender per Caldav und benötigt selbst kaum Ressourcen. Was mir dennoch fehlt, ist ein Webinterface. Das ist schon irgendwie Pflicht, meine Termine will ich nicht nur im Handy zurecht frickeln.

So’ne richtige Cloud wäre ja schon cool, so mit Dateiablage, Kontakten und dem Kalender natürlich. Inzwischen wurde Owncloud von einem der Gründer geforkt. Nextcloud ist komplett freie Software und es gibt ’ne Menge Tutorials, sogar für den Raspberry Pi.

Mein Raspi in der Ladestation im Küchenschrank ist damit wohl aber überfordert, das ist noch ein 2B+. Als Küchenradio und WLAN-AP im Hof reicht er, für mehr aber auch nicht. Ein 3B+ ist schnell bei Conrad geholt. Zwei Tage Kind-krank spielen mir in die Hände, dann ist alles installiert (ganz frei von Stolperfallen ist das nämlich trotz aller Tutorials nicht). Bei Strato richte ich noch eine Dyndns-Subdomain ein und der Zugriff von außen klappt auch.

Damit ist der Google-Kalender nun endlich Geschichte.

(swg)

PHP Code Snippets Powered By : XYZScripts.com