CMSインストール · 5 min read · Oct 19, 2025

Ubuntu 22.04にStrapi CMSをインストールする方法

Strapiは、JavaScriptで構築されたオープンソースのヘッドレスコンテンツ管理システム(CMS)です。他のヘッドレスCMSと同様に、Strapiはデフォルトでフロントエンドを提供しません。APIを使用してフロントエンドを構築し、ReactやNext.jsなどの人気のあるフレームワークを使用してウェブサイトを構築できます。プラグインシステムに基づいているため、Strapiは柔軟なCMSであり、管理パネルとAPIは拡張可能であり、すべての部分は任意のユースケースに合わせてカスタマイズ可能です。Strapiには、管理者とエンドユーザーがアクセスできる内容を詳細に管理するための組み込みのユーザーシステムもあります。

このチュートリアルでは、Ubuntu 22.04サーバーにStrapi CMSのコミュニティ版をインストールする方法と、リバースプロキシサーバーとしてNginxを使用する方法を学びます。

前提条件

  • Ubuntu 22.04を実行しているサーバー。
  • sudo権限を持つ非ルートユーザー。
  • strapi.example.comのような完全修飾ドメイン名(FQDN)。
  • すべてが更新されていることを確認してください。 $ sudo apt update $ sudo apt upgrade
  • システムに必要なパッケージがいくつかあります。 $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y これらのパッケージのいくつかは、すでにシステムにインストールされている可能性があります。

ステップ1 - ファイアウォールの設定

最初のステップは、ファイアウォールを設定することです。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。

ファイアウォールが実行中かどうかを確認します。

$ sudo ufw status

次の出力が得られるはずです。

Status: inactive

SSHポートを許可して、ファイアウォールを有効にするときに現在の接続が切断されないようにします。

$ sudo ufw allow OpenSSH

HTTPおよびHTTPSポートも許可します。

$ sudo ufw allow http
$ sudo ufw allow https

ファイアウォールを有効にします。

$ sudo ufw enable
コマンドは既存のssh接続を中断する可能性があります。操作を続行しますか(y|n)? y
ファイアウォールはアクティブで、システム起動時に有効になっています

再度ファイアウォールの状態を確認します。

$ sudo ufw status

同様の出力が表示されるはずです。

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)

ステップ2 - PostgreSQLのインストールと設定

StrapiはPostgreSQL 11以上で動作します。Ubuntu 22.04にはデフォルトでPostgreSQL 14が付属しています。チュートリアルではPostgreSQL 15を使用します。

PostgreSQL GPGキーを追加するために次のコマンドを実行します。

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

APTリポジトリをソースリストに追加します。

$ 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'

システムリポジトリを更新します。

$ sudo apt update

次に、以下のコマンドを使用してPostgreSQLをインストールできます。

$ sudo apt install postgresql postgresql-contrib

postgresql-contribパッケージには、いくつかの追加ユーティリティが含まれています。

PostgreSQLサービスの状態を確認します。

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

サービスがデフォルトで有効になって実行されていることが確認できます。

PostgreSQLシェルを起動します。

$ sudo -i -u postgres psql

Strapiデータベースを作成します。

postgres=# CREATE DATABASE strapidb;

Strapiユーザーを作成し、強力なパスワードを選択します。

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

データベースの所有者をStrapiユーザーに変更します。

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

シェルを終了します。

postgres-# \q

資格情報が機能することを確認します。

$ psql --username strapiuser --password --host localhost strapidb
Password:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

strapidb=>

\qと入力してシェルを終了します。

ステップ3 - Node.jsのインストール

Ubuntu 22.04には古いNode v12が付属しています。このチュートリアル執筆時点での最新のLTSバージョンであるNode v18をインストールします。

NodesourceからNode v18インストーラーを取得します。

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

インストーラースクリプトを実行します。

$ sudo bash nodesource_setup.sh

Node.jsをインストールします。

$ sudo apt install nodejs

Node.jsのバージョンを確認します。

$ node -v
v18.12.1

インストーラーファイルを削除します。

$ rm nodesource_setup.sh

ステップ4 - Strapiのインストール

次のコマンドを実行してStrapiをインストールします。

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

インストールを続行するにはyを入力します。次に、インストールタイプを選択するように求められます。カスタムを選択して、次のように質問に答えます。

? Choose your installation type Custom (manual settings)
? Choose your preferred language JavaScript
? Choose your default database client postgres
? Database name: strapidb
? Host: 127.0.0.1
? Port: 5432
? Username: strapiuser
? Password: Your_Password
? Enable SSL connection: No

要件に応じて、Strapiの言語としてTypeScriptまたはJavaScriptを選択できます。

インストールが完了すると、Strapiプロジェクトを構築する準備が整います。

プロジェクトディレクトリに移動します。

$ cd howtoforge-project

次のコマンドを実行して、Strapi管理UIを含むプロジェクトをビルドします。

$ NODE_ENV=production npm run build

次のコマンドを使用してStrapiサーバーを起動します。

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

アプリケーションはURL http://:1337 で表示されるはずです。しかし、最初にファイアウォールでポートを開く必要があります。

$ sudo ufw allow 1337

URLを開くと、次の画面が表示されるはずです。

Strapi CMS Home

ターミナルでCtrl + Cを押してサーバーを停止します。ファイアウォールルールを削除する必要があります。なぜなら、必要なくなるからです。

$ sudo ufw delete allow 1337

ステップ5 - PM2のインストールと設定

サーバーを手動で起動する代わりに、PM2(Process Manager 2)を使用してプロセスを管理し、同じためのsystemdサービスを作成できます。

ホームディレクトリに移動します。

$ cd ~

PM2をインストールします。

$ sudo npm install pm2@latest -g

PM2設定ファイルを作成して編集のために開きます。

$ sudo nano ecosystem.config.js

ファイルに次の内容を貼り付けます。Postgres資格情報とともに正しいディレクトリ名を入力してください。

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',
      },
    },
  ],
};

ファイルを保存するには、Ctrl + Xを押し、完了したらYと入力します。

PM2を使用してバックグラウンドでStrapiインスタンスを実行します。

$ pm2 start ecosystem.config.js

次の出力が得られます。

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

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


                          Runtime Edition

        PM2はNode.jsアプリケーションのためのプロダクションプロセスマネージャーで、
                     組み込みのロードバランサーを備えています。

                いかなるアプリケーションも起動してデーモン化できます:
                $ pm2 start app.js

                api.jsの4インスタンスをロードバランスします:
                $ pm2 start api.js -i 4

                プロダクションで監視します:
                $ pm2 monitor

                サーバー再起動時にpm2を自動起動させます:
                $ pm2 startup

                さらに詳しくは:
                http://pm2.io/


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

[PM2] PM2デーモンをpm2_home=/home/navjot/.pm2で生成しています
[PM2] PM2が正常にデーモン化されました
[PM2][WARN] アプリケーションstrapiは実行されていません、起動します...
[PM2] アプリ [strapi] が起動しました (1インスタンス)
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 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 ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

PM2で実行されているアプリケーションは、クラッシュしたり終了した場合に自動的に再起動します。

次のコマンドを使用してスタートアップsystemdスクリプトを作成します。

$ pm2 startup

次の出力が得られます。

[PM2] Init Systemが見つかりました: systemd
[PM2] スタートアップスクリプトを設定するには、次のコマンドをコピー/ペーストしてください:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

上記の出力からコマンドをコピーして実行します。

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

PM2プロセスリストを保存します。

$ pm2 save

あなたのStrapiサービスは、現在バックグラウンドでプロダクションモードで実行されています。

ステップ6 - Nginxのインストール

Ubuntu 22.04には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。

Nginxの署名キーをインポートします。

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

Nginxの安定版のリポジトリを追加します。

$ 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

システムリポジトリを更新します。

$ sudo apt update

Nginxをインストールします。

$ sudo apt install nginx

インストールを確認します。

$ nginx -v
nginx version: nginx/1.22.1

Nginxサーバーを起動します。

$ sudo systemctl start nginx

ステップ7 - SSLのインストール

SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得できます。Snapdバージョンを使用します。

Ubuntu 22.04にはデフォルトでSnapdがインストールされています。次のコマンドを実行して、Snapdのバージョンが最新であることを確認します。

$ sudo snap install core
$ sudo snap refresh core

Certbotをインストールします。

$ sudo snap install --classic certbot

次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリで実行されるようにシンボリックリンクを作成します。

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

次のコマンドを実行してSSL証明書を生成します。

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

上記のコマンドは、サーバーの/etc/letsencrypt/live/strapi.example.comディレクトリに証明書をダウンロードします。

Diffie-Hellmanグループ証明書を生成します。

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

SSL更新が正常に機能しているかどうかを確認するために、プロセスのドライランを行います。

$ sudo certbot renew --dry-run

エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。

ステップ8 - Nginxの設定

/etc/nginx/nginx.confファイルを編集のために開きます。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。

server_names_hash_bucket_size  64;

ファイルを保存するには、Ctrl + Xを押し、完了したらYと入力します。

/etc/nginx/conf.d/strapi.confファイルを作成して編集のために開きます。

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

次のコードを貼り付けます。

server {
  # HTTPリクエストをHTTPSにリダイレクト
  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設定
  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スタプリング ---
  # ssl_certificateのURLからOCSPレコードを取得し、キャッシュします
  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;
  }
}

ファイルを保存するには、Ctrl + Xを押し、完了したらYと入力します。

Nginx設定ファイルの構文を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサービスを再起動します。

$ sudo systemctl restart nginx

これで、URL https://strapi.example.comを介してStrapi CMSにアクセスできるようになりました。次のページが表示され、Strapiがプロダクションモードで実行されていることが示されます。

Strapi Production Home

https://strapi.example.com/admin URLにアクセスして、管理者ユーザーを作成します。

Strapi Admin User Create Page

管理者の詳細を入力し、Let’s startボタンをクリックして管理者ダッシュボード画面に進みます。

Strapi Admin Dashboard

ここから、Strapiでコンテンツの作成を開始できます。

ステップ9 - Strapiのアップグレード

Strapiをアップグレードする最初のステップは、サーバーを停止することです。

$ cd ~
$ pm2 stop ecosystem.config.js

プロジェクトディレクトリに移動し、package.jsonファイルを編集のために開きます。

$ cd howtoforge-project
$ nano package.json

すべてのStrapiパッケージのバージョン番号を最新の安定版Strapiバージョンにアップグレードします。最新の利用可能なバージョンはStrapiのGitHubリリースページから取得できます。

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

ここで、4.5.5を最新の安定版に変更する必要があります。ファイルを保存するには、Ctrl + Xを押し、完了したらYと入力します。

アップグレードされたバージョンをインストールします。

$ npm install

管理パネルを再ビルドします。

$ NODE_ENV=production npm run build

サーバーを再起動します。

$ cd ~
$ pm2 start ecosystem.config.js

あなたのStrapiインストールは現在アップグレードされ、実行中です。

結論

これで、Ubuntu 22.04サーバーにStrapi CMSをインストールし、Nginxをリバースプロキシサーバーとして使用する方法に関するチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。