# YOURS Self-hosted
## Vorbereitung
Du brauchst natürlich eine kurze Domain, damit es Sinn macht. Ich habe ```shortdomain.de``` als Platzhalter genommen. Es kann sein, dass du die Pfade anpassen musst. Ich bin auf Ubuntu 20.04 LTS mit einem LEMP Stack --> https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04 und letsencrypt ```sudo apt install letsencrypt```
## Backend
Yourls installieren (ich gehe von ```/var/www/yourls/``` aus) nach folgender Anleitung:
https://github.com/YOURLS/YOURLS bzw. https://yourls.org/#Install
Die Konfigurationsdatei ```/var/www/yourls/user/config.php``` ist selbsterklärend und gut kommentiert
Standard YOURLS läuft bei mir mit folgender ngingx conf:
```bash=
cat /etc/nginx/sites-available/yourls
```
```nginx=
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;
}
}
```
Dann musst du das zum laufen bringen.
```bash=
# Link setzen
sudo ln -s /etc/nginx/sites-available/yourls /etc/nginx/sites-enabled/yourls
# Config Testen
sudo nginx -t
# nginx neu starten
sudo systemctl restart nginx
```
Yourls sollte jetzt auf Port 80 laufen
## Let's Encrypt Zertifikat holen und installieren:
```bash=
sudo letsencrypt --webroot -w /var/www/yourls/ -d shortdomain.de certonly
```
Alles in der nginx Configuration einkommentieren, dann hört der Server nur noch auf https (Port 443) und leitet http anfragen automatisch um.
## Frontend
DSGVO konformes Frontend *Infinity 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
## 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 af eine Sex-Seite verwiesen haben. Diese Shortlinks können über das Admin-Webinterface dann einfach gelöscht werden.
:::info
## Lizenzhinweis:
Die Anleitung zur Installation von Yourls von Ulrich Ivens steht unter der Lizenz <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.de">**CC BY-SA 4.0**</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a>
:::