Shlink ist ein selbst gehosteter Open-Source-URL-Shortener, mit dem Sie URLs kürzen und unter Ihrer eigenen kurzen Domain bereitstellen können. Die Verwendung Ihres eigenen URL-Shortner-Dienstes anstelle eines Drittanbieterdienstes wie bit.ly kann die Markenbekanntheit steigern. Dieses Tutorial zeigt Ihnen, wie Sie Shlink auf Ubuntu 20.04 mit dem Apache- oder Nginx-Webserver installieren.
Shlink-Funktionen
- Besuchsstatistiken :Verfolgen Sie alle Besuche Ihrer Kurz-URLs, einschließlich Statistiken wie Standort, Browser oder Referrer.
- E-Mail-Verfolgung :Generieren Sie ein transparentes 1-Pixel-Bild, das zum Verfolgen von E-Mails verwendet werden kann.
- Integrationen von Drittanbietern :Lassen Sie Tools von Drittanbietern einfach Shlink verwenden, um URLs zu verkürzen, indem Sie einen Single-Request-API-Endpunkt verwenden.
- Benutzerdefinierte Slugs :Lassen Sie Ihre verkürzten URLs einen benutzerdefinierten Slug verwenden, um Kampagnen einfach zu identifizieren.
- QR-Codes :Generieren Sie spontan QR-Codes, die auf Ihre Kurz-URLs verweisen
- Vorschau :Erhalten Sie Vorschauen im Bildformat für beliebige Kurz-URLs
- Tags :Taggen Sie Ihre Kurz-URLs und klassifizieren Sie sie für spätere Analysen
- Eingeschränkter Zugriff :Beschränken Sie den Zugriff auf kurze URLs, nach Datumsbereich und/oder maximaler Anzahl von Besuchen.
- Drittanbieter-Importe :Importieren Sie Ihre bestehenden Kurz-URLs von Drittanbietern wie bit.ly.
- Befehlszeile und Webschnittstelle.
Voraussetzungen für die Installation von Shlink auf Ubuntu 20.04 Server
Shlink ist in PHP geschrieben und stützt sich auf einen MySQL/MariaDB- oder PostgreSQL-Datenbankserver, daher müssen Sie einen LAMP-Stack oder LEMP-Stack einrichten. Wenn Sie den Apache-Webserver bevorzugen, richten Sie den LAMP-Stack ein.
- So installieren Sie LAMP Stack auf Ubuntu 20.04 Server/Desktop
Wenn Sie den Nginx-Webserver bevorzugen, richten Sie den LEMP-Stack ein.
- So installieren Sie LEMP Stack (Nginx, MariaDB, PHP7.4) auf Ubuntu 20.04 LTS
Außerdem benötigen Sie einen Domänennamen. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und Whois-Datenschutz lebenslang kostenlos ist. In diesem Tutorial verwende ich meine lnux.be Domainname als Beispiel. Lassen Sie uns ohne weiteres Shlink auf dem Ubuntu 20.04-Server installieren.
Schritt 1:Laden Sie Shlink auf Ihren Ubuntu 20.04-Server herunter
Gehen Sie zur Shlink-Github-Seite, um die neueste stabile Version zu überprüfen. Sie können die neueste stabile Version (2.6.2) herunterladen, indem Sie den folgenden Befehl auf Ihrem Server ausführen.
wget https://github.com/shlinkio/shlink/releases/download/v2.6.2/shlink2.6.2_php8.0_dist.zip
Hinweis :Wenn eine neue Version herauskommt, ersetzen Sie einfach 2.6.2 durch die neue Versionsnummer.
Die Datei wird als shlink2.6.2_php8.0_dist.zip
gespeichert . Verwenden Sie unzip
Befehl zum Entpacken nach /var/www/
Verzeichnis.
sudo apt install unzip sudo mkdir -p /var/www/ sudo unzip shlink2.6.2_php8.0_dist.zip -d /var/www/
Jetzt werden die Dateien unter /var/www/shlink2.6.2_php8.0_dist/
gespeichert , wir benennen es um, um es einfacher zu machen.
sudo mv /var/www/shlink2.6.2_php8.0_dist/ /var/www/shlink
Machen Sie dann den Webserver-Benutzer (www-data
) als Eigentümer dieses Verzeichnisses.
sudo chown -R www-data:www-data /var/www/shlink/
Schritt 2:Erstellen Sie eine MariaDB-Datenbank und einen Benutzer für Shlink
Jetzt müssen wir uns bei der MariaDB-Konsole anmelden und eine Datenbank und einen Benutzer für Shlink erstellen. Standardmäßig verwendet das MariaDB-Paket auf Ubuntu unix_socket um die Benutzeranmeldung zu authentifizieren, was im Grunde bedeutet, dass Sie den Benutzernamen und das Passwort des Betriebssystems verwenden können, um sich bei der MariaDB-Konsole anzumelden. Sie können also den folgenden Befehl ausführen, um sich anzumelden, ohne das MariaDB-Root-Passwort anzugeben.
sudo mysql -u root
Erstellen Sie als Nächstes mit dem folgenden Befehl eine neue Datenbank für Shlink. Dieses Tutorial nennt es shlink
, können Sie einen beliebigen Namen für die Datenbank verwenden.
CREATE DATABASE shlink;
Der folgende Befehl erstellt einen Datenbankbenutzer und ein Passwort und gewährt dem neuen Benutzer gleichzeitig alle Berechtigungen für die neue Datenbank, damit Shlink später in die Datenbank schreiben kann. Ersetzen Sie rote Texte durch Ihren bevorzugten Datenbanknamen, Benutzernamen und Passwort.
GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';
Berechtigungstabelle leeren und MariaDB-Konsole verlassen.
FLUSH PRIVILEGES; EXIT;
Schritt 3:Installieren Sie PHP8.0 und einige Erweiterungen
Da wir die PHP 8-Version von Shlink heruntergeladen haben, müssen wir PHP8 installieren. Das Ubuntu 20.04-Repository enthält PHP7.2. Um PHP8.0 auf Ubuntu 20.04 zu installieren, müssen wir ein PPA hinzufügen.
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php -y
Installieren Sie dann PHP8.0 und die von Shlink benötigten Erweiterungen.
sudo apt install php-apcu php8.0 php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-intl php8.0-gmp php8.0-xml
Wenn Sie Apache verwenden Webserver müssen Sie die folgenden Befehle ausführen, damit er PHP8.0-FPM verwendet.
sudo a2dismod mpm_prefork sudo a2enmod mpm_event proxy_fcgi setenvif sudo a2enconf php8.0-fpm
Starten Sie dann Apache neu.
sudo systemctl restart apache2
Schritt 4:Führen Sie das Shlink-Installationsskript aus
Führen Sie das PHP-Installationsskript als www-data
aus Benutzer.
sudo -u www-data php8.0 /var/www/shlink/bin/install
Der Einrichtungsassistent fordert Sie auf, Datenbankdetails einzugeben. Also wähle ich MariaDB als Datenbanktyp, geben Sie dann den Datenbanknamen, den Benutzer und das Passwort ein. Der Host ist localhost und der Port ist 3306 . Shlink kann sich auch über einen Unix-Socket mit dem Datenbankserver verbinden. Wenn Sie MariaDB verwenden, ist der Socket-Speicherort /var/run/mysqld/mysqld.sock
auf dem Ubuntu-Server.
Geben Sie als Nächstes die Standarddomain für Ihren URL-Shortener ein und wählen Sie den Schematyp (https ). Beantworten Sie dann einige einfache Fragen.
Wenn Sie die Geolokalisierung von Besuchern analysieren möchten, müssen Sie Ihren eigenen GeoLite2-Lizenzschlüssel verwenden, der kostenlos ist. Um einen Lizenzschlüssel zu erhalten, erstellen Sie ein Konto bei MaxMind. Maxmind sendet Ihnen eine E-Mail. Klicken Sie auf den Link in der E-Mail, um ein Passwort festzulegen, und melden Sie sich dann bei Ihrem MaxMind-Konto an. Wählen Sie als Nächstes My License Key
auf der linken Leiste.
Klicken Sie auf Neuen Lizenzschlüssel generieren Schaltfläche.
Geben Sie Ihrem Lizenzschlüssel einen Namen. Wählen Sie dann No
, weil wir das geoipupdate
nicht verwenden müssen Programm. Klicken Sie dann auf Confirm
Schaltfläche.
Sobald der Lizenzschlüssel erstellt ist, kopieren Sie den Lizenzschlüssel und fügen Sie ihn in den Shlink-Setup-Assistenten ein. Dann können Sie die IP-Adressen der Besucher anonymisieren und den Weiterleitungstyp (302 oder 301) festlegen.
Konfigurieren Sie dann Umleitungen für Anomaliefälle. Wenn Besucher auf die Basis-URL meines Shlinks (https://lnux.be) klicken, werden sie auf meine Website weitergeleitet. Sie können auch eine benutzerdefinierte URL für die Seite „404 nicht gefunden“ erstellen.
Konfigurieren Sie abschließend die Anwendung. Ich drücke einfach Enter
um die Standardeinstellungen zu verwenden.
Schritt 5:Apache Virtual Host oder Nginx-Konfigurationsdatei für Shlink erstellen
Apache
Wenn Sie den Apache-Webserver verwenden, erstellen Sie einen virtuellen Host für Shlink.
sudo nano /etc/apache2/sites-available/shlink.conf
Fügen Sie den folgenden Text in die Datei ein. Ersetzen Sie lnux.be
mit Ihrem echten Domainnamen und vergessen Sie nicht, dafür einen DNS-A-Eintrag festzulegen.
<VirtualHost *:80> ServerName lnux.be DocumentRoot /var/www/shlink/public ErrorLog ${APACHE_LOG_DIR}/shlink_error.log CustomLog ${APACHE_LOG_DIR}/shlink_access.log combined <Directory /var/www/shlink/public> Options FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny allow from all </Directory> Include /etc/apache2/conf-available/php8.0-fpm.conf </VirtualHost>
Speichern und schließen Sie die Datei. Aktivieren Sie dann diesen virtuellen Host mit:
sudo a2ensite shlink.conf
Laden Sie Apache neu, damit die Änderungen wirksam werden.
sudo systemctl reload apache2
Nginx
Wenn Sie den Nginx-Webserver verwenden, erstellen Sie einen virtuellen Host für Shlink.
sudo nano /etc/nginx/conf.d/shlink.conf
Fügen Sie den folgenden Text in die Datei ein. Ersetzen Sie lnux.be
mit Ihrem echten Domainnamen und vergessen Sie nicht, dafür einen DNS-A-Eintrag festzulegen.
server { listen 80; listen [::]:80; server_name lnux.be; root /var/www/shlink/public; error_log /var/log/nginx/shlink.error; access_log /var/log/nginx/shlink.access; index index.php index.html index.htm index.nginx-debian.html; location / { # try to serve file directly, fallback to app.php try_files $uri /index.php$is_args$args; } # redirect some entire folders rewrite ^/(vendor|translations|build)/.* /index.php break; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfiguration.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Schritt 6:HTTPS aktivieren
Um den HTTP-Verkehr zu verschlüsseln, können wir HTTPS aktivieren, indem wir ein kostenloses TLS-Zertifikat installieren, das von Let’s Encrypt ausgestellt wurde. Führen Sie den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) auf dem Ubuntu 20.04-Server zu installieren.
sudo apt install certbot
Wenn Sie Apache verwenden , installieren Sie das Certbot-Apache-Plugin.
sudo apt install python3-certbot-apache
Und führen Sie diesen Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d lnux.be
Wenn Sie Nginx verwenden , dann müssen Sie auch das Certbot Nginx-Plugin installieren.
sudo apt install python3-certbot-nginx
Führen Sie als Nächstes den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d lnux.be
Wo
--nginx
:Verwenden Sie das nginx-Plugin.--apache
:Verwenden Sie das Apache-Plugin.--agree-tos
:Nutzungsbedingungen akzeptieren.--redirect
:HTTPS durch 301-Umleitung erzwingen.--hsts
:Fügen Sie jeder HTTP-Antwort den Strict-Transport-Security-Header hinzu. Erzwingen, dass der Browser immer TLS für die Domäne verwendet. Schützt vor SSL/TLS-Stripping.--staple-ocsp
:Aktiviert OCSP-Heften. Eine gültige OCSP-Antwort wird an das Zertifikat geheftet, das der Server während TLS anbietet.
Das Zertifikat sollte nun abgerufen und automatisch installiert werden.
Schritt 7:Kurzlinks erstellen
Zuerst müssen Sie mit dem folgenden Befehl einen API-Schlüssel erstellen.
sudo -u www-data php8.0 /var/www/shlink/bin/cli api-key:generate
Gehen Sie dann zu https://app.shlink.io/, um Ihren Server hinzuzufügen.
Sobald Sie Ihren Server hinzugefügt haben, können Sie kurze Links erstellen.
Beachten Sie, dass dies nur ein Webclient ist. Kurz-URLs werden auf Ihrem eigenen Server gespeichert.
Sie können auch kurze URLs über die Befehlszeile auf Ihrem Server generieren.
sudo -u www-data /var/www/shlink/bin/cli short-url:generate
Kurze URLs auflisten.
sudo -u www-data /var/www/shlink/bin/cli short-url:list
Führen Sie den folgenden Befehl aus, um die Hilfenachricht anzuzeigen.
sudo -u www-data php /var/www/shlink/bin/cli