Jenkins Jobs laufen unendlich und lassen sich nicht abbrechen

Wenn du einen Jenkins Job (z.B. innerhalb einer Pipeline) haben solltest, welcher einfach unendlich lange läuft und sich auch nicht über die UI abbrechen/stoppen lässt, dann geh auf

[JENKINS_URL]/manage/script

und lass da folgendes Script laufen:

Jenkins.instance.getItemByFullName("[NAME_DES_JOBS]")
                .getBuildByNumber([NUMMER_DES_BUILDS])
                .finish(
                        hudson.model.Result.ABORTED,
                        new java.io.IOException("Aborting build")
                );

Dann einfach auf “ausführen” klicken und schon sollte der Job beendet sein.

Wie man Neodymium Magneten aus Festplatten von ihrer Basis befreit

Durch meine Elektronik-Spielereien schaue ich auch immer in alten Geräten, was man so an Ersatzteilen gewinnen kann. Bei alten Festplatten sind das zb extrem starke Neodymium Magneten. Das Problem: sie sind in der Regel extrem fest auf ein Stück Metall geklebt. Und mit diesem Video habe ich eine relativ einfache Lösung gefunden, wie man sie abbekommt:

Wie man einen eigenen Collabora Server für Nextcloud in Docker und hinter einem Nginx Reverse Proxy korrekt startet

Um innerhalb von Nextcloud so eine Art Google-Docs betreiben zu können, benötigt man zum einen die Nextcloud-Office-App, aber auch einen extra Server (Collabora), der quasi als Backend für das Office dient. Letztendlich handelt es sich da um eine Headless Open-Office Instanz, wenn ich das richtig verstanden habe.

Im besten Fall betreibt man Nextcloud ohnehin auf dem eigenen Server innerhalb von Docker, dann sollte die Kommunikation mit dem Collabora Server kein Problem sein.

Da in meinem Beispiel die Nextcloud Instanz von Hetzner gehosted wird, war es notwendig, dass der Collabora Server über das Internet kontaktiert wird und eben nicht im gleichen Netzwerk hängt. Und da ist die Dokumentation etwas schwammig bzw. einfach falsch. Denn in der Dokumentation, die man so im Netz finden kann, wird gesagt, dass man eine Environment-Variable namens “domain” definieren muss, die dann ein Regex der Nextcloud Domain enthält (damit nur Requests von dieser Domain bearbeitet werden).

Der entsprechende Code wurde aber geändert, sodass mehrere Nextcloud Server auf Collabora zugreifen können. Statt “domain” muss die Environmentvariable “aliasgroup1” heißen und sie enthält die komplette Domain inkl Portangabe (Durch Komma getrennt kann man mehrere URLs übergeben).

Beispiel:

aliasgroup1=https://meine.domain.com:443

In meinem konkreten Beispiel habe ich die Konfiguration, dass auf dem Server für Colabora Docker mit dem allseits bekannten Lets Encrypt Nginx Companion läuft. Das nette an diesem Setup ist, dass man allen weiteren Docker Containern auf diesem Server nur drei Env-Variablen mitgeben muss und schon erstellt und verwaltet das System automatisiert die Lets Encrypt Zertifikate.

In dieser Kombination ist es wichtig, Collabora mitzuteilen, dass es sich nicht um SSL kümmern soll, was man mit der Env-Variable

extra_params=--o:ssl.enable=false --o:ssl.termination=true

erreicht. Ausserdem muss der Collabora Container im privileged Modus laufen!

Mein Setup in Ansible sieht dann letztenlich so aus:

- docker_container:
    name: collabora
    image: collabora/code
    state: started
    detach: yes
    restart_policy: always
    privileged: yes
    expose:
      - 9980
    env:
      aliasgroup1: https://nextcloud.domain.com:443
      VIRTUAL_HOST: office.domain.com
      LETSENCRYPT_HOST: office.domain.com
      VIRTUAL_PORT: "9980"
      LETSENCRYPT_EMAIL: ich@meins.de
      extra_params: "--o:ssl.enable=false --o:ssl.termination=true"

Das Equivalent auf der Console sollte dann so aussehen:

docker run --name=collabora --env=aliasgroup1=https://nextcloud.domain.com:443 --env=VIRTUAL_HOST=office.domain.com --env=LETSENCRYPT_HOST=office.domain.com --env=VIRTUAL_PORT=9980 --env=LETSENCRYPT_EMAIL=ich@meins.de --env='extra_params=--o:ssl.enable=false --o:ssl.termination=true' --privileged --expose=9980 --restart=always --detach=true collabora

Wenn das erledigt ist und der Server läuft, kann man in Nextcloud den Admin Bereich öffnen und dort auf den Punkt “Office” gehen. Hier stellt man den Collabora Server ein und klickt auf Speichern:

Anschließend geht man in Nextcloud auf den “Dateien” Tab und klickt dann oben auf das Plus, um eine neue Datei zu erzeugen:

Anschließend öffnet man das Dokument und sollte nun die Office Oberfläche sehen. Falls eine Fehlermeldung kommt, und man es “später nochmal versuchen soll”, geht auf den Server wo Collabora läuft und schaut in die Logs des Containers.

Wenn ihr da irgendwas von

Terminating connection. Error: No acceptable WOPI hosts found matching the target host [nextcloud.domain.com] in config.

seht, dann habt ihr die Domain in der Environment Variable nicht korrekt übergeben. Überprüft vor allem, ob es sich überhaupt um die gleiche Domain wie in der Fehlermeldung handelt. Diese ist in jedem Fall die korrekte Domain und sollte so auch in der “aliasgroup1” drin stehen!

[Quicktip] Geteilte Fotoalben erscheinen nach iPhone-Wechsel als leer

Nachdem ich auf ein neues iPhone gewechselt bin, sind in meiner Fotos App ein paar meiner geteilten Fotoalben einfach leer geblieben. Ich glaube sogar alle waren auch von mir erstellt worden. Alles, was man sehen konnte, war das “Plus Zeichen” zum Hinzufügen von neuen Bildern, so als ob man das Album gerade erst erstellt hat. Auf allen meinen anderen Geräten mit dem gleichen iCloud Account waren sie weiterhin da.

Um das Problem (hoffentlich) zu beheben, kann man folgendes versuchen:

  • Fotos App beenden (richtig beenden, mittels Task Manager!)
  • Iphone Homescreen –> Einstellungen –> oben auf euren Namen tippen –> iCloud –> Fotos
  • “Geteilte Alben” ausschalten
  • auf den Homescreen wechseln
  • eine Minute warten
  • Iphone Homescreen –> Einstellungen –> oben auf euren Namen tippen –> iCloud –> Fotos
  • “Geteilte Alben” wieder einschalten
  • Fotos App öffnen

Die geteilten Alben sollten nun zeitnah erscheinen und zumindest bei mir waren dann auch alle wieder mit Bildern gefüllt.

[Quicktip] Mac OS ignoriert die Reihenfolge von Netzwerkanschlüssen und benutzt immer nur Wifi

Meine beiden Macbooks – eins mit Mojave und eins mit Big Sur – haben an meinem Schreibtisch das gleiche Problem: Wifi/Wlan wird immer bevorzugt verwendet. Ich merke das mit spontanen Aussetzern in Videokonferenzen, oder wenn ich im Netzwerk nicht mit dem gewohnten Gigabit Speed Kopieraktionen machen kann. Meine Vermutung ist, dass es mit meinem verwendeten USB-C Hub mit Netzwerkanschluss zu tun hat.

Normalerweise hat man in Mac OS die Möglichkeit, die Priorität für Netzwerkanschlüsse festzulegen und damit eigentlich genau mein Problem zu lösen:

Wie man sehen kann ist das WLAN unterhalb vom Thunderbold und eben meinem USB Gigabit Adapter angesiedelt. Und trotzdem wird es immer wieder bevorzugt verwendet.

Ich könnte das Wlan natürlich einfach abschalten, was ich auch getan habe, aber dann kann ich das Macbook nicht mehr mittels Apple Watch entsperren und Airdrop funktioniert auch nicht.

Nun bin ich auf die Idee gekommen, mit den Netzwerkumgebungen zu spielen, und siehe da, man kann sie zumindest als Workaround nutzen. Die Netzwerkumgebungen unter Mac OS sind eine Möglichkeit, dass man verschiedene IP Settings in seinem Mac speichern kann, sodass man z.B. schnell zwischen den Settings für die Arbeit und daheim wechseln kann.

Ich habe mir also zwei Netzwerkumgebungen “Schreibtisch” und “Unterwegs” angelegt. In der für mich relevanten Gruppe “Schreibtisch” belasse ich das Ethernet wie es ist. Schlaue Leute würden nun einfach den WLAN Apapter in der “Schreibtisch” Umgebung rauswerfen, allerdings deaktiviert sich dann das WLAN komplett und ich kann eben nicht meine Apple Watch zum Entsperren und Airdrop nutzen.

Also habe ich den Adapter drin gelassen, aber bei den IP Einstellungen für das Wlan folgendes gemacht:

Diese Einstellungen bewirken, dass der Mac sich zwar zu dem Wlan verbindet oder es zumindest versucht, allerdings weder eine IPv4 noch IPv6 bekommt. Aber: die Wlan Funktion bleibt aktiviert. Mit diesem “Hack” wird dauerhaft nur die Ethernet-Verbindung verwendet, aber ich habe trotzdem die Vorzüge von Airdrop und Apple-Watch Entsperrung 👌

Übrigens: sobald man Netzwerkumgebungen angelegt hat, kann man diese über einen neuen Menüpunkt im “Apfelmenü” schnell umschalten:

 

Jetzt muss ich nur noch etwas Zeit finden, damit ich per Automator-Script erkenne, ob der Ethernet-Adapter verwendet wird oder nicht und dementsprechend die Umgebung automatisch umschalte…

[Quicktip] Wie man auf dem iPhone Zeitrafferaufnahmen einer GoPro Kamera in ein Video umwandelt

GoPro Kameras verfügen neben dem Video- und dem Foto-Modus auch über eine Zeitraffer Funktion. In dieser werden in festgelegten Abständen Fotos geschossen, welche dann später mittels der GoPro Software am Rechner zu einem Video zusammengefügt werden können.

Nun sind wir bereits im Jahr 2021 und ich möchte mittlerweile eigentlich alles was Videoschnitt angeht auch einfach unterwegs auf dem iPhone oder iPad machen können. nur leider ist das gar nicht so einfach. Man bekommt die Zeitraffer Aufnahmen zwar mit der GoPro App von der Kamera heruntergeladen und die App erkennt das ganze auch als zusammenhängendes Werk – ein einfaches Video kann man mit ihr aber trotzdem nicht erzeugen. Nachdem ich dann den größten Teil der Apps durchforstet habe stieß ich leider immer wieder auf das Problem, dass die vielen Zeitraffer Apps nur die direkte Aufnahme von Zeitraffer Videos ermöglichen, nicht aber das zusammensetzen von einzelnen Bildern die man bereits in der Foto App hat. Mit Ausnahme eines 30€ Schnittprogramms, welches die Funktion wohl unterstützt. Das war mir für diesen einen Einsatzzweck dann doch zu teuer.

Nach etwas hin und her habe ich mir dann die Shortcuts/Kurzbefehle App angesehen und über einen Trick kann man die gewünschten Videos so direkt am Handy erzeugen: man erstellt eine neue “Sharing App”, die Bilder als Input nimmt und erstellt dann aus den Bildern ein Gif – und aus dem Gif dann ein Video 🙄 😂

In der Shortcuts/Kurzbefehle App sieht das dann so aus:

Um aus der App eine Sharing App zu machen müsst ihr oben rechts auf die drei Punkte tippen und dann “Im Share-Sheet anzeigen” aktivieren. Sinnvollerweise sollte bei “Share-Sheet-Typen” Bilder ausgewählt sein.

Bei den Einstellungen für das Gif müsst ihr mit dem Wert bei “Sekunden pro Foto” ein bisschen spielen. Soweit ich das sehe kann der Wert nur 2 Stellen hinter dem Komma. 30 Bilder/s wären 0,03333333333… daher habe ich hier erstmal 0,04 genommen. 0,03 war mir dann etwas zu schnell, kommt aber eben auf das Video an.

 

Speichert das ganze ab, und dann könnt ihr in der Fotos App die entsprechenden Fotos markieren, teilen und wählt dann eure eben erstellte Shortcuts-App auf. Nachdem der Fortschrittsbalken durch ist solltet ihr das fertig gerenderte Video in euer Foto-App sehen. Irritierenderweise ist der Sharing-Bildschirm weiter offen…

[Quicktip] Wie man Daten von Freenas auf einen USB Datenträger kopiert

Um Daten von eurem FreeNAS Server auf einen FAT32 formatierten USB Stick/USB Festplatte zu bekommen sind folgende Schritte notwendig:

  • Per SSH auf die Console des Servers verbinden
  • Verzeichnis für den Stick erstellen:
    mkdir /mnt/USB-Stick
  • Finde mittels
    gpart list
    heraus, wie die Bezeichnung des USB Sticks ist (z.B. “da1p1”)
  • Nun mountest du den Stick in das entsprechende Verzeichnis, welches du unter Punkt zwei angelegt hast
    mount -v -t msdosfs /dev/da1p1 /mnt/USB-Stick
  • mittels der Kommandos “cp” und “mv” kannst du nun auf der Console die gewünschten Dateien kopieren
  • wenn du fertig bist, kannst du per
    umount /mnt/USB-Stick
    den Stick wieder auswerfen und dann anschließend vom Server abziehen.

Firefox deaktiviert addons

Am Wochenende ist Mozilla leider ein sehr blöder Fehler unterlaufen: das Zertifikat, welches die Echtheit von Extensions sicherstellt, ist abgelaufen 🙁

Die Folge: sämtliche Extensions/Erweiterungen sind komplett deaktiviert und lassen sich weder aktivieren noch neu installieren.

Die Lösung ist, zumindest aktuell, relativ einfach:

Einstellungen öffnen, dann den Punkt Datenschutz & Sicherheit wählen und dort den Punkt aktivieren, dass ihr an so genannten “Studien” teilnehmen wollt. Darüber wird nämlich gerade der Hotfix verteilt:

Danach habe ich den Browser einmal neu gestartet, und nach ein paar Minuten erschienen meine Addons wieder.

Da ich noch nicht so recht weiß, was ich von diesem Setting halten soll, mit dem Mozilla eigentlich beliebig meinen Browser steuern darf, werde ich es wohl in den nächsten Tagen, sobald der “offizielle” Fix da ist, wieder deaktivieren.

WordPress zeigt nur die Überschriften, aber nicht den Artikel Inhalt / Content an

Bei einem Umzug von WordPress hatte ich auf einmal das Phänomen, dass die Seite an sich wunderbar funktionierte, jedoch nur die Blog Post Überschriften und nicht den Content anzeigte.

Komischerweise war der Content beim Bearbeiten des Artikels vorhanden, also tippte ich erst auf das Template. Da ich jedoch ein WordPress Default Template in Verwendung hatte, konnte das schnell ausgeschlossen werden.

Die Lösung brachte dann der allgemeine WordPress Universal-Tip: Alle Plugins deaktivieren und dann einzeln wieder anschalten. Und siehe da, das (leider) komplett veraltete “wp-slimbox-reloaded” hatte den Fehler verursacht. Irgendwie hat es den Render-Prozess des Artikel Contents zerschossen. Sobald ich das Plugin deaktiviert hatte, lief die Seite wieder wie gewohnt 🙂

1und1 Probleme mit CNAME, ssl/https, root domain und Weiterleitungen

Sorry, ich wollte alles in der Überschrift unterbringen 🙂

Um was geht es denn genau?

Nehmen wir an, du betreibst einen externen Dienst, der unter deiner Domain gehosted wird (DEINE-DOMAIN.de), die du bei 1und1 gekauft/geparkt hast bzw. dort per DNS verwaltest. Dieser externe Dienst nutzt CNAME Einträge, um Subdomains deiner Domain direkt nutzen zu können. Im konkreten Fall www.DEINE-DOMAIN.de.

 

Kurzer Abriss, was ein CNAME ist: statt A bzw. AAAA Einträge mit IPs zu hinterlegen, kann man mittels CNAME eine Subdomain deiner Hauptdomain auf eine ganz andere Domain verweisen. Beispiel:

blog.DEINE-DOMAIN.de hat einen CNAME auf DEIN-NAME.wordpress.com

Wenn nun jemand blog.DEINE-DOMAIN.de aufruft, dann geht der DNS-Server (also der von der Domain) auf DEIN-NAME.wordpress.com und zieht sich dort die A bzw. AAAA Einträge und liefert diese so zurück, als ob sie der Domain blog.DEINE-DOMAIN.de zugewiesen wären. Das große Problem ist hier: das geht immer nur mit Subdomains von DEINE-DOMAIN.de, also z.B. www.DEINE-DOMAIN.de.

 

Zurück zum aktuellen Fall: Rufst du in deinem Setup nun DEIN-NAME.de im Browser auf, so wirst du die Meldung bekommen, dass diese Seite nicht erreichbar ist. Also, bei 1und1 eine http Weiterleitung auf www.DEINE-DOMAIN.de eingerichtet. Klappt nur nicht. Denn: Der 1&1-Standarteintrag für A und AAAA Record deiner Domain muss bestehen, damit die http Weiterleitung überhaupt funktionieren kann. Leider bekommt man diesen Hinweis nur in einem kleinen versteckten Nebensatz in der 1&1 Hilfe-Ecke.

Nun haben moderne Browser aber die (gute) Angewohnheit, per Default ein https vor die von dir eingetippte Domain zu setzen (zumindest war es bei mir in Chrome und Firefox so). Und dann kann man die Seite schon wieder nicht aufrufen, den nun bekommt man einen SSL Fehler. Was muss man also nun tun? Richtig, wenn man es einfach haben will, bestellt man ein 1&1 SSL Zertifikat, dann klappt auch die Weiterleitug von https://DEINE-DOMAIN.de auf https://www.deine-domain.de.