はじめに
自分でmisskeyサーバーを立てたいという方も多いと思います。その際にWebサーバーも必要になってくるのですが、Apacheで運用したいという方もいらっしゃると思います。しかし、検索してもnginxを使用した方法しか出てきません。なぜなら、そもそもmisskey公式がnginxでの運用を推奨しているからです。筆者は、いろいろな理由があってApacheから離れることができません。かといって両者を同時に立ち上げるのもなんかイヤです。そこで、この記事ではApacheを利用してmisskeyを運用する方法を紹介したいと思います。
前提条件
最低限の条件としては
- 「Ubuntu版Misskeyインストール方法詳説」でmisskeyサーバーを構築できること
- 独自ドメインを取得していてSSL証明書を取得できていること
の2つです。
ちなみに、筆者の環境を紹介しますと、
- Ubuntu 22.04.5 LTS
- Apache 2.4.52
- mysql 8.0.39
- php 8.3.12
という、なんとも典型的なLAMP環境です。
構築方法
まずは、「Ubuntu版Misskeyインストール方法詳説」に沿ってインストール作業を進めてください。ただし、nginxは使用しませんのでnginxに関する作業はすべてすっ飛ばして問題ありません。代わりにApacheの設定をすることにします。
以下、Apacheの設定ファイルの例です。
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /path/to/misskey
ServerName example.com
ErrorLog /var/log/apache2/example.com_error.log
CustomLog /var/log/apache2/example.com.log combined
<directory /path/to/misskey>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all
</directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
/path/to/misskey はmisskeyをインストールした場所に、example.comは、自分のドメイン名に置き換えてください。
この辺は一般的なサイトの設定となんら変わりありませんね。この設定を反映させてやると、”https://example.com:3000/” でmisskeyを表示することができます。ただ、これだと毎回”:3000″が必要になってしまいかっこ悪いですね。それに、URLの表記名が統一できません。
そこで、リバースプロキシを使用することにします。Apacheでリバースプロキシを使用できるようにするには、以下のモジュールが必要です。
- mod_proxy
- mod_proxy_http
- mod_headers
これらのモジュールをインストールするために、以下のコマンドを実行してください。
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
その後、Apacheを再起動します。
sudo systemctl restart apache2
そして、先ほどの設定ファイルに以下の設定を追加してください。
<Proxy *>
Require all granted
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:3000/ keepalive=On
ProxyPassReverse / http://localhost:3000/
RequestHeader set X-Forwarded-Proto "https"
そして再びApacheを再起動して設定を反映させてやります。
これで、”https://example.com/”でmisskeyにアクセスできるようになります。
めでたしめでたし。