YOURLS – Installiere deinen eigenen URL Shortener

Veröffentlicht von

Im Bildungskontext sind URL Verkürzer total sinnvoll. Die Links sind schnell geteilt und können zur Not auch mal eben abgetippt oder an das Whiteboard geschrieben werden. Dabei gibt es kommerzielle Varianten, aber auch freie, selbst installierbare Programme. Ich zeige dir in diesem Artikel, wie du dir einen YOURLS-Server installierst.

Vorbereitung

Du brauchst natürlich eine kurze Domain, damit es Sinn macht. Ich habe shortdomain.de als Platzhalter genommen. Außerdem ist ein Webserver notwendig. Es kann sein, dass du die Pfade anpassen musst. Ich bin auf Ubuntu 20.04 LTS mit einem LEMP Stack und letsencrypt. Wenn du einen LEMP oder LAMP-Stack installiert hast kannst du letsencrypt mit sudo apt install letsencrypt nachinstallieren.

Backend

YOURLS kannst du nach folgender Anleitung installieren:

https://github.com/YOURLS/YOURLS bzw. https://yourls.org/#Install

Ich gehe im weiteren Verlauf vom Installationpfad /var/www/yourls/ aus. Die Konfigurationsdatei von YOURLS findest du unter /var/www/yourls/user/config.php. Sie ist selbsterklärend und gut kommentiert.

Der Standard YOURLS läuft bei mir mit folgender vServer Konfiguration:

cat /etc/nginx/sites-available/yourls 
server {
  listen 80;
  listen [::]:80;
  server_name shortdomain.de;
###### Von hier bis ......
#  return 301 https://$server_name$request_uri;
#  }
#server {
#        listen 443 ssl http2;
#        listen [::]:443 ssl http2;
#        server_name shortdomain.de;
#        access_log /var/log/nginx/shortdomain.de.access.log;
#        error_log /var/log/nginx/shortdomain.de.error.log;
#        ssl_certificate /etc/letsencrypt/live/shortdomain.de/fullchain.pem;
#        ssl_certificate_key /etc/letsencrypt/live/shortdomain.de/privkey.pem;
#        ssl_session_cache shared:SSL:10m;
#        ssl_session_timeout 10m;
#        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#        ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
#        ssl_prefer_server_ciphers on;
#        ssl_dhparam /etc/nginx/ssl/dhp-2048.pem; #ggf. anpassen oder weglassen

##### .... hier nach holen des des Let's Encrypt Zertifikats einkommentieren. Pfade ggf. anpassen
  root /var/www/yourls;
  index index.php index.html index.htm;

 location / {
    try_files $uri $uri/ /yourls-loader.php$is_args$args;
  }

#für letsencrypt
 location ^~ /.well-known/ {
 #   limit_req            [tighter per-ip settings here];
    access_log           off;
    log_not_found        off;
    root                 /var/www/yourls;
    autoindex            off;
    index                index.html; # "no-such-file.txt",if expected protos don't need it
    try_files            $uri $uri/ =404;
}
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    include fastcgi_params;
  }
}

Wenn du die Grundkonfiguration erstellt hast, musst du deinem Webserer (hier NGINX) die Konfiguration übergeben und zum Laufen bringen.

# Link setzen zum aktivieren der Konfiguration
sudo ln -s /etc/nginx/sites-available/yourls  /etc/nginx/sites-enabled/yourls
# Konfiguration Testen
sudo nginx -t
# nginx neu starten
sudo systemctl restart nginx

Yourls sollte jetzt auf Port 80 laufen und via http://shortdomain.deerreichbar sein.

Let’s Encrypt Zertifikat holen und installieren:

Nun musst du dir das Zertifikat für https holen. shortdomain.deersetzt du natürlich mit deiner URL. Ich mache das immer so:

sudo letsencrypt --webroot -w /var/www/yourls/ -d shortdomain.de certonly

Dann musst du nur noch alles in der NGINX Konfiguration einkommentieren, dann hört der Server nur noch auf https (Port 443) und leitet http anfragen automatisch um.

Frontend

Als Frontend nutze ichInfinity Squared. Nutzbar ohne Anmeldung und ohne große Datenerhebung. Achtung: Pseudonomisierung der IP Adresse stellt du in Yourls direkt ein.

https://github.com/tomslominski/infinity-squared

Einfach im Hauptverzeichnis von Yourls entpacken und dann läufts. Wenn du die QR Funktionalität haben möchtest, dann kannst du dies hier lesen und den Code anpassen (das hatte bei mir nämlich zunächst nicht funktioniert): https://github.com/tomslominski/infinity-squared/issues/45

Das Frontend wird seit kurzem leider nicht mehr weiterentwickelt. Vielleicht kennt jemand von euch ja eine Alternative.

Spam

Es kann natürlich sein, dass ab und and jemand deinen URL Shortener zum spammen missbraucht. Ich habe das in etwa zwei Jahren Betrieb tatsächlich zweimal gehabt. Also zwei Links, die geshorted wurden und auf eine Sex bzw. Malware Seite verwiesen haben. Diese Shortlinks können über das Admin-Webinterface dann einfach gelöscht werden.

Viel Spass beim nachbauen.

Lizenzhinweis:

Das Beitragbild "abkürzen" stammt von www.verbformen.de und steht unter der Lizenz CC BY-SA 4.0

Die Anleitung zur Installation von Yourls von Ulrich Ivens steht unter der Lizenz CC BY-SA 4.0 und erschien zuerst auf meinem CodiMD Pad.

Creative Commons License

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.