ownCloud-Kalendar für Externe freigeben

| 2 Kommentare

Bei unserer Schulcloud, die eine ownCloud-Installation ist, stellte sich mir jüngst die Herausforderung, dass ein Kalender auch auf unserer Schulhomepage eingebunden werden sollte, so dass auch Externe ihn sich ansehen können. Leider kann man beim aktuellen ownCloud (8.2) die Kalender noch nicht als Link teilen und somit für Leute freigeben, die keinen Account in der Cloud haben. Aus diesem Grund habe ich mich auf die Suche nach einer Lösung gemacht und bin fündig geworden 😉
Bildschirmfoto vom 2016-01-11 11:55:01

Zunächst einmal sind einige Vorarbeiten nötig. So sollte z.B. ein Ordner angelegt werden, der für den Webserver erreichbar ist. Bei Ubuntu 14.04/Apache könnte z.B. im Ordner /var/www/html/ der Ordner ical angelegt werden:

cd /var/www/html/
sudo mkdir ical

In diesen Ordner kann nachher die Datei (z.B. calendar.ics) gelegt werden.
Außerdem sollte in ownCloud ein User angelegt werden, der entweder den gewünschten Kalender besitzt oder mit dem der entsprechende Kalender geteilt wird. Für diesen User müssen natürlich Username und Passwort bekannt sein.
Mit diesem Nutzer muss man sich bei Owncloud anmelden und in die Kalender-App wechseln. Hier dann den Download-Link des Kalenders herausfinden (rechte Maustaste auf den Pfeil nach unten, neben dem Kalender; s. Bild)
Owncloud-Calendar-Download-Link
Eine Datei anlegen/mit nano öffnen:
sudo nano /usr/local/bin/icalsync.sh
Anschließend folgendes in die Datei kopieren:

#!/bin/bash

url="MY-OWNCLOUD-CALENDAR-DOWNLOAD-URL"
dest="MY-WEB-ACCESSIBLE-DOWNLOAD-FOLDER/calendar.ics"
user=MY-USERNAME
pwd="MY-PASSWORD"

wget \
--quiet --output-document="$dest" \
--auth-no-challenge \
--http-user=$user --http-password="$pwd" \
"$url"

und an die eigenen Gegebenheiten anpassen (url= vorher gespeicherter Download-Link, dest=Datei in welcher der Kalender gepseichert werden soll, user=Username, pwd=Passwort).
(Das Skript habe ich nicht selber geschrieben, sondern hier gefunden.)

Anschließend sollte überprüft werden, ob das Skript funktioniert, indem es einmal ausgeführt wird. Damit nicht alle Nutzer des Servers auf die Userdaten des ownCloud-Kalender-Users zugreifen können, am besten noch das obige Skript zum Eigentum von root machen mit folgenden Befehlen:

chown root /usr/local/bin/icalsync.sh
chmod 700 /usr/local/bin/icalsync.sh

Wenn man nun den Kalender regelmäßig herunterladen bzw. aktualisieren möchte, bietet es sich an noch einen Cron-Eintrag anzulegen. Hierzu
crontab -e aufrufen.
Über i in den Bearbeiten-Modus wechseln und folgendes eintragen:

45 * * * * /usr/bin/local/icalsync.sh &>> /var/log/ical_sync.log

Hiermit wird einmal in der Stunde das Skript aufgerufen und auch direkt eine Log-Datei angelegt. Im Editor verlässt man den Bearbeiten-Modus durch Drückend von ESC. Gespeichert und geschlossen wird der Editor (bei Ubuntu ist als Standard vim eingestellt, wovon hier ausgegangen wird) durch die Eingabe von :wq und dem Drücken von Enter.

Ich habe auch noch einen Blogeintrag als Quelle genutzt. Allerdings funktionierte das dort verlinkte Skript bei mir nicht.

Autor: Alexander Kallenbach

Mein Name ist Alexander Kallenbach. Ich schreibe hier auf Scroom über alles mögliche – vor allem aber über IT. Hierbei interessieren mich besonders freie und/oder quelloffene Software sowie deren Entwicklung und Einsatz. Außerdem interessieren mich Auswirkungen von IT auf unser Leben. Hierbei ist die Nutzung von Daten und somit auch Datenschutz ein Themenbereich.

2 Kommentare

  1. Pingback: Automatisch Backups von ownCloud-Adressbüchern und Kalendern anlegen |

  2. Hallo!
    Ich habe aus irgendeinem Grund das Problem, dass -egal mit welchem Browser ich’s probiere- bei einem Rechtsklick auf den Download-Pfeil KEINE Adresse kopiert werden kann. Der Punkt „Speichern unter…“ lädt nur die Webseite runter, allerdings nicht den Link zur ICS-Datei.
    Wie bekomme ich den richtigen Pfad zu den Kalender raus? Evtl. aus der MySQL-Datenbank?
    Beste Grüße, HM

Schreibe einen Kommentar zu Heiko Antworten abbrechen

Pflichtfelder sind mit * markiert.