Ab und an braucht man sie einfach: URL Shortener die aus ellenlangen URLs (wie sie z.B. Sharry erzeugt) eine kurze URL zaubern.
Nach etwas Recherche bin ich auf Polr gestoßen. Polr ist klein, einfach gehalten, macht genau das was es soll und sonst nichts. Die Installation und Konfiguration geht flott und so hat man innerhalb von 5 Minuten einen eigenen Shortener Server laufen.
Bevor man mit der Installation startet, sollte man sich eine passende Subdomain anlegen, über welche Polr erreichbar ist.
Danach kann man auch schon loslegen. Ein passendes Docker-Image gibt es von ajanvier. Einfach per wget die docker-compose.yml und die .env ziehen, bearbeiten und starten. That's it!
In meinem Fall habe ich ein eigenes Netzwerk für Polr und den dazugehörigen MariaDB Container konfiguiert. Polr selbst hängt zusätzlich noch im nginx-proxy Netz um von Außen erreichbar zu sein.
docker-compose.yml
version: '3.7'
services:
polr:
image: ajanvier/polr
container_name: polr-app
env_file:
- .env
depends_on:
- mariadb
networks:
- polr-net
- nginx-proxy
mariadb:
image: mariadb
container_name: polr-mariadb
restart: always
expose:
- "3306"
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- /var/lib/mysql
networks:
- polr-net
networks:
polr-net:
nginx-proxy:
external:
name: nginx-proxy
.env
Durch die Option "SETTING_SHORTEN_PERMISSION=true" können nur registrierte User Links anlegen. Die Maileinstellungen sind auch erst dann wichtig, wenn man vor hat verschiedene Benutzer anzulegen. Das ist beim mir nicht der Fall, also bleibt Mail deaktiviert.
# Database
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=polr
DB_USERNAME=polr
DB_PASSWORD=<DBPASSWORD>
DB_ROOT_PASSWORD=<DBROOTPASSWORD>
# Admin
ADMIN_USERNAME=admin
ADMIN_PASSWORD=<ADMINPASSWORD>
ADMIN_EMAIL=<ADMINMAIL>
# Configs
APP_NAME="NossCo Shorturl"
APP_PROTOCOL=https://
APP_ADDRESS=s.nossco.de
POLR_ALLOW_ACCT_CREATION=false
POLR_ACCT_ACTIVATION=false
POLR_ACCT_CREATION_RECAPTCHA=false
POLR_RECAPTCHA_SITE_KEY=
POLR_RECAPTCHA_SECRET=
POLR_BASE=62
SETTING_PUBLIC_INTERFACE=true
SETTING_SHORTEN_PERMISSION=true
SETTING_INDEX_REDIRECT=
SETTING_REDIRECT_404=
SETTING_PASSWORD_RECOV=
SETTING_AUTO_API=false
SETTING_ANON_API=
SETTING_ANON_API_QUOTA=
SETTING_PSEUDORANDOM_ENDING=false
SETTING_ADV_ANALYTICS=false
SETTING_RESTRICT_EMAIL_DOMAIN=
SETTING_ALLOWED_EMAIL_DOMAINS=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=
# NGINX
VIRTUAL_HOST=s.nossco.de
LETSENCRYPT_HOST=s.nossco.de
LETSENCRYPT_EMAIL=<MAIL>
Nachdem die Konfiguration steht, pullen wir die Images und starten danach die Container.
# docker-compose pull
# docker-compose up -d
Nach ein paar Minuten sollte der Proxy die LE-Zertifikate gezogen haben und wir können uns das Ergebnis anschauen.