見出し画像

【Misskey】apacheでリバースプロキシを組んでみた

記事を書く前に。


そもそもにお前…記事書くって言っておいて1年放置してんじゃねぇか!
と言うツッコミは大いに受けます。ほんとうにスミマセンデシタ。。。

…ということで、今回はタイトル通り2023年のTwitter(意地でもXと言わない) API制限問題をきっかけに構築した、Misskey鯖「たかのりすきー」を建立するにあたり、自宅サーバで発生したリバースプロキシ絡みのあれこれを
記事にしようと思った次第です。

そもそもの前提。


しの家(Choro's.NET/Toppu.jp)では各種システムを構築・運用していますが、インターネット回線はあくまで1回線(auひかり10G)しかないので
IPv4のグローバルIPは1つしかありません。
もちろんIPv6で運用する事も可能ですが、まだまだIPv6オンリーでは不都合もあります。

そのため、1台リバースプロキシとしてRHEL8.8+apache+Let's Encryptの
構成で構築し、その配下に各種システムをぶら下げて運用しています。

Misskeyを構築してみた


Misskeyの構築自体は別記事として掲載しますのでお時間を下さい。
(とか言ってまた時間かかりそうな気がする…ゴメンナサイ

なお、Misskey Hubではnginxでのリバースプロキシ運用が推奨されています
(nginx向けのconf設定例はちゃんと用意されている)
しかしながら先述の通り、我が家のリバースプロキシはapacheなので
ポート競合などの問題もあり、apacheでリバースプロキシを構築することに。

apacheの設定について


前提として

・takanoriskey.toppu.jpのSSL証明書はLet's Encrypt(certbot)で取得済み。
・Misskeyのリッスンポートは3000番(デフォルトのまま)
・ぶら下がってるMisskeyインスタンスの名前については
 リバースプロキシマシンの/etc/hostsに記載済み、もしくは名前解決が
 可能な状態であること(takanoriskey.toppu.internal)
・apacheに「mod_proxy」「mod_proxy_http」「mod_ssl」が組込済みで
 あること

takanoriskey.conf

<VirtualHost *:443>
  ServerName  takanoriskey.toppu.jp

  # ログ設定
  CustomLog ${APACHE_LOG_DIR}/takanoriskey_access.log rp_noauth_combined
  ErrorLog  ${APACHE_LOG_DIR}/takanoriskey_error.log
  LogLevel  info
  
  # SSL設定
  SSLEngine               On
  SSLCertificateFile      /etc/letsencrypt/live/takanoriskey.toppu.jp/cert.pem
  SSLCertificateKeyFile   /etc/letsencrypt/live/takanoriskey.toppu.jp/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/takanoriskey.toppu.jp/chain.pem
  
  # HTTP/2対応
  Protocols  h2

  # Rewrite設定
  RewriteEngine  On
  RewriteOptions inherit
  RewriteCond    %{HTTP:Connection} Upgrade   [NC]
  RewriteCond    %{HTTP:Upgrade}    websocket [NC]
  RewriteRule    ^/?(.*) "ws://takanoriskey.toppu.internal:3000/$1" [P,L]
 
  # Proxy設定
  ProxyPreserveHost On
  ProxyRequests     Off
  ProxyPass         / http://takanoriskey.toppu.internal:3000/ keepalive=on
  ProxyPassReverse  / http://takanoriskey.toppu.internal:3000/
  RequestHeader     set X-Forwarded-Proto "https"
</VirtualHost>

コレをリバースプロキシに設定して、下記コマンドを実行。
# systemctl reload httpd

現在はコレで連合もうまくできているようです。

今後やりたいこと(Misskey関連)


・データベースのメンテナンスを自動化
 (PostgreSQLなのでどんどん肥大化する)
・利用ユーザを増やしたい(営業しろ)

営業

toppu.jpでは西川貴教さんが好きな方を中心としたMisskey
「にしかわたかのりすきー」を運用しております。
西川さんに関すること以外でもOK!現在は公開状態になっていますので
気軽に登録していただけると管理者が喜びます!
https://takanoriskey.toppu.jp

参考


下記サイト様の情報を参考にさせて頂きました。多謝。


いいなと思ったら応援しよう!