NossCo

I Make Computer Beep Boop Beep

Polr + Docker - Der eigene URL Shortener in 5 Minuten

- Posted in Docker by

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.

enter image description here