Ghost でブログを始める

Ghost でブログを始める

なぜ、Ghost にしたのか?

一言でいうと、モダンだったからです。

自分の場合、とりあえずブログをはじめたものの中々続かないという典型的なパターンを経験していました。自分が書きたいと思えるブログサービスがなく、モチベーションが続いていない状態です。

自分がブログサービスに求めるものは以下でした。

  1. かっこいいデザイン!!
  2. Markdown で書ける!!

まず1を満たすものが中々なく、この時点ではてなブログやAmebaブログなどの日本製ブログのほとんどが脱落します。note は逆にシンプルすぎて味気がないという理不尽な理由で脱落しています。

1を突破したのがBloggerやMediumなど、比較的シンプルなデザインの海外製サービスです。なのですが、なんと大手にも関わらずMarkdownが使えないではないですか、、、。シンプルに絶望しました。

王道のWordPressも試してみたのですが、1記事書いて更新が止まりました。無料テーマで良さげなものがなかったことと、エディがが重く使いづらいと感じてしまいました。

エンジニアならQiitaがあるではないかという声が聞こえてきますが、Qiitaは技術系の記事に特化しているイメージがあり、個人的なブログとは棲み分けをしようと思いました。この記事を書いていながらも、こんなポエムはQiitqには投稿しづらいなと感じています。Qiitaでは何か有益なものを発信しなければという圧を勝手に感じています。

そんなこんなで理想の無料ブログサービスという砂漠を歩いていたところ、知人から教えてもらったのがこのGhostです。どうやらモダンらしいとの触れ込みのもと触ってみると、デザインがきれい!! Markdwonで書ける!! とまさに求めていたものがすべてそろっていました。この先の人生をこのブログサービスとともに生きていくと決めました。

それほど自分にとっては「いかに楽しく書けるか?書いていて楽しいか?」が重要なんだなと気づきました。

Ghost の始め方

公式ドキュメトにすべて載っています。

Ghost Developer Docs - Introduction
Ghost is an open source, professional publishing platform built on a modern Node.js technology stack — designed for teams who need power, flexibility and performance.

すごい、リンクを貼り付けただけで執筆中でもサイトをプレビュー表示してくれる(圧倒的ブログ初心者)。これがGhostの力、、、シンプルに書いていて楽しいですね。他のブログサービスでもできるところはあるのでしょうが、素直に感動しました。

公式ドキュメトを読めといえばそれまでなのですが、いくつか選択肢があるので自分がどれを選んだのかを書いていきます。

自分が選んだホスティングサービス

Ghost実際に利用するには、サーバーを建てる必要があります。

公式ドキュメントには、クラウドホスティングとして3つが記載されています。

  1. Ghost(Pro)
  2. Digital Ocean
  3. Linode
How to install Ghost, the official guide
Everything you need to know about working with the Ghost professional publishing platform.

1は公式のホスティングサービスです。しかし、最低でも9$/月からと少々高いのがネックです。

2と3ははじめて知ったのですが、AWSやGCPのようなクラウドホスティングサービスのようですね。どちらも5$/月からで利用開始できます。ざっくりいうと、2のDigital Oceanの方がコンソールの設定が簡単なかわりに自由度が狭く、3のLinodeの方がコンソールの設定が複雑なかわりに自由度が高いとのことです。

自分は3を選択しました。設定が複雑といってもAWSやGCPと大差ないだろうという予想と、Digital Oceanは日本リージョンを選択できないので遅延性を気にしての選択です。

GCP でセルフホスティングという第4の選択肢

しかし、当初はGCPでセルフホスティングをしようと考えていました。GCEでコンテナサーバーを建て、Cloud SQL(MySQL)にデータを保存し、Cloud Storage に画像を保存するという構成です。データを可用性の高いストレージに保存し、万が一サーバーがダウンしてもデータを保護する戦略です。

MySQLにデータを保存まではローカルで確認できたのですが、後半のCloud Storageへの保存が実現できず、、、。時間がかかりすぎたので断念となりました。

Cloud Storage に保存する方法はGhostのデフォルト機能にはなく、プラグインを作成して組み込む必要があります。幸い先人でGithubに公開している人がいるのですが、メンテナンスされておらず動かないという状況でした。

Configuration - Adapt your publication to suit your needs
Find out how to configure your Ghost publication or override Ghost’s default behaviour with robust config options, including mail, storage, scheduling and more!

自分で再実装しようとコードを書いてみました。しかしnpmパッケージ開発が初心者過ぎてIntelliJのハイライトが効かず、投げ捨てました😇

他にもAWS S3などのプラグインが公開されていますが、ほとんど更新が数年前で止まっています。これからGhostを始めようと考えているつよつよエンジニアの方、全世界のクラウドデプロイ待望者があなたのコミットをお待ちしています。

ブログのドメインとサーバーのIPアドレスを紐付ける

上記で公式ドキュメントにすべて載っていると書きましたが、1点だけ載っていない箇所があります。取得したドメインとIPアドレスの紐付けです。

ドメインの取得方法は割愛します。自分の利用経験があるところでいうと、お名前.comあたりが無難でしょうか。今回は既にAWS Route 53で取得していたので、自分はそちらを流用しました。

ドメインを取得する|ドメイン取るならお名前.com
ドメイン取得の手順をご紹介。お名前.comはドメイン登録実績2700万件を超える国内最大級の公式ドメイン登録サービスです。人気の「.com」「.net」「.jp」や企業向け「.co.jp」「.inc」など580種類以上の中からドメインを取得することができます。

ドメインが取れたら、やることが2つあります。

  1. DNSのAレコードの設定
  2. GhostプログラムでブログのURLを設定

1はドメインを取得したサービスによって設定方法が変わります。お名前.comの場合でいうと、「ホスト名」は取得したドメイン名(example.com など)をそのままサイトのドメイン名にしたければ、空白でよさそうですね。

DNS関連機能の設定:DNSレコード設定|お名前.com Navi ガイド|ドメイン取るならお名前.com
お名前.com Naviへのログイン方法やログインに必要なID・パスワードの再発行方法、ドメイン移管、DNSレコードの設定、レンタルサーバーの申し込みなど、各種手続き方法をご確認いただけます。

「VALUE」には、ホスティングサービスで建てたサーバーのIPアドレスを設定します。これも利用したホスティングサービスによって確認方法が異なるので、詳しくは調べてみてください。

2のGhostでのブログURLの設定は、公式ドキュメトに書かれている以下の部分のことです。

Blog URL
Enter the exact URL your publication will be available at and include the protocol for HTTP or HTTPS. For example, https://example.com. If you use HTTPS, Ghost-CLI will offer to set up SSL for you. Using IP addresses will cause errors.
How to install & setup Ghost on Ubuntu 16.04, 18.04 and 20.04
A full production install guide for how to install the Ghost professional publishing platform on a production server running Ubuntu 16.04, 18.04 or 20.04.

ここで https を含むURLを指定すればOKです。

あとは手順通りに進めればブログが公開できるはずです。自分の場合はAレコードの再設定から数分待つ必要がありましたが、問題はそれくらいでした。手順は多いものの、ドキュメントがしっかりしているので脳死で歩けることが便利ですね。

最後に

初めて本格的なブログ記事を書きましたが、意外とすらすらと書けました。ここまでで文字数が1000文字、時間は大体50分かかりました。文章を書くのは大変ですね。

最後に自己紹介を少し。自分は普段はフリーランスエンジニアとして働いています。休日はがっつり個人開発をしており、マインドマップ型のTodoアプリを開発しています。Twitterで開発過程を発信しているので、よかったら見てください。いいねされると泣いて喜ぶと同時に、モチベが上がるのでリリース日が1日早くなります。

https://twitter.com/HitoroOhira