GhostでCloudinaryを使う
Ghostでは通常はサーバ内に画像ファイルが格納されるが、今後別のブログエンジンに移行する可能性などを考えると、Cloudinaryなど外部の画像管理サービスを使うのが便利。 Cloudinaryに画像をアップして、URLをGhostブログ記事に貼り付けることももちろんできるが、やると結構面倒なので、Ghost記事に直接ドラッグ&ドロップしてCloudinaryにアップロードできるようにしたい。
Ghost + Cloudinary統合
Ghost公式に記事がある。 この記事の通り、Ghost-Storage-Cloudinaryを利用する。 これを導入すると、記事編集中にドラッグ&ドロップで直接Cloudinaryに画像をアップロードしてURLを貼り付けてくれる。 各記事やブログトップのカバー画像もCloudinaryにアップロードして参照される。
インストールの前に注意
Ghost-Storage-Cloudinaryをインストールすると、今までの内部ストレージは使えなくなる。 URLが勝手にリダイレクトされて404になる。 既存の記事内のURLやカバー画像も含めてすべて指定し直しになるので注意。 これはもしかすると、Ghost 2.x系にインストールした際のバグかもしれない。
Ghost-Storage-Cloudinaryのインストール
Ghostバージョン2.xではテストしてないとのことだが、2.12.0で動作することを確認している。 インストールにはgitとnpmを使う方法があり、どっちでもいいが、なんとなくパッケージ管理できそうなのでnpmでインストールした。
Ghostのルートディレクトリに行き、モジュールをインストールする。
$ npm install --production --no-save ghost-storage-cloudinary
$ mv node_modules/ghost-storage-cloudinary current/core/server/adapters/storage
設定ファイル
Ghostルートディレクトリのconfig.production.json
に下記記述を追加する。
"storage": {
"active": "ghost-storage-cloudinary",
"ghost-storage-cloudinary": {
"useDatedFolder": false,
"auth": {
"cloud_name": "",
"api_key": "",
"api_secret": ""
},
"upload": {
"use_filename": true,
"unique_filename": false,
"overwrite": true,
"folder": "blog-images",
"tags": [
"blog"
]
},
"fetch": {
"quality": "auto",
"secure": true,
"cdn_subdomain": true
}
}
}
auth
に記載すべき内容は、CloudinaryのDashboardトップを見ればわかる。fetch
のsecure
をtrue
(画像URLにhttpsを指定)にしておかないと、各記事やブログトップのカバー画像が表示されない。upload
は好みに合わせて設定。
設定が終わったら多分Ghostを再起動するのがよさそう。 Ghostのルートディレクトリで下記コマンドを実行。
$ ghost restert