インストールガイド · 7 min read · Oct 21, 2025

Rocky Linux 9にNginxを使用してDiscourseフォーラムをインストールする方法

Discourseは、Ruby言語を使用して構築されたオープンソースのコミュニティディスカッションプラットフォームです。フォーラム、チャットソフトウェア、またはメーリングリストとして機能するように設計されています。他のプラットフォームと簡単に統合でき、プラグインを介して拡張できます。

このチュートリアルでは、Rocky Linux 9で実行されているサーバーにNginxサーバーを使用してDiscourseフォーラムをインストールする方法を学びます。

前提条件

  • 最低1GBのRAMと1コアCPUを持つRocky Linux 9を実行しているサーバー。Discourseのセットアップは、1GB以下のRAMを持つシステムで自動的にスワップパーティションを作成します。したがって、少なくとも2GBのRAMを持つシステムにインストールすることをお勧めします。
  • sudo権限を持つ非ルートユーザー。
  • サーバーを指すドメイン名(discourse.example.com)。
  • すべてが更新されています。 $ sudo dnf update
  • システムに必要なパッケージがいくつかあります。 $ sudo dnf install wget curl nano unzip yum-utils -y これらのパッケージのいくつかは、すでにシステムにインストールされている可能性があります。

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

最初のステップは、ファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用しています。ファイアウォールの状態を確認します。

$ sudo firewall-cmd --state
running

ファイアウォールは異なるゾーンで機能し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートをリストします。

$ sudo firewall-cmd --permanent --list-services

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

cockpit dhcpv6-client ssh

Discourseは機能するためにHTTPおよびHTTPSポートが必要です。それらを開きます。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

アプリケーションが他のインスタンスに連絡するため、マスカレードを追加します。

$ sudo firewall-cmd --permanent --add-masquerade

変更を適用するためにファイアウォールを再読み込みします。

$ sudo firewall-cmd --reload

再度すべてのサービスをリストします。

$ sudo firewall-cmd --permanent --list-services

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

cockpit dhcpv6-client http https ssh

SELinuxの設定

SELinuxのアクセスポリシーにより、ポートを開いてもDiscourseにはアクセスできません。ネットワーク接続を許可するようにSELinuxを設定します。

$ sudo setsebool -P httpd_can_network_connect 1

ステップ2 - Gitのインストール

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

$ sudo dnf install git

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

$ git --version
git version 2.31.1

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

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

ステップ3 - Dockerのインストール

Rocky Linuxには古いバージョンのDockerが付属しています。最新バージョンをインストールするには、まず公式のDockerリポジトリをインストールします。

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

最新バージョンのDockerをインストールします。

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Dockerをインストールしようとすると、次のエラーが表示されることがあります。

ror: 
 Problem: problem with installed package buildah-1:1.26.2-1.el9_0.x86_64
  - package buildah-1:1.26.2-1.el9_0.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package containerd.io-1.6.9-3.1.el9.x86_64 conflicts with runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - package containerd.io-1.6.9-3.1.el9.x86_64 obsoletes runc provided by runc-4:1.1.3-2.el9_0.x86_64
  - cannot install the best candidate for the job

上記のエラーが表示された場合は、次のコマンドを使用します。

$ sudo dnf install docker-ce docker-ce-cli containerd.io --allowerasing

Dockerデーモンを有効にして実行します。

$ sudo systemctl enable docker --now

実行中であることを確認します。

? docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2023-01-20 06:49:44 UTC; 6s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 99263 (dockerd)
      Tasks: 8
     Memory: 28.1M
        CPU: 210ms
     CGroup: /system.slice/docker.service
             ??99263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

デフォルトでは、Dockerはroot権限を必要とします。dockerコマンドを実行するたびにsudoを使用したくない場合は、ユーザー名をdockerグループに追加します。

$ sudo usermod -aG docker $(whoami)

この変更を有効にするには、サーバーからログアウトして同じユーザーとして再ログインする必要があります。または、次のコマンドを使用します。

$ su - ${USER}

ユーザーがDockerグループに追加されたことを確認します。

$ groups
navjot wheel docker

ステップ4 - Discourseのダウンロード

公式のDiscourse Docker GitHubリポジトリを/var/discourseディレクトリにクローンします。

$ sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse

Discourseディレクトリに移動します。

$ cd /var/discourse

containersディレクトリから書き込みおよび実行権限を削除します。

$ sudo chmod 700 containers

ステップ5 - Discourseの設定

サンプルのstandalone.ymlファイルをコピーして設定ファイルapp.ymlを作成します。

$ sudo cp samples/standalone.yml containers/app.yml

app.ymlを編集のために開きます。

$ sudo nano containers/app.yml

ドメインの設定

変数DISCOURSE_HOSTNAMEをフォーラムのために選択したドメイン名に設定します。ドメイン名がない場合は、ここでIPアドレスを使用できます。

DISCOURSE_HOSTNAME: 'discourse.example.com'

公開ポートの設定

"80:80"8080:80"に変更します。これにより、Discourseの外部HTTPポートが8080に変更されます。Nginxをポート80で使用するためです。行"443:443"をコメントアウトします。外部でSSLをインストールするためです。

expose:
  - "8080:80"   # http
  #- "443:443" # https

管理者のメールIDを設定する

管理者アカウントと開発者のメールを変数DISCOURSE_DEVELOPER_EMAILSを使用して設定します。このステップは必須です。そうしないと、フォーラムがブートストラップされません。

DISCOURSE_DEVELOPER_EMAILS: '[email protected],[email protected]'

SMTP設定の構成

使用しているトランザクションメールサービスに応じて、次の変数を記入します。

DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [email protected]
DISCOURSE_SMTP_PASSWORD: your_smtp_password
#DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (required by some providers)
DISCOURSE_NOTIFICATION_EMAIL: [email protected]    # (address to send notifications from)

メモリ設定(オプション)

サーバーのRAMが少ない場合は、Discourseのメモリフットプリントを減らすために、次の変数を適宜設定できます。

db_shared_buffers: '128MB'
UNICORN_WORKERS: 2

変数db_shared_buffersは通常、利用可能なメモリの25%に設定されます。

GeoLite2設定(オプション)

DiscourseでIPルックアップ機能を使用したい場合は、無料のMaxmind Geolite2アカウントにサインアップし、ライセンスキーを取得します。そのライセンスキーを次の変数の値として貼り付けます。

DISCOURSE_MAXMIND_LICENSE_KEY: your_maxmind_license_key

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

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

次のコマンドを実行してDiscourseコンテナをブートストラップします。

$ sudo ./launcher bootstrap app

Discourseアプリケーションを開始します。

$ sudo ./launcher start app

Discourseアプリケーションをテストするためにポートを開きます。

$ sudo firewall-cmd --permanent --add-port=8080/tcp

ブラウザでhttp://yourserver_IP:8080またはhttp://discourse.example.com:8080のURLにアクセスすると、フォーラムにアクセスできます。次の画面が表示されます。

Discourse Setup Home

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

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

公式のNginxリポジトリを作成するために、/etc/yum.repos.d/nginx.repoファイルを作成して開きます。

$ sudo nano /etc/yum.repos.d/nginx.repo

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

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

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

$ sudo dnf install nginx

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

$ nginx -v
nginx version: nginx/1.22.1

Nginxサーバーを有効にして開始します。

$ sudo systemctl enable nginx --now

サーバーの状態を確認します。

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Sun 2023-01-20 07:49:55 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 230797 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 230798 (nginx)
      Tasks: 3 (limit: 12355)
     Memory: 2.8M
        CPU: 13ms
     CGroup: /system.slice/nginx.service
             ??230798 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??230799 "nginx: worker process"
             ??230800 "nginx: worker process"

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

Let’s Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。

そのためにSnapdパッケージインストーラーを使用します。Rocky Linuxにはそれが付属していないため、Snapdインストーラーをインストールします。これにはEPELリポジトリが必要です。

$ sudo dnf install epel-release

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

$ sudo dnf install snapd

Snapサービスを有効にして開始します。

$ sudo systemctl enable snapd --now

Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認します。

$ sudo snap install core && sudo snap refresh core

Snapdが動作するために必要なリンクを作成します。

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

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

$ sudo snap install --classic certbot

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

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

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

$ certbot --version
certbot 1.32.2

SSL証明書を生成します。

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

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

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

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

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

$ sudo certbot renew --dry-run

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

ステップ9 - Nginxの設定

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

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

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

# HTTPSを強制する
server {
    listen       80; 
    listen      [::]:80;
    server_name  discourse.example.com;
    location / { return 301 https://$host$request_uri; }
}
server {
    listen       443 ssl http2;
    listen      [::]:443 ssl http2;
    server_name  discourse.example.com;

    access_log  /var/log/nginx/discourse.access.log;
    error_log   /var/log/nginx/discourse.error.log;
    
    # SSL
    ssl_certificate         /etc/letsencrypt/live/discourse.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/discourse.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/discourse.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:SSL:10m;
    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;
    resolver 8.8.8.8;
    
    http2_push_preload on; # HTTP/2サーバープッシュを有効にする
    # TLSv1.3の0-RTTを有効にする。リバースプロキシを使用する場合は、$ssl_early_dataを使用して
    # リプレイ攻撃を防ぎます。
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;
    
    # セキュリティ / XSS緩和ヘッダー
    # 注意: X-Frame-OptionsはwebOSアプリに問題を引き起こす可能性があります
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    add_header X-Early-Data $tls1_3_early_data;
    
    client_max_body_size 100m;
    
    location / {
        proxy_pass http://discourse.example.com:8080/;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }    
}

# このブロックはTLS v1.3のデバッグに役立ちます。必要に応じてこれを削除し、
# NGINXによって直接公開された$ssl_early_data変数を使用してください。
map $ssl_early_data $tls1_3_early_data {
    "~." $ssl_early_data;
    default "";
}

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

編集のために/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を入力します。

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

ステップ10 - Discourseインストールのアクセスと完了

ブラウザでURL https://discourse.example.comにアクセスすると、フォーラムにアクセスできます。次の画面が表示されます。

登録ボタンをクリックして進みます。app.ymlファイルに設定されたメールIDが自動的に入力されます。

Discourse Create Admin Account

登録ボタンをクリックして管理者アカウントを登録します。メール確認画面に進みます。

Discourse Email Confirm

SMTP設定が正しければ、アカウントをアクティブにするためのメールが届きます。メールからリンクをクリックしてアカウントの設定を完了します。

Discourse Confirmation Email

アクティブ化ボタンをクリックしてインストールを完了します。

Discourse Account Activate

Discourseのセットアップウィザード画面に移動します。フォーラム名、説明を入力し、言語を選択します。次へボタンをクリックして進みます。

Discourse Setup Wizard

次に、メンバーエクスペリエンスページに移動します。必要に応じてオプションを選択し、次へボタンをクリックして進みます。

Discourse Member Experience Setup

次に、セットアップ完了ページに移動します。さらに設定するか、ジャンプインしてフォーラムを使用開始するかを選択できます。これらの設定は、管理者設定を使用してまだ構成できます。

Discourse Site Ready

チュートリアルのためにさらに設定するを選択します。ロゴやバナーをフォーラムに設定するように求められます。次へボタンをクリックして進みます。

Discourse Configure Logo

次に、フォーラムのフロントエンドの基本スタイリングオプションを設定するように求められます。次へボタンをクリックして進みます。

Discourse Configure Look and Feel

次に、組織設定ページに移動します。適切な情報を入力します。

Discourse Organization Setup

ジャンプイン!ボタンをクリックして進みます。フォーラムのホームに移動します。あなたのDiscourseフォーラムは使用する準備が整いました。

Discourse Homepage

ステップ11 - Discourseコマンド

コマンドラインからDiscourse管理者をアクティブ化

アクティベーションメールが届かない場合は、コマンドラインから管理者アカウントをアクティブ化できます。

Discourseディレクトリに移動します。

$ cd /var/discourse

Discourseコンテナシェルに入ります。

$ sudo ./launcher enter app

Railsコマンドプロンプトにアクセスするためにrails cコマンドを入力します。

root@discourse-app:/var/www/discourse# rails c

次のプロンプトが表示されます。

[1] pry(main)> 

管理者アカウントを見つけるためのコマンドを入力します。

[1] pry(main)>  User.find_by_email("[email protected]")
=> #,
 moderator: false,
 title: nil,
 uploaded_avatar_id: nil,
 :

qを入力してプロンプトに戻り、次のコマンドを順番に入力します。

[2] pry(main)> user.approved = true
[3] pry(main)> user.save
[4] pry(main)> EmailToken.confirm(user.email_tokens.first.token)

exitを2回入力してシェルに戻ります。管理者アカウントがアクティブ化され、使用する準備が整いました。

Discourseのバックアップ

Discourseはデフォルトで7日ごとにデータベースをバックアップします。バックアップファイルは`/var/discourse/shared/standalone/backups/defaultディレクトリにあります。 $ ls /var/discourse/shared/standalone/backups/default -al total 1480 drwxr-xr-x. 2 navjot tape 4096 Jan 21 03:34 . drwxr-xr-x. 3 navjot tape 4096 Jan 20 12:01 .. -rw-r--r--. 1 navjot tape 1503748 Jan 21 03:34 howtoforge-forums-2023-01-21-033439-v20230119094939.tar.gz バックアップ設定は、Admin >> Settings >> Backupsセクションを訪れることで構成できます。Discourseは、バックアップをローカルに保存するか、Amazon S3スタイルのクラウドストレージに保存するオプションを提供します。 Discourse Backups Settings バックアップはAdmin >> Backupsページからダウンロードできます。復元はデフォルトで無効になっています。データベースを復元したい場合は、Admin >> Settings >> Backupsセクションから復元を許可オプションを有効にする必要があります。 Discourse Backups Page ### Discourseのアップグレード フォーラムをアップグレードするには、2つの方法のいずれかを使用できます。最初の方法は、管理者ダッシュボードを介してアップグレードすることです。2番目の方法は、コマンドラインを使用することです。 Discourseディレクトリに移動します。 $ cd /var/discourse GitHubから最新のファイルを取得してDiscourseインストールを更新します。 $ git pull Discourseを再構築します。 $ sudo ./launcher rebuild app app.ymlファイルに変更を加えるたびにDiscourseを再構築する必要があります。変更を加えた後は、上記のコマンドを実行します。これにより、古いコンテナが破棄され、新しいコンテナがブートストラップされ、起動します。 ### Discourseの停止 $ sudo ./launcher stop app ### Discourseのログを表示 $ sudo ./launcher logs app ブラウザでURL https://discourse.example.com/logs/にアクセスすることでも詳細なログを表示できます。似たような画面が表示されます。 Discourse Logs Page ### Rails / Unicornログ Ruby on Railsには非常に詳細なログがディスクに書き込まれます。さらに、WebサーバーのUnicornもディスクにログを記録します。これらはvar/discourse/shared/standalone/log/railsディレクトリで表示できます。 $ ls /var/discourse/shared/standalone/log/rails -al total 552 drwxr-xr-x. 2 navjot tape 4096 Jan 20 07:09 . drwxr-xr-x. 4 root root 4096 Jan 20 07:09 .. -rw-r--r--. 1 navjot tape 0 Jan 20 07:09 production_errors.log -rw-r--r--. 1 navjot tape 361031 Jan 21 11:46 production.log -rw-r--r--. 1 navjot tape 0 Jan 20 07:09 sidekiq.log -rw-r--r--. 1 navjot tape 60919 Jan 20 08:42 unicorn.stderr.log -rw-r--r--. 1 navjot tape 119403 Jan 21 03:34 unicorn.stdout.log ### Nginxログ DiscourseはDockerコンテナ内でNginxサーバーを実行します。次の場所でログを表示できます。 $ ls /var/discourse/shared/standalone/log/var-log/nginx -al total 1852 drwxr-xr-x. 2 33 tape 4096 Jan 20 07:39 . drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 .. -rw-r--r--. 1 33 tape 1878744 Jan 21 12:18 access.log -rw-r--r--. 1 33 tape 1017 Jan 20 07:45 error.log ### Redisログ Redisデータベースサーバーのログは次の場所で取得できます。最新のログエントリはcurrentファイルにあります。 $ ls /var/discourse/shared/standalone/log/var-log/redis -al total 140 drwxr-xr-x. 2 root root 4096 Jan 20 07:39 . drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 .. -rw-r--r--. 1 root root 127002 Jan 21 12:17 current -rw-------. 1 root root 0 Jan 20 07:39 lock ### PostgreSQLログ PostgreSQLデータベースのログは次の場所で表示できます。 ls /var/discourse/shared/standalone/log/var-log/postgres -al total 20 drwxr-xr-x. 2 root root 4096 Jan 20 07:39 . drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 .. -rw-r--r--. 1 root root 11400 Jan 21 03:34 current -rw-------. 1 root root 0 Jan 20 07:39 lock 最新のエントリは、そのディレクトリのcurrentファイルにあります。 残りは/var/discourse/shared/standalone/log/var-log自体に見つかります。 ls /var/discourse/shared/standalone/log/var-log -al total 100 drwxrwxr-x. 5 root adm 4096 Jan 21 08:04 . drwxr-xr-x. 4 root root 4096 Jan 20 07:09 .. -rw-r--r--. 1 root adm 40943 Jan 21 12:17 auth.log -rw-r--r--. 1 root adm 0 Jan 20 08:41 kern.log -rw-r-----. 1 root adm 750 Jan 21 08:04 messages drwxr-xr-x. 2 33 tape 4096 Jan 20 07:39 nginx drwxr-xr-x. 2 root root 4096 Jan 20 07:39 postgres drwxr-xr-x. 2 root root 4096 Jan 20 07:39 redis -rw-r--r--. 1 root adm 23041 Jan 21 12:17 syslog -rw-r-----. 1 root adm 70 Jan 21 08:04 user.log ## 結論 これでチュートリアルは終了です。Rocky Linux 9サーバー上でNginxプロキシWebサーバーの背後にDockerを使用してDiscourseフォーラムをインストールしました。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

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

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