X

A blog about Oracle Technology Network Japan

  • December 13, 2019

Oracle CloudとGhostで無料ブログを簡単開設

オラクルは9月に、Oracle Cloudの新しいプラン、「Always Free」を発表しました。これで開発者や学生は、Oracle Cloudを完全に無料で使ってみることができます。Oracle Cloudを支持する開発者かつエバンジェリストである私は、このプランの熱烈なファンです。というのも、私は当社のクラウド・プラットフォームに全幅の信頼を寄せており、多くの開発者がOracle Cloudを体験するチャンスを手にすれば、その使いやすさを体感し、自社のクラウドへのニーズを満たすために間違いなくOracle Cloudを選択するであろうことを知っているからです。私はこのところ、新しい無料プランの使い道をいくつか紹介してきました。この記事を読んだ後は、私の他の記事もチェックして、無料プランをすぐに使ってみてください!

本日の記事では、"Always Free" VMを1つ作成し、インターネット・アクセスができるように構成し、Docker(コンテナ管理用)、Ghost(Node.JSで記述された無料のブログ/CMSプラットフォーム。オープン・ソース)、Caddy Serverをインストールして、リバース・プロキシとして動作させ、TLS証明書を自動で管理し、新しいブログでHTTPS暗号化を使用できるようにします。複雑な手順はありません。この後のチュートリアルに従えば、15分であなたのブログもオンラインになるでしょう。

この後の手順は以下のようになっています。VMの作成方法をご存じの場合や、すでに作成している場合は、必要に応じて手順を飛ばしてください。

Always Free VMの作成

Oracle Cloudを初めて使う場合は、まず完全無料のアカウントにサインアップします。クレジット・カードを登録する必要がありますが、「Always Free」サービスを使い続けている限り、料金を請求されることは絶対にありません。無料アカウントを作成したらログインして、Oracle Cloudダッシュボードを開きます。このような画面です。

さあ、VMを作成しましょう。「Create a VM instance」をクリックしてください。

インスタンスに名前を付け、必要に応じてイメージ・ソースを変更します。この後のインストラクションはデフォルトOS(Oracle Linux)用です。デフォルトのままにしておくのがいいかもしれません。

必要に応じて、「Show Shape, Network, Storage Options」をクリックし、可用性ドメインとインスタンス・タイプの両方が'Always Free Eligible'であることを確認してください。

インスタンスのシェイプも同じです。「Always Free Eligible」オプションを選択してください。

「Assign a public IP address」にチェックを入れておかないと、Webを通してVMにアクセスできません。

次に、公開鍵ファイルを選択します。このファイルには関連付けられた秘密鍵があり、VMの作成後、VMへのアクセスに使用されます。

「Create」をクリックすると、インスタンスの詳細ページに移動します。VMのステータスは'Provisioning'になっています。

少し待つと、インスタンスは'Available'になります。VMに割り当てられているパブリックIPアドレスをコピーします。このアドレスは、チュートリアルを進めていくなかで必要になります。

これでVMの準備ができました。VMの作成時にアップロードした公開鍵に関連付けられている秘密鍵を使用して、マシンにSSH接続します。

Ghostをインストールする前に

Ghostをインストールする前に、いくつかの確認事項があります。この手順を省略すると、インストールできません。

ドメイン名レコード・セット

まずは、VMのパブリックIPアドレスを、ドメイン名に関連付けます。Caddyでリバース・プロキシを作成し、無料でそのまま使用できるHTTPSを取得します。これはLet’s Encryptを使用して、通信用のSSLを自動で保護してくれます。私の場合は、ghost.toddrsharp.comというURLを使用するため、AレコードをDNSホストで追加し、私のVMのIPアドレスを指定します。

ドメイン(またはサブドメイン)にVMのIPアドレスを指定するには、ご使用のホスティング・プロバイダの指示に従ってください。これで、VMにSSH接続し、先に進む準備ができました。

ファイアウォールとセキュリティ・リストの構成

ファイアウォールとセキュリティ・リストでいくつかのポートを開いて、GhostアプリケーションをWebに公開する必要があります。まず、Oracle Cloudのダッシュボードで、VMのセキュリティ・リストに受信ルールを追加します。VMの詳細ページで、サブネットをクリックします。

サブネットの詳細ページで、「Security Lists」をクリックします。

デフォルトのセキュリティ・リストをクリックして、ルールを編集します。

「Add Ingress Rule」をクリックし、 'Source CIDR' 0.0.0.0/0(すべてのIPアドレス)にポート80,443を開くルールを入力します。

Dockerのインストール

ここで、インスタンスにSSH接続し、インストール・プロセスを開始します。接続したら、sudo yum update -yを実行して、すべてを最新の状態にします。次に、Dockerをインストールします。

  yum-config-manager --enable ol7_addons
  yum install docker-engine
   
  systemctl start docker  
  systemctl enable docker  
view raw install-docker.sh hosted with ❤ by GitHub

 

次の手順に進む前に、以下のようにして、root以外のユーザーがDockerコマンドを実行できるようにします。

  groupadd docker
  service docker restart
  usermod -a -G docker opc

 

重要opcユーザーがsudoを使わずにDockerコマンドを実行できるようにするには、ログアウトしてからログインし直す必要があります。

必要であれば、こちらを実行してDockerインストールを確認できます。

docker run hello-world

Ghostのインストール

VMにディレクトリを作成します。これは、ブログ関係の構成を保存したり、コンテナ・データの永続保存用にDockerコンテナにマッピングしたりするのに使用します。

mkdir /home/opc/ghost

これでGhostをインストールできます。以下のコマンドを実行するだけです。

  docker run -d \
    --restart always \
    --name ghost-blog \
    -v /home/opc/ghost/content:/var/lib/ghost/content:z \
    -p 2368:2368 \
    -e url=https://ghost.toddrsharp.com \
    ghost
view raw install-ghost.sh hosted with ❤ by GitHub

 

ここでは、さまざまな引数を使ってdocker runを呼び出し、Docker Hubからghostイメージを実行しています(必要に応じて、run コマンドは実行前にイメージをpullします)。--restart alwaysを使うと、コンテナの終了時、またはDockerの再起動時(VMのリブートを含む)に、コンテナが毎回再起動するため、自分でサービスを作成する必要がありません。もちろんサービスを作成することもできますが、このアプリケーションではこのフラグがうまく機能します。コンテナの自動での起動について詳しく知りたい場合は、Dockerのドキュメントを参照してください。ここでは、VMの/home/opc/ghost/contentドライブを、Dockerコンテナの/var/lib/ghost/contentにマッピングしています。これで、コンテナが再起動しても、コンテンツとコンテナのSQLiteデータベースは保持されます。また、Ghostが実行されるポートであるポート2368を公開しています。コンテナがpullされて実行されたら、Caddyをインストールできます。途中でうまくいかなくなった場合、またはGhost Dockerコンテナの実行で問題が発生した場合は、Docker Hubのドキュメントを参照してください

Caddyのインストール

先に進む前に、VMのポート80と443で、ファイアウォール・ポートを開く必要があります。以下のようにします。

  sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
  sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
  sudo firewall-cmd —reload
view raw firewall.sh hosted with ❤ by GitHub

 

Caddyをインストールするには、再びDockerを使用します。今回も1つのコマンドで完了します。ただし、そのコマンドを実行する前に、/home/opc/ghost/CaddyfileでCaddyの構成ファイルを作成し、vimまたはnanoで編集します。このように編集して、URLを、先ほどVMに指定したドメイン名に変更します。

  https://your.domain.com {
      proxy / ghost-blog:2368 {
          transparent
      }
  }
view raw Caddyfile hosted with ❤ by GitHub

 

このファイルによって、Caddyはドメインのリバース・プロキシとして動作し、すべてのトラフィックをhttp://ghost-blog:2368にリダイレクトします。さあ、Caddyを実行してみましょう。

  docker run -d \
    --restart always 
    --link ghost-blog:ghost-blog \
    --name caddy \
    -p 80:80 \
    -p 443:443 \
    -v /home/opc/ghost/Caddyfile:/etc/Caddyfile:z \
    -v /home/opc/.caddy:/root/.caddy:z \
    abiosoft/caddy
view raw install-caddy.sh hosted with ❤ by GitHub

 

--linkフラグを使用して、Ghostコンテナに接続し、2つのコンテナ間でセキュアなトンネルを作成して、/etc/hostsファイルにエントリを追加し、ghost-blogをGhostコンテナのIPにマッピングします。VMボリュームをマウントしてCaddyfileを渡し、/home/opc/.caddyをマウントします。これで、CaddyがVMにTLS証明書を格納できるようになり、イメージが起動するたびに新しい証明書が生成されることがなくなります。このコマンドを実行すると、正しいTLS証明書が使われて、ドメインでブログが有効になります!

Ghostの構成

構成したドメインでブログにアクセスし、URLの末尾に/ghostを追加して管理セクションにアクセスし、アカウントを作成し、構成を完了します。

アカウントを作成してログインすると、ブログをカスタマイズして、コンテンツを作成できるようになります!私のブログhttps://ghost.toddrsharp.comをご覧いただき、ご自分のブログではGhostを使ってどんなことができるか、参考にしてみてください。

Photo by Ante Hamersmit on Unsplash

 

※本記事は、Todd Sharp (Developer Advocate)による”Stand Up A Free Blog In 15 Minutes With Ghost In The Oracle Cloud“を翻訳したものです。

 


AutonomousDatabaseを無期限 / 無料(Always Free)で使用可能になりました。

Cloudをまだお試しでない方は、無料トライアルをご利用下さい。

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.