[小ネタ] EC2 で OSS の Cloud9 IDE を起動してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、AWS 事業本部の平木です!
ここ数日話題になっている AWS Cloud9 ですが、活用されるケースの多いサービスであったものの、
執筆時点では残念ながら新規アカウントでの作成に制限がかかっているとのことです。
とはいえ制限がかかっていようがなんだろうが Cloud9 を起動したいと思ったところ、
ふと Cloud9 はオープンソースとして提供されていたものというのを思い出し、EC2 に入れれば似た環境を作れるのではと思い、実際に環境を構築してみました。
今回はその導入手順をご紹介したいと思います。
やってみた
準備
環境はパブリック IP アドレスを付与した EC2(Amazon Linux 2023)を用意します。
後ほど接続する際に必要なため、セキュリティグループは 8080 ポートを開けてください。
必要なパッケージは、
- npm (バージョン 3 以降)
- make
- gcc
です。
ソースコードは GitHub 上にあるためそちらからクローンします。
まずは README に沿ってインストールを行います。
初めに Cloud9 SDK をインストールします。
git clone https://github.com/c9/core.git c9sdk
cd c9sdk
scripts/install-sdk.sh
ここでおそらく Amazon Linux 2023 を使うと Python2.7 を使用するようにエラーが出るため、Python2.7 をインストールします。
Python3 から 2.7 は以下で切り替えられます。
# 必要なパッケージをインストール
sudo dnf groupinstall "Development Tools" -y
sudo dnf install openssl-devel bzip2-devel libffi-devel -y
# Python 2.7 のソースコードをダウンロードしてインストール
cd /tmp
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar xzf Python-2.7.18.tgz
cd Python-2.7.18
./configure --enable-optimizations
sudo make altinstall
# Python 2.7 へのシンボリックリンクを作成:
sudo ln -sf /usr/local/bin/python2.7 /usr/bin/python2
sudo ln -sf /usr/local/bin/python2.7 /usr/bin/python
Python2.7 に切り替えられたら再度 scripts/install-sdk.sh
を実行します。
これで本来は準備完了ですが、ここでサービスを起動してしまうと起動はしますがサービス内で接続エラーが発生します。
原因としては、nvm と node v10 をインストールする必要があるためなのでインストールしておきます。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
nvm install v10
これで本当に準備完了です。
使ってみる
サービス起動時のコマンドは以下です。
node server.js -p 8080 -l 0.0.0.0 -a <ユーザー名>:<パスワード> -w ~/<作業ディレクトリ>
(例)
node server.js -p 8080 -l 0.0.0.0 -a test:test -w ~/app
起動後、EC2 のパブリック IP アドレス宛に 8080 ポートでブラウザで繋ぎます。例)198.51.100.10:8080
ここで先ほど指定したユーザー名とパスワードを入力します。
すると無事、Cloud9 の画面に接続することができました。
操作感は AWS Cloud9 と似たような感じです。
下のスクリーンショットは今回インストールした Cloud9 IDE (左)と AWS Cloud9 (右)の比較画像です。
参考
おわりに
今回は原点に帰り、Cloud9 をセルフホストしてみました。
冒頭にも記載している通り、Cloud9 のソースコードは現在メンテナンスされておらず
脆弱性のあるパッケージを使用している恐れなどがありますので実運用で使用することは非推奨です。
AWS Cloud9 のように自動停止されなかったり事前のセットアップなどは必要ですがどこか懐かしさを感じることが出来ました。
使いどころはないかもしれないですが、興味本位で使用してみたい方は参考にしていただければと思います。