Installation · 16 min read · Dec 18, 2025

So installieren Sie den Reddit-ähnlichen Fediverse-Inhaltsaggregator Kbin auf Ubuntu 22.04

Kbin ist ein Open-Source-Inhaltsaggregator und eine Mikroblogging-Plattform, die Reddit ähnelt und für das Fediverse gedacht ist. Es ermöglicht Ihnen, Communities zu erstellen und zu moderieren und kann mit anderen ActivityPub-Diensten wie Mastodon, Pleroma und Peertube kommunizieren.

Während es beliebte Instanzen von Kbin gibt, denen Sie beitreten und die Sie nutzen können, können Sie auch Ihre eigene Kbin-Instanz für Ihre Freunde und Familie betreiben. In diesem Tutorial lernen Sie, wie Sie Kbin auf einem Ubuntu 22.04-Server installieren.

Voraussetzungen

  • Ein Server, der Ubuntu 22.04 ausführt.
  • Ein nicht-root sudo-Benutzer.
  • Ein vollqualifizierter Domainname (FQDN) wie example.com.
  • Stellen Sie sicher, dass alles aktualisiert ist. $ sudo apt update $ sudo apt upgrade
  • Einige Pakete, die Ihr System benötigt. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.
  • Unsere Installation erfordert auch, dass die Access Control List (ACL) funktioniert. Installieren Sie es. $ sudo apt install acl

Schritt 1 - Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.

Überprüfen Sie, ob die Firewall läuft.

$ sudo ufw status

Sie erhalten die folgende Ausgabe.

Status: inactive

Erlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.

$ sudo ufw allow OpenSSH

Erlauben Sie auch die HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Aktivieren Sie die Firewall

$ sudo ufw enable
Befehl kann bestehende ssh-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviert

Überprüfen Sie den Status der Firewall erneut.

$ sudo ufw status

Sie sollten eine ähnliche Ausgabe sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Schritt 2 - Git installieren

Git ist normalerweise mit dem Ubuntu-Server installiert, aber wenn es nicht installiert ist, sollten Sie es mit dem folgenden Befehl installieren.

$ sudo apt install git

Überprüfen Sie die Installation.

$ git --version
git version 2.34.1

Konfigurieren Sie Git mit grundlegenden Informationen.

$ git config --global user.name "Ihr Name"
$ git config --global user.email "[email protected]"

Schritt 3 - Nginx installieren

Ubuntu wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.

Importieren Sie den Signaturschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Fügen Sie das Repository für die stabile Version von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die System-Repositorys.

$ sudo apt update

Installieren Sie Nginx.

$ sudo apt install nginx

Überprüfen Sie die Installation.

$ nginx -v
nginx version: nginx/1.24.0

Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Schritt 4 - PHP installieren und konfigurieren

Ubuntu 22.04 wird mit PHP 8.1.2 ausgeliefert, das etwas veraltet ist. Wir werden die neueste PHP 8.2-Version mit Ondrejs PHP-Repository installieren.

$ sudo add-apt-repository ppa:ondrej/php

Installieren Sie als Nächstes PHP und die von Kbin benötigten Erweiterungen.

$ sudo apt install php8.2-common php8.2-fpm php8.2-cli php8.2-amqp php8.2-pgsql php8.2-gd php8.2-curl php8.2-simplexml php8.2-dom php8.2-xml php8.2-redis php8.2-mbstring php8.2-intl unzip

Überprüfen Sie die Installation.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Öffnen Sie die Datei /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Wir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Suchen Sie die Zeilen listen.owner = www-data und listen.group = www-data in der Datei und ändern Sie sie in nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erhöhen Sie das Speicherkontingent für PHP-FPM von 128 MB auf 512 MB.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Erhöhen Sie die maximale Dateigröße für Uploads auf 8 MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.2/fpm/php.ini

Starten Sie den PHP-FPM-Dienst neu.

$ sudo systemctl restart php8.2-fpm

Ändern Sie die Gruppe des PHP-Sessionsverzeichnisses in Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Schritt 5 - Composer installieren

Composer ist ein Abhängigkeitsverwaltungstool für PHP und wird für die Installation von Kbin benötigt. Holen Sie sich die Composer-Setup-Datei.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Führen Sie den Installer aus, um die Composer-Binärdatei zu generieren.

$ php composer-setup.php

Entfernen Sie die Setup-Datei.

$ php -r "unlink('composer-setup.php');"

Verschieben Sie die composer.phar-Binärdatei in das Verzeichnis /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Überprüfen Sie die Composer-Installation.

$ composer --version
Composer version 2.5.8 2023-06-09 17:13:21

Schritt 6 - PostgreSQL installieren und konfigurieren

Ubuntu 22.04 wird standardmäßig mit PostgreSQL 14 ausgeliefert. Wir werden stattdessen PostgreSQL 15 verwenden.

Führen Sie den folgenden Befehl aus, um den PostgreSQL GPG-Schlüssel hinzuzufügen.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Fügen Sie das APT-Repository zu Ihrer Quellenliste hinzu.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Aktualisieren Sie das System-Repository.

$ sudo apt update

Jetzt können Sie PostgreSQL mit dem folgenden Befehl installieren.

$ sudo apt install postgresql postgresql-contrib

Das Paket postgresql-contrib enthält einige zusätzliche Dienstprogramme.

Überprüfen Sie den Status des PostgreSQL-Dienstes.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2023-06-17 09:15:50 UTC; 3h 40min ago
   Main PID: 26989 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Jun 17 09:15:50 nspeaks systemd[1]: Starting PostgreSQL RDBMS...
Jun 17 09:15:50 nspeaks systemd[1]: Finished PostgreSQL RDBMS.

Sie können sehen, dass der Dienst standardmäßig aktiviert und ausgeführt wird.

Starten Sie die PostgreSQL-Shell.

$ sudo -i -u postgres psql

Erstellen Sie die Kbin-Datenbank.

postgres=# CREATE DATABASE kbin;

Erstellen Sie den Kbin-Benutzer und wählen Sie ein sicheres Passwort.

postgres-# CREATE USER kbinuser WITH PASSWORD 'Ihr_Passwort';

Ändern Sie den Datenbankbesitzer in den Kbin-Benutzer.

postgres-# ALTER DATABASE kbin OWNER TO kbinuser;

Verlassen Sie die Shell.

postgres-# \q

Überprüfen Sie, ob Ihre Anmeldedaten funktionieren.

$ psql --username kbinuser --password --host localhost kbin
Passwort:
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1))
SSL-Verbindung (Protokoll: TLSv1.3, Verschlüsselung: TLS_AES_256_GCM_SHA384, Kompression: aus)
Geben Sie "help" für Hilfe ein.

kbin=>

Verlassen Sie die Shell, indem Sie \q eingeben.

Schritt 7 - Nodejs und Yarn installieren

Ubuntu 22.04 wird mit Node v12 ausgeliefert, das veraltet ist. Wir werden die neueste LTS-Version von Node installieren, die zum Zeitpunkt des Schreibens dieses Tutorials v18 ist.

Holen Sie sich den Node v18-Installer von NodeSource.

$ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh

Führen Sie das Installationsskript aus.

$ sudo bash nodesource_setup.sh

Installieren Sie Node.js.

$ sudo apt install nodejs

Überprüfen Sie die Node.js-Version.

$ node -v
v18.16.1

Löschen Sie die Installationsdatei.

$ rm nodesource_setup.sh

Schritt 8 - Yarn installieren

Importieren Sie den GPG-Schlüssel für Yarn.

$ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null

Fügen Sie die Yarn-Quelle zur System-Repositoryliste hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

Aktualisieren Sie Ihre System-Repositoryliste.

$ sudo apt update

Installieren Sie Yarn

$ sudo apt install yarn

Überprüfen Sie die Installation.

$ yarn --version
1.22.19

Schritt 8 - Redis installieren

Magento verwendet Redis für die Sitzungs- und Cache-Speicherung. Es ist völlig optional und Sie können die Datenbank für die Sitzungs Speicherung verwenden. Aber Redis macht einen besseren Job. Die neueste Version von Magento funktioniert mit Redis 7.0. Ubuntu wird mit Redis 6.0 ausgeliefert, daher verwenden wir das Redis-Repository für die Installation.

Importieren Sie den offiziellen Redis GPG-Schlüssel.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Fügen Sie das APT-Repository zu Ihrer Quellenliste hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Aktualisieren Sie die System-Repositoryliste.

$ sudo apt update

Führen Sie den folgenden Befehl aus, um den Redis-Server zu installieren.

$ sudo apt install redis

Bestätigen Sie die Redis-Version.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Lassen Sie uns die Dienstverbindung mit dem folgenden Befehl überprüfen.

$ redis-cli

Sie werden zur Redis-Shell gewechselt.

Der erste Schritt besteht darin, das Passwort für den Standardbenutzer von Redis festzulegen. Ersetzen Sie Your_Redis_Password durch ein sicheres Passwort Ihrer Wahl. Stellen Sie sicher, dass Sie das Passwort mit dem Zeichen > voranstellen.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Testen Sie die Redis-Authentifizierung.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Pingen Sie den Dienst.

127.0.0.1:6379> ping
PONG

Verlassen Sie den Dienst, indem Sie exit eingeben.

Wenn Sie möchten, können Sie den folgenden Befehl verwenden, um das Redis-Passwort zu generieren.

$ openssl rand 60 | openssl base64 -A
OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1

Schritt 9 - RabbitMQ installieren und konfigurieren

Kbin benötigt RabbitMQ für die Nachrichtenwarteschlangen. Wir werden es aus dem Ubuntu-Repository installieren.

$ sudo apt install rabbitmq-server

Erstellen Sie einen Rabbit-Benutzer. Wählen Sie ein sicheres Passwort.

$ sudo rabbitmqctl add_user kbin StrongPassword

Machen Sie den Benutzer zu einem Administrator.

$ sudo rabbitmqctl set_user_tags kbin administrator

Schritt 10 - Kbin herunterladen

Bevor Sie Kbin herunterladen, müssen wir ein Kbin-Benutzerkonto erstellen.

$ adduser kbin

Fügen Sie den Benutzer kbin zur Sudo-Gruppe hinzu.

$ sudo usermod -aG sudo kbin

Melden Sie sich als Benutzer kbin an.

$ su - kbin

Erstellen Sie das Verzeichnis /var/www/html/kbin.

$ sudo mkdir /var/wwww/html/kbin -p

Wechseln Sie in das Verzeichnis.

$ cd /var/www/html/kbin

Geben Sie dem Ordner die richtigen Berechtigungen, damit der aktuell angemeldete Benutzer Aufgaben ausführen kann.

$ sudo chown $USER:$USER kbin

Klonen Sie das Kbin-Git-Repository in den aktuellen Ordner. Stellen Sie sicher, dass Sie den Punkt (.) am Ende des Befehls hinzufügen, um auf den aktuellen Ordner zu verweisen.

$ git clone https://codeberg.org/Kbin/kbin-core.git .

Erstellen Sie das Verzeichnis public/media.

$ mkdir public/media

Geben Sie ihm volle Berechtigung.

$ chmod 777 public/media

Schritt 11 - Umgebungsdatei konfigurieren

Generieren Sie den Mercure JWT-Geheimschlüssel.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Generieren Sie das App-Geheimnis mit demselben Befehl erneut.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Erstellen und öffnen Sie die .env-Datei zur Bearbeitung im Kbin-Verzeichnis.

$ nano .env

Fügen Sie den folgenden Code ein. Verwenden Sie die oben generierten Schlüssel in der folgenden Datei.

# Führen Sie "composer dump-env prod" aus, um .env-Dateien für die Produktion zu kompilieren (erfordert symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

# kbin-Variablen
SERVER_NAME="nspeaks.xyz" # Produktion
KBIN_DOMAIN=nspeaks.xyz
KBIN_TITLE=Howtoforge
KBIN_DEFAULT_LANG=en
KBIN_FEDERATION_ENABLED=true
[email protected]
[email protected]
KBIN_JS_ENABLED=true
KBIN_REGISTRATIONS_ENABLED=true
KBIN_API_ITEMS_PER_PAGE=25
#KBIN_STORAGE_URL=/media
KBIN_META_TITLE="Kbin Lab"
KBIN_META_DESCRIPTION="Inhaltsaggregator und Mikroblogging-Plattform für das Fediverse"
KBIN_META_KEYWORDS="kbin, Inhaltsaggregator, Open Source, Fediverse"
KBIN_HEADER_LOGO=false
KBIN_CAPTCHA_ENABLED=false

# Redis
REDIS_PASSWORD=YourRedisPassword
REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379

###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Format beschrieben unter https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# WICHTIG: Sie MÜSSEN Ihre Serverversion hier oder in config/packages/doctrine.yaml konfigurieren
#
POSTGRES_DB=kbin
POSTGRES_USER=kbin
POSTGRES_PASSWORD=Your_Password
POSTGRES_VERSION=15
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}?serverVersion=${POSTGRES_VERSION}&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
# Wählen Sie einen der untenstehenden Transporte
RABBITMQ_PASSWORD=RabbitMQPassword
MESSENGER_TRANSPORT_DSN=amqp://kbin:${RABBITMQ_PASSWORD}@rabbitmq:5672/%2f/messages
#MESSENGER_TRANSPORT_DSN=doctrine://default
#MESSENGER_TRANSPORT_DSN=redis://${REDIS_PASSWORD}@redis:6379/messages
###< symfony/messenger ###

###> symfony/mailgun-mailer ###
#MAILER_DSN=mailgun+smtp://[email protected]:key@default?region=us
MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465
###< symfony/mailgun-mailer ###

###> symfony/mercure-bundle ###
# Siehe https://symfony.com/doc/current/mercure.html#configuration
# Die URL des Mercure-Hubs, die von der App verwendet wird, um Updates zu veröffentlichen (kann eine lokale URL sein)
MERCURE_URL=https://example.com/.well-known/mercure
# Die öffentliche URL des Mercure-Hubs, die vom Browser verwendet wird, um eine Verbindung herzustellen
MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
# Das Geheimnis, das zum Signieren der JWTs verwendet wird
MERCURE_JWT_SECRET="!Ändern Sie diesen MercureHubJWTSecretKey!"
###< symfony/mercure-bundle ###

###> symfony/lock ###
LOCK_DSN=flock
###< symfony/lock ###

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Schritt 12 - Kbin installieren

Installieren Sie die von Kbin benötigten Pakete mit Composer.

$ composer install --prefer-dist --no-dev
$ composer dump-env prod

Löschen Sie den Cache.

$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
$ composer clear-cache

Geben Sie den Medienordner die richtigen Berechtigungen.

$ sudo chown kbin:nginx public/media

Setzen Sie die richtigen Datei- und Verzeichnisberechtigungen mit dem Befehl setfacl. Der folgende Befehl erkennt den aktuellen Webserver (Nginx) und setzt die Berechtigungen für die bestehenden und zukünftigen Dateien und Ordner.

$ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

Erstellen und migrieren Sie die PostgreSQL-Datenbank.

$ php bin/console doctrine:database:create
$ php bin/console doctrine:migrations:migrate

Sie werden gefragt, ob Sie mit der Datenmigration fortfahren möchten. Geben Sie yes ein, um fortzufahren.

WARNUNG! Sie sind dabei, eine Migration in der Datenbank "kbin" auszuführen, die zu Schemaänderungen und Datenverlust führen könnte. Sind Sie sicher, dass Sie fortfahren möchten? (ja/nein) [ja]:
 > ja

[Hinweis] Migration bis DoctrineMigrations\Version20230615203020
[Hinweis] abgeschlossen in 1373.9ms, verwendeter Speicher 24M, 79 Migrationen ausgeführt, 667 SQL-Abfragen

[OK] Erfolgreich auf Version migriert: DoctrineMigrations\Version20230615203020

Installieren und erstellen Sie das öffentliche Frontend für die Kbin-Website.

$ yarn install
$ yarn build

Erstellen Sie einen neuen Administrationsbenutzer für Kbin.

$ php bin/console kbin:user:create benutzername [email protected] passwort

Gewähren Sie dem Benutzer administrative Berechtigungen.

$ php bin/console kbin:user:admin benutzername

Aktualisieren Sie die Schlüssel.

$ php bin/console kbin:ap:keys:update

Schritt 13 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Ubuntu 22.04 wird standardmäßig mit Snapd installiert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppen-Zertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfen Sie den Zeitplan des Certbot-Erneuerungsdienstes.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind.

NÄCHSTER                        LINKS          LETZTER                        VERGANGEN       EINHEIT                       AKTIVIERT
Wed 2023-06-28 10:09:00 UTC 20min left    Wed 2023-06-28 09:39:00 UTC 9min ago     phpsessionclean.timer      phpsessionclean.service
Wed 2023-06-28 11:13:02 UTC 1h 24min left Wed 2023-06-28 04:41:28 UTC 5h 7min ago  ua-timer.timer             ua-timer.service
Wed 2023-06-28 12:11:00 UTC 2h 22min left n/a                         n/a          snap.certbot.renew.timer   snap.certbot.renew.service

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Schritt 14 - Nginx konfigurieren

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/kbin.conf zur Bearbeitung.

$ sudo nano /etc/nginx/conf.d/kbin.conf

Fügen Sie den folgenden Code ein.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  example.com;

    access_log  /var/log/nginx/kbin.access.log;
    error_log   /var/log/nginx/kbin.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # verwenden Sie https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, es ist kostenlos und sicher
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/kbin/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # PHP-Skripte an den FastCGI-Server weiterleiten
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Hängt von der PHP-Version ab
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # Zugriff auf beschreibbare Dateien/Verzeichnisse verweigern
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # Zugriff auf bestimmte Verzeichnisse verweigern
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # Alternativ kann der Zugriff auf diese Dateien verweigert werden
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# HTTPS erzwingen
server {
    listen       80;
    listen       [::]:80;
    server_name  example.com;
    return 301   https://$host$request_uri;
}

Beachten Sie, dass das Stammverzeichnis, das in der Nginx-Konfiguration verwendet werden soll, /var/www/html/kbin/public/ ist.

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden, nachdem Sie fertig sind.

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size  64;

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf hat die Syntax ok
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf-Test war erfolgreich

Starten Sie den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Schritt 15 - Supervisor installieren und konfigurieren

Supervisor ist ein Prozessmanager, und wir werden ihn als Prozessüberwacher für die Nachrichtenarbeiter (RabbitMQ) für Kbin verwenden. Der erste Schritt besteht darin, Supervisor zu installieren.

$ sudo apt install supervisor

Erstellen Sie die Datei /etc/supervisor/conf.d/messenger-worker.conf und öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/supervisor/conf.d/messenger-worker.conf

Fügen Sie den folgenden Code ein.

[program:messenger-kbin]
command=php /var/www/html/kbin/bin/console messenger:consume async --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

[program:messenger-ap]
command=php /var/www/html/kbin/bin/console messenger:consume async_ap --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Führen Sie die folgenden Befehle aus, um die neue Konfigurationsdatei erneut zu lesen und zu aktualisieren.

$ sudo supervisorctl reread
$ sudo supervisorctl update

Starten Sie alle Supervisor-Dienste.

$ sudo supervisorctl start all

Schritt 16 - Kbin aufrufen

Öffnen Sie die URL https://example.com, und Sie erhalten die folgende Kbin-Startseite.

Kbin-Startseite

Klicken Sie auf den Link Anmelden oben, um die Anmeldeseite zu öffnen.

Kbin-Anmeldeseite

Geben Sie die in Schritt 12 erstellten Anmeldedaten ein und klicken Sie auf die Schaltfläche Anmelden, um fortzufahren. Sie werden zurück zur Kbin-Startseite geleitet. Sie können Kbin von hier an verwenden.

Fazit

Damit endet unser Tutorial zur Installation des Reddit-ähnlichen Inhaltsaggregators Kbin auf einem Ubuntu 22.04-Server. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.