LoginSignup
2
1

More than 3 years have passed since last update.

Theiaを隠してみた

Last updated at Posted at 2019-11-08

せっかく入れたTheiaですが、クラウドやVPSにそのままで入れたのではセキュリティ上の問題になります。そこで、Apacheにリバースプロキシを設定して、Apache を経由してアクセスするように配置しました。そのうえで認証やSSLを設定して、セキュリティを確保する狙いです。
Apacheの導入に特別なことはないので、本稿では導入後の設定について記載します。

認証設定

まずは認証設定からです。今回はDigest認証にしました。

sites-available/000-default.conf

<Location "/">
  AuthType Digest
  AuthName "DigestAuth"
  AuthUserFile /etc/apache2/.digestauth
  Require valid-user
</Location>

リバースプロキシ設定

次にリバースプロキシ設定です。
Theiaはyarn theia start ~/workspaceのように起動させるものとします。そうするとデフォルトのホスト名localhost、ポート3000で起動します。
TheiaへアクセスするURLをhttp://example.com/theia/とします。TheiaはWebSocketを使った通信も行うため、それについての設定も追加します。

mods-available/proxy.conf

ProxyPass /theia/services/ ws://localhost:3000/services/
ProxyPassReverse /theia/services/ ws://localhost:3000/services/
ProxyPass /theia/ http://localhost:3000/
ProxyPassReverse /theia/ http://localhost:3000/

/theia/services/を/theia/よりも前に設定しないと、全部/theia/で設定した方に持っていかれてしまいます。

SSLの場合

SSLの導入自体はいくつか方法がありますが、今回はLet's Encryptを利用しました。
導入はコマンドで行い、設定ファイルも書き換えてくれます。その結果、以下のようになっていることを確認してください。

httpでアクセスしたときにhttpsにリダイレクトする。

sites-available/000-default.conf

RewriteEngine On
RewriteRule ^ https://%{SEVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

SSLの場合の認証設定

sites-available/000-default-le-ssl.conf
自動的に作られている設定ファイル中に、000-default.confと同じ認証設定が記載されているはずです。

<Location "/">
  AuthType Digest
  AuthName "DigestAuth"
  AuthUserFile /etc/apache2/.digestauth
  Require valid-user
</Location>

しかし、これでは終わらなかった...

これで、httpでアクセスしてもhttpsにリダイレクトされ、ID/PWの入力ダイアログも表示されて「よしよし」:relaxed:と思ったのですが。。。
PCだとその通り動くものの、iPadだとTheiaにアクセスしたあと、スピナーがくるくるするばかりで何も表示されませんでした。
そう、Theia導入のきっかけはiPadでの開発環境構築です!折れ気味の気持ちを抱えつつ、旅は続くのでした。:confounded:

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1