flatlink

Kurzlinks und QR-Codes,
die niemanden vermessen.

Ein Kurzlink-Dienst zum Selbsthosten. Reines PHP – keine Datenbank, keine Abhängigkeiten, kein Build-Schritt. Kopieren, konfigurieren, läuft.

Der Unterschied

Das ist alles, was ein Klick hinterlässt

Kein Versprechen, sondern der vollständige Datensatz, den flatlink pro Kurzlink speichert:

  • keine IP-Adressen
  • keine Geräte- oder Browser-Kennungen
  • keine Herkunfts-Adressen (Referrer)
  • keine Datensätze zu einzelnen Aufrufen

Ein einzelner Besucher lässt sich daraus nicht rekonstruieren – weil nie ein einzelner Besucher gespeichert wird. Der Weiterleitungspfad startet nicht einmal eine Sitzung, solange kein Passwortschutz auf dem Link liegt.

Und weil das als Behauptung wenig wert wäre, liegt der Code offen: Die Zählung steht in inc/store.php in etwa zehn Zeilen. Nachprüfen ausdrücklich erwünscht.

Funktionsumfang

Was drin ist

QR-Codes ohne Fremdcode

Eigener Encoder nach ISO/IEC 18004. Formen, Farben, Logo in der Mitte, Rahmen mit freiem Text – als SVG, PNG und druckfertiges PDF.

Ziele bleiben änderbar

Der gedruckte Code bleibt gültig, auch wenn die verlinkte Seite umzieht. Genau dafür lohnt sich ein Kurzlink auf Papier.

WLAN, Kontakt, Termin

Statische Codes, deren Eingaben nirgends gespeichert werden – sie stecken im Code selbst und funktionieren unabhängig vom Dienst.

Kein Ablaufdatum

Keine Testphase, kein Scan-Limit, keine Zwischenseite. Das automatische Aufräumen ungenutzter Links ist standardmäßig aus.

Missbrauchsschutz

Rate-Limits je IP – nur als Hash gespeichert –, Meldeformular, Sperrfunktion, optional Google Safe Browsing (standardmäßig aus).

Flat-File-Ablage

Alles liegt als JSON unter data/, mit Sperren und atomarem Schreiben. Ein Backup ist ein Kopiervorgang.

Für Organisationen

Zentrale Anmeldung und Gruppen

Für Hochschulen, Behörden und Unternehmen – beides optional und standardmäßig abgeschaltet.

Shibboleth, SAML, OIDC

Die Anmeldung übernimmt der Webserver (mod_shib und Verwandte), flatlink liest nur, wen er authentifiziert hat. Fälschbare HTTP-Header werden ohne konfigurierte Proxy-Allowlist verworfen.

LDAP und Active Directory

Prüfung per Bind als der gefundene Nutzer, Eingaben escaped, leere Passwörter abgelehnt. Lokale Konten funktionieren parallel weiter.

Gruppen für geteilte Links

Ein Link kann einer Gruppe gehören – dann verwaltet ihn das ganze Team. Der Aushang überlebt den Weggang der Kollegin, die ihn angelegt hat.

Rechte über Gruppen

Wunsch-Namen, CSV-Import und Logo-Upload lassen sich einzeln freigeben – Verzeichnis-Gruppen können dabei nie neue Rechte erfinden.

Installation

Kopieren, konfigurieren, läuft

Kein Composer, kein Build-Schritt, keine Datenbank. Vorausgesetzt wird PHP 8.1 und ein Webserver, der Pfade umschreiben kann.

$ git clone https://github.com/HerrBarmann/flatlink.git $ cd flatlink $ cp inc/config.example.php inc/config.php # anpassen, fertig

Danach in den Webroot legen. Das Verzeichnis data/ legt sich beim ersten Aufruf selbst an, das erste registrierte Konto wird automatisch Administrator.

Herkunft

Woher flatlink kommt

flatlink ist kein Nebenprojekt, sondern der Motor eines laufenden Dienstes: Unter 1337.kiwi läuft damit ein öffentlicher Kurzlink- und QR-Dienst. Was dort funktioniert, steht hier im Quelltext.

Marke und Marketing bleiben draußen. Wer flatlink installiert, bekommt kein 1337.kiwi-Imitat, sondern eine leere Instanz zum selbst Benennen und Einfärben.

1337.kiwiflatlink
Was es istdie öffentliche Instanzdie Software dahinter
Ausseheneigenes Design, Kiwi-Logoneutrales Theme zum Überschreiben
InhalteRatgeber, Rechtstexte, Tarifenichts davon – nur das Werkzeug
KontenRegistrierung per E-Mailzusätzlich LDAP, Shibboleth, Gruppen

Mitmachen

Fehlerberichte und Pull Requests sind willkommen – mit einer Bitte vorab: Die Abhängigkeitsfreiheit ist kein Zufall, sondern der Kern des Projekts. Ein Patch, der Composer, einen Build-Schritt oder eine Datenbank einführt, wird nicht übernommen, auch wenn er die Sache eleganter macht.