All Projects → eexit → ghost-storage-cloudinary

eexit / ghost-storage-cloudinary

Licence: other
🚀 A fully-featured and deeply tested Cloudinary Ghost storage adapter

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to ghost-storage-cloudinary

ghost-on-heroku
One-button Heroku deploy for the Ghost 3.2.0 blogging platform.
Stars: ✭ 232 (+373.47%)
Mutual labels:  ghost, cloudinary, ghost-blog
undefined-ghost-theme
A minimal, Ghost 5.0-ready, membership-enabled starter theme for the Ghost blogging platform.
Stars: ✭ 76 (+55.1%)
Mutual labels:  ghost, ghost-blog
mention-ghost-theme
Mention theme for Ghost blogging platform, built by https://vanila.io
Stars: ✭ 69 (+40.82%)
Mutual labels:  ghost, ghost-blog
aesto
Free Ghost theme with membership support. Minimal content focused design with multi author supported.
Stars: ✭ 31 (-36.73%)
Mutual labels:  ghost, ghost-blog
Fizzy Theme
🥤A tasty blogging theme for Ghost.
Stars: ✭ 194 (+295.92%)
Mutual labels:  ghost, ghost-blog
Mnml Ghost Theme
A minimal, responsive, fast ghost blog theme with great typography. Comes with paid membership support, Disqus comments, syntax highlighting, and KaTeX for mathematics, and more.
Stars: ✭ 235 (+379.59%)
Mutual labels:  ghost, ghost-blog
Prometheus
🌈 A Clean And Modern Ghost Theme with Progressive Web Apps (PWA)
Stars: ✭ 94 (+91.84%)
Mutual labels:  ghost, ghost-blog
Ghost Matery2
这是又一个采用Material Design和响应式设计的漂亮、简洁且基于Ghost博客的新主题
Stars: ✭ 87 (+77.55%)
Mutual labels:  ghost, ghost-blog
ghost-oss-store
Ghost Aliyun OSS storage module.
Stars: ✭ 28 (-42.86%)
Mutual labels:  ghost, ghost-storage-adapter
docker-ghost
Docker File for Golden Ghost image
Stars: ✭ 16 (-67.35%)
Mutual labels:  ghost, ghost-blog
nomore
A minimal theme for Ghost Blog.
Stars: ✭ 18 (-63.27%)
Mutual labels:  ghost, ghost-blog
Setup Ghost Blog
Script to install your own Ghost blog, with Nginx and ModSecurity/Naxsi web application firewall. Supports multiple blogs.
Stars: ✭ 140 (+185.71%)
Mutual labels:  ghost, ghost-blog
Ghost Azure
Production ready Ghost for Azure 👻
Stars: ✭ 103 (+110.2%)
Mutual labels:  ghost, ghost-blog
Asgar
A two-column, clean and minimalist theme for @TryGhost
Stars: ✭ 22 (-55.1%)
Mutual labels:  ghost, ghost-blog
Ghost Theme Moegi
An elegant & fresh ghost theme.
Stars: ✭ 101 (+106.12%)
Mutual labels:  ghost, ghost-blog
donnie-dark
Donnie Dark is dark, responsive, customizable theme for Ghost 0.5+ blogs. Name of the theme is hats-off for a great movie.
Stars: ✭ 20 (-59.18%)
Mutual labels:  ghost, ghost-blog
Gatsby Ghost Balsa Starter
A Gatsby starter for creating blogs from headless Ghost CMS.
Stars: ✭ 17 (-65.31%)
Mutual labels:  ghost, ghost-blog
Skywalker
A material design theme for ghost blog 🙈🌈🍇
Stars: ✭ 80 (+63.27%)
Mutual labels:  ghost, ghost-blog
starter
A clean theme for Ghost blog
Stars: ✭ 26 (-46.94%)
Mutual labels:  ghost, ghost-blog
pale-ghost
A blank, dev ready, Ghost theme.
Stars: ✭ 13 (-73.47%)
Mutual labels:  ghost, ghost-blog

Ghost Storage Cloudinary

npm version Build Status Maintainability Test Coverage Known Vulnerabilities

A fully featured and deeply tested Cloudinary Ghost storage adapter.

Features

  • Up to date with latest Ghost versions 🚀
  • Latest Cloudinary NodeJS SDK
  • Image upload, existence check & deletion (when Ghost will support it)
  • Ability to upload in dated sub-directories (alike first Ghost default Local storage adapter YYYY/MM)
  • Ability to upload images into a specific directory
  • Ability to tag images
  • Cool plugins!

Installation

Install from Yarn

  • Go into Ghost root directory
  • Download the adapter:
$ yarn add ghost-storage-cloudinary
$ mv node_modules/ghost-storage-cloudinary content/adapters/storage/ghost-storage-cloudinary
  • Done, go configure

Install on Docker

Here's an example of using this adapter with a containerized Ghost:

FROM ghost:4-alpine as cloudinary
WORKDIR $GHOST_INSTALL/current
RUN su-exec node yarn add ghost-storage-cloudinary

FROM ghost:4-alpine
COPY --chown=node:node --from=cloudinary $GHOST_INSTALL/current/node_modules $GHOST_INSTALL/current/node_modules
COPY --chown=node:node --from=cloudinary $GHOST_INSTALL/current/node_modules/ghost-storage-cloudinary $GHOST_INSTALL/current/content/adapters/storage/ghost-storage-cloudinary
RUN set -ex; \
    su-exec node ghost config storage.active ghost-storage-cloudinary; \
    su-exec node ghost config storage.ghost-storage-cloudinary.upload.use_filename true; \
    su-exec node ghost config storage.ghost-storage-cloudinary.upload.unique_filename false; \
    su-exec node ghost config storage.ghost-storage-cloudinary.upload.overwrite false; \
    su-exec node ghost config storage.ghost-storage-cloudinary.fetch.quality auto; \
    su-exec node ghost config storage.ghost-storage-cloudinary.fetch.cdn_subdomain true;

Here, we use the Ghost CLI to set some pre-defined values.

Configuration

Check out configuration.json.dist for a complete example.

  • Ensure to disable Ghost Image Optimisation
  • The optional useDatedFolder = false to upload images in dated sub-directories (alike default Ghost Local storage adapter)
  • The auth property is optional if you use the CLOUDINARY_URL environment variable authentification method
  • The optional upload property contains Cloudinary API upload options
  • The optional fetch property contains Cloudinary API image transformation options

Recommended configuration

  • upload.use_filename = true in order use the original image name
  • upload.unique_filename = false unlikely Ghost local storage adapter which auto-dedup an existing file name, Cloudinary will return the existing image URL instead of deduping the image
  • upload.overwrite = false goes along with previous option: returns existing image instead of overwriting it
  • upload.folder = "my-blog" allows to upload all your images into a specific directory instead of Cloudinary media library root
  • upload.tags = ["blog", "photography"] if you want to add some taxonomy to your uploaded images
  • fetch.quality = "auto" equals auto:good (see doc)
  • fetch.secure = false set to true if you want to serve images over SSL (not recommended for performances)
  • fetch.cdn_subdomain = true to really use the benefit of Cloudinary CDN

❤️ Don't forget to checkout the plugins!

Development

Run yarn install without the --production flag.

Runs the tests and generate coverage:

$ yarn coverage

Runs the linter:

$ yarn eslint

To enable debug logs, set the following environment variable:

DEBUG=ghost-storage-cloudinary:*

Many thanks to @mmornati, @sethbrasile and all other contributors for their work. In the continuation of this project, don't hesitate to fork, contribute and add more features.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].