Strapi Installation · 11 min read · Oct 19, 2025

So installieren Sie Strapi CMS auf Ubuntu 22.04

Strapi ist ein Open-Source, headless Content Management System (CMS), das mit JavaScript erstellt wurde. Wie andere headless CMS kommt Strapi nicht mit einem Frontend aus der Box. Es verwendet eine API für sein Frontend, sodass Sie die Website mit beliebten Frameworks wie React und Next.js erstellen können. Basierend auf einem Plug-in-System ist Strapi ein flexibles CMS, dessen Admin-Panel und API erweiterbar sind - und dessen jeder Teil an jeden Anwendungsfall anpassbar ist. Strapi verfügt auch über ein integriertes Benutzersystem, um im Detail zu verwalten, auf was die Administratoren und Endbenutzer Zugriff haben.

In diesem Tutorial lernen Sie, wie Sie die Community-Version von Strapi CMS auf einem Ubuntu 22.04-Server installieren, zusammen mit Nginx als Reverse-Proxy-Server.

Voraussetzungen

  • Ein Server, der Ubuntu 22.04 ausführt.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Ein vollqualifizierter Domainname (FQDN) wie strapi.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 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.

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 sollten die folgende Ausgabe erhalten.

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 - PostgreSQL installieren und konfigurieren

Strapi funktioniert mit PostgreSQL 11 und höher. Ubuntu 22.04 wird standardmäßig mit PostgreSQL 14 ausgeliefert. Wir werden PostgreSQL 15 für unser Tutorial 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 Wed 2022-12-28 18:03:03 UTC; 17s ago
   Main PID: 4119 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Dec 28 18:03:03 strapi systemd[1]: Starting PostgreSQL RDBMS...
Dec 28 18:03:03 strapi 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 Strapi-Datenbank.

postgres=# CREATE DATABASE strapidb;

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

postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';

Ändern Sie den Datenbankbesitzer in den Strapi-Benutzer.

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

Verlassen Sie die Shell.

postgres-# \q

Überprüfen Sie, ob Ihre Anmeldeinformationen funktionieren.

$ psql --username strapiuser --password --host localhost strapidb
Password:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL-Verbindung (Protokoll: TLSv1.3, Chiffre: TLS_AES_256_GCM_SHA384, Bits: 256, Kompression: aus)
Geben Sie "help" für Hilfe ein.

strapidb=>

Verlassen Sie die Shell, indem Sie \q eingeben.

Schritt 3 - Node.js 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.

Laden Sie den Node v18-Installer von Nodesource herunter.

$ curl -sL https://deb.nodesource.com/setup_18.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.12.1

Löschen Sie die Installationsdatei.

$ rm nodesource_setup.sh

Schritt 4 - Strapi installieren

Führen Sie den folgenden Befehl aus, um Strapi zu installieren.

$ npx create-strapi-app@latest howtoforge-project
Need to install the following packages:
  [email protected]
Ok to proceed? (y) y

Geben Sie y ein, um mit der Installation fortzufahren. Als Nächstes werden Sie aufgefordert, den Installationstyp auszuwählen. Wählen Sie Benutzerdefiniert, um fortzufahren, und beantworten Sie die Fragen wie folgt.

? Wählen Sie Ihren Installationstyp Benutzerdefiniert (manuelle Einstellungen)
? Wählen Sie Ihre bevorzugte Sprache JavaScript
? Wählen Sie Ihren Standard-Datenbank-Client postgres
? Datenbankname: strapidb
? Host: 127.0.0.1
? Port: 5432
? Benutzername: strapiuser
? Passwort: Your_Password
? SSL-Verbindung aktivieren: Nein

Je nach Ihren Anforderungen können Sie entweder TypeScript oder JavaScript als Sprache für Strapi wählen.

Sobald die Installation abgeschlossen ist, sind Sie bereit, Ihr Strapi-Projekt zu erstellen.

Wechseln Sie in das Projektverzeichnis.

$ cd howtoforge-project

Führen Sie den folgenden Befehl aus, um das Projekt zu erstellen, einschließlich der Strapi Admin UI.

$ NODE_ENV=production npm run build

Starten Sie den Strapi-Server mit dem folgenden Befehl.

$ node ~/howtoforge-project/node_modules/.bin/strapi start

Ihre Anwendung sollte unter der URL http://:1337 sichtbar sein. Öffnen Sie jedoch zuerst den Port in der Firewall.

$ sudo ufw allow 1337

Sobald Sie die URL öffnen, sollten Sie den folgenden Bildschirm sehen.

Strapi CMS Home

Drücken Sie Strg + C im Terminal, um den Server zu stoppen. Sie sollten die Firewallregel löschen, da wir sie nicht mehr benötigen.

$ sudo ufw delete allow 1337

Schritt 5 - PM2 installieren und konfigurieren

Anstatt den Server manuell zu starten, können wir PM2 (Process Manager 2) verwenden, um den Prozess zu verwalten und einen systemd-Dienst dafür zu erstellen.

Wechseln Sie in das Home-Verzeichnis.

$ cd ~

Installieren Sie PM2.

$ sudo npm install pm2@latest -g

Erstellen und öffnen Sie die PM2-Konfigurationsdatei zur Bearbeitung.

$ sudo nano ecosystem.config.js

Fügen Sie den folgenden Inhalt in die Datei ein. Stellen Sie sicher, dass Sie den richtigen Verzeichnisnamen zusammen mit den Postgres-Anmeldeinformationen eingeben.

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: '/home/navjot/my-project',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost',
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'strapidb',
        DATABASE_USERNAME: 'strapiuser',
        DATABASE_PASSWORD: 'Your_Password',
      },
    },
  ],
};

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

Führen Sie Ihre Strapi-Instanz im Hintergrund mit PM2 aus.

$ pm2 start ecosystem.config.js

Sie erhalten die folgende Ausgabe.

                        -------------

__/\\\\\\\\\____/\\\____________/\\\____/\\\\\\\_____ 
 _\/\\\\/////////\\\_\/\\\\\________/\\\\\__/\\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\\\/__\/\\\///\\\/\\\/__\/\\\___________/\\\/___
    _\/\\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__

                          Runtime Edition

        PM2 ist ein Produktionsprozessmanager für Node.js-Anwendungen
                     mit einem integrierten Lastenausgleich.

                Starten und Daemonisieren Sie jede Anwendung:
                $ pm2 start app.js

                Lastenausgleich 4 Instanzen von api.js:
                $ pm2 start api.js -i 4

                Überwachen in der Produktion:
                $ pm2 monitor

                Lassen Sie pm2 beim Neustart des Servers automatisch starten:
                $ pm2 startup

                Um weiter zu gehen, schauen Sie sich an:
                http://pm2.io/

                        -------------

[PM2] PM2-Daemon mit pm2_home=/home/navjot/.pm2 wird gestartet
[PM2] PM2 erfolgreich daemonisiert
[PM2][WARN] Anwendungen strapi laufen nicht, starten...
[PM2] App [strapi] gestartet (1 Instanzen)
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id  ? name      ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu      ? mem      ? user
    ? watching ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0   ? strapi    ? default     ? N/A     ? fork    ? 4824     ? 0s     ? 0    ? online    ? 0%       ? 31.9mb   ? navjot   ? disabled ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Anwendungen, die unter PM2 ausgeführt werden, starten automatisch neu, wenn sie abstürzen oder beendet werden.

Erstellen Sie ein Startsystemd-Skript mit dem folgenden Befehl.

$ pm2 startup

Sie erhalten die folgende Ausgabe.

[PM2] Init-System gefunden: systemd
[PM2] Um das Startskript einzurichten, kopieren/einfügen Sie den folgenden Befehl:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Kopieren Sie den Befehl aus der obigen Ausgabe und führen Sie ihn aus.

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Speichern Sie die PM2-Prozessliste.

$ pm2 save

Ihr Strapi-Dienst läuft jetzt im Hintergrund im Produktionsmodus.

Schritt 6 - Nginx installieren

Ubuntu 22.04 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.22.1

Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Schritt 7 - 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. Stellen Sie sicher, 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 wird, 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 strapi.example.com

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

Generieren Sie ein Diffie-Hellman-Gruppen-Zertifikat.

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

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 8 - Nginx konfigurieren

Ö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.

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

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

Fügen Sie den folgenden Code ein.

server {
  # Leiten Sie alle http-Anfragen zu https um
  listen         80;
  listen         [::]:80;
  server_name    strapi.example.com;
  return 301     https://$host$request_uri;
}

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

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

  # TLS-Konfiguration
  ssl_certificate           /etc/letsencrypt/live/strapi.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/strapi.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/strapi.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP Stapling ---
  # Holen Sie sich OCSP-Datensätze von der URL im ssl_certificate und cachen Sie sie
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  location / {
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header        X-Forwarded-Host $http_host;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://127.0.0.1:1337;
  }
}

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 Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreich

Starten Sie den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Sie können jetzt auf Strapi CMS über die URL https://strapi.example.com zugreifen. Sie sehen die folgende Seite, die zeigt, dass Strapi im Produktionsmodus läuft.

Strapi Production Home

Besuchen Sie die URL https://strapi.example.com/admin, um einen Administratorbenutzer zu erstellen.

Strapi Admin User Create Page

Füllen Sie Ihre Admin-Daten aus und klicken Sie auf die Schaltfläche Loslegen, um zum Administrations-Dashboard-Bildschirm zu gelangen.

Strapi Admin Dashboard

Von hier aus können Sie mit der Erstellung von Inhalten in Strapi beginnen.

Schritt 9 - Strapi aktualisieren

Der erste Schritt beim Aktualisieren von Strapi besteht darin, den Server zu stoppen.

$ cd ~
$ pm2 stop ecosystem.config.js

Wechseln Sie in das Projektverzeichnis und öffnen Sie die Datei package.json zur Bearbeitung.

$ cd howtoforge-project
$ nano package.json

Aktualisieren Sie alle Versionsnummern der Strapi-Pakete auf die neueste stabile Strapi-Version. Sie können die neueste verfügbare Version von der GitHub-Release-Seite von Strapi abrufen.

"devDependencies": {},
  "dependencies": {
    "@strapi/strapi": "4.5.5",
    "@strapi/plugin-users-permissions": "4.5.5",
    "@strapi/plugin-i18n": "4.5.5",
    "pg": "8.6.0"
  },

Hier müssen Sie 4.5.5 auf die neueste stabile Version ändern. Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Installieren Sie die aktualisierte Version.

$ npm install

Bauen Sie das Administrationspanel neu.

$ NODE_ENV=production npm run build

Starten Sie den Server erneut.

$ cd ~
$ pm2 start ecosystem.config.js

Ihre Strapi-Installation ist jetzt aktualisiert und läuft.

Fazit

Damit endet unser Tutorial zur Installation von Strapi CMS auf einem Ubuntu 22.04-Server und Nginx als Reverse-Proxy-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.