Installation
Voraussetzungen
- Webserver mit PHP 8.1 oder neuer (z. B. Apache, nginx + PHP-FPM, oder gewöhnliches Webhosting)
- PHP-Erweiterung
pdo_sqlite(bei fast allen Hostern standardmäßig aktiv) - Optional: PHP-Erweiterung
opensslfür die Anmeldung mit Passkeys (ebenfalls fast überall aktiv) - Schreibrechte für PHP im Ordner
data/
Installation
- Alle Dateien in ein Verzeichnis des Webservers kopieren (auch ein Unterordner funktioniert).
- Sicherstellen, dass PHP in
data/schreiben darf. Auf einem eigenen Linux-Server z. B. (Webserver-Benutzer:apacheunter Fedora/RHEL,www-dataunter Debian/Ubuntu):sudo chgrp -R apache data && chmod -R g+rwX dataBei Webhostern genügt meist,
data/per FTP die Rechte775zu geben. - Die Seite im Browser öffnen. Beim ersten Aufruf wird die Datenbank angelegt und du richtest den ersten Zugang ein – er erhält Administratorrechte.
- Weitere Benutzer legt ein Admin unter Profil → Benutzer an. Das Passwort erzeugt die App und zeigt es einmalig zum Weitergeben an. Bei der ersten Anmeldung muss der Benutzer ein eigenes Passwort festlegen. Dort lassen sich Benutzer auch sperren, entsperren, löschen und ihr Passwort neu erzeugen (auch danach ist ein Passwortwechsel fällig).
Für den Betrieb im Internet unbedingt HTTPS verwenden.
Passkeys
Benutzer können unter Profil → Anmeldung & Sicherheit Passkeys anlegen und sich damit ohne Passwort anmelden (Fingerabdruck, Gesichtserkennung, Geräte-PIN oder Passwortmanager). Das Passwort bleibt als Alternative erhalten. Voraussetzungen:
- Die App wird über HTTPS unter einem Domainnamen aufgerufen – lokal genügt
http://localhost, IP-Adressen wie127.0.0.1funktionieren nicht. - Passkeys sind an den Hostnamen gebunden, unter dem sie angelegt wurden. Zieht die App auf eine andere Domain um, müssen sie neu angelegt werden; die Anmeldung per Passwort funktioniert weiterhin.
- Ohne die PHP-Erweiterung
opensslblendet die App Passkeys aus.
Geht ein Gerät verloren, kann ein Admin unter Profil → Benutzer die Passkeys eines Benutzers einsehen und einzeln entfernen – oder auf der Kommandozeile mit list-passkeys und delete-passkeys (siehe unten).
Apache
Die mitgelieferten .htaccess-Dateien sperren server/ und data/ und setzen Sicherheits-Header. Dafür muss AllowOverride All (mindestens AuthConfig FileInfo Indexes Options) erlaubt sein.
PHP-Einstellungen (Fehlerausgabe aus, Uploads bis 10 MB) stehen in .user.ini (PHP-FPM/CGI) bzw. in .htaccess (mod_php). Lässt der Hoster das nicht zu, die Werte in dessen Verwaltungsoberfläche setzen. Große Fotos verkleinert die App schon im Browser vor dem Hochladen (längste Seite höchstens 2560 Pixel), sodass auch Handyfotos über 10 MB meist problemlos hochgeladen werden können.
Fehlersuche
„Die App konnte nicht geladen werden: Auf dem Server fehlt die PHP-Erweiterung pdo_sqlite“
– PHP ist ohne SQLite-Unterstützung installiert. Prüfen mit php -m | grep -i sqlite, dann nachinstallieren, z. B. sudo dnf install php-pdo (Fedora/RHEL) bzw. sudo apt install php-sqlite3 (Debian/Ubuntu), und den Webserver bzw. php -S neu starten. Bei Webhostern die Erweiterung in der Verwaltungsoberfläche aktivieren.
„Die App konnte nicht geladen werden: Der Webserver darf nicht in den Ordner data/ schreiben“
– Schritt 2 der Installation fehlt. Bei aktivem SELinux (Fedora, RHEL) zusätzlich:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/pfad/zur/app/data(/.*)?"
sudo restorecon -R /pfad/zur/app
„Interner Fehler“ – die genaue Ursache steht im Fehlerprotokoll des Webservers (z. B. /var/log/httpd/error_log bzw. /var/log/apache2/error.log, Einträge beginnen mit Ausflugskiste).
nginx
nginx liest keine .htaccess-Dateien. Die internen Ordner müssen selbst gesperrt werden:
location ~ ^/(data|server)/ { deny all; }
location ~ /\. { deny all; }
location ~ \.(db|md)$ { deny all; }
location = /api.php {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/api.php;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
Datenverzeichnis außerhalb des Webroots (empfohlen, falls möglich)
Über die Umgebungsvariable AUSFLUGSZIELE_DATA_DIR (Name aus der Zeit vor der Umbenennung) kann ein anderer Speicherort gesetzt werden, z. B. in Apache mit SetEnv AUSFLUGSZIELE_DATA_DIR /var/lib/ausflugskiste.
Diese Anleitung beschreibt die Ausflugskiste 0.3.0. Die Hinweise für Betreiber stammen aus der README im Quelltext.