https://github.com/mainawycliffe/ghost-firebase-storage-adapter
Read and write images from Firebase storage in the Ghost blogging platform
https://github.com/mainawycliffe/ghost-firebase-storage-adapter
firebase firebase-storage ghost- ghost-cms headless-cms jamstack javascript nodejs web-application
Last synced: 8 months ago
JSON representation
Read and write images from Firebase storage in the Ghost blogging platform
- Host: GitHub
- URL: https://github.com/mainawycliffe/ghost-firebase-storage-adapter
- Owner: mainawycliffe
- Created: 2020-10-27T20:43:30.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2020-11-08T10:22:53.000Z (about 5 years ago)
- Last Synced: 2025-04-03T08:37:20.343Z (9 months ago)
- Topics: firebase, firebase-storage, ghost-, ghost-cms, headless-cms, jamstack, javascript, nodejs, web-application
- Language: TypeScript
- Homepage:
- Size: 268 KB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ghost Firebase Storage Adapter
[](https://www.npmjs.com/package/ghost-firebase-storage-adapter)
[](https://github.com/mainawycliffe/ghost-firebase-storage-adapter/releases/latest)

This a Firebase [Storage adapter](https://ghost.org/docs/concepts/storage-adapters/) for Ghost CMS. Images uploaded via Ghost CMS
will be save to Firebase Storage.
## Prerequisite
- Have a [Firebase Project](https://firebase.google.com/docs) with [Firebase Storage](https://firebase.google.com/docs/storage) enabled.
- Generate Private key for your Firebase Service Account - [Instructions](https://firebase.google.com/docs/admin/setup#initialize-sdk)
## Setup
### Installation
At the root of you ghost blog, install this adapter using either `npm` or
`yarn`.
#### NPM
```sh
npm i ghost-firebase-storage-adapter
```
#### Yarn
```sh
yarn add ghost-firebase-storage-adapter
```
### Create Firebase Storage Module
After installation, a scripts runs that automatically creates a storage adapter
in the `content/adapters/storage` directory, named `firebase.js` with the
following content:
```javascript
'use strict'
module.exports = require('ghost-firebase-storage-adapter');
```
> **NB:** if the `firebase.js` was not created, create it in the `content/adapters/storage` directory and add the above content.
## Configurations
> Before we can proceed, make sure you have the bucket-name, without any prefix
> (`gs://`) or suffix (`.appspot.com`) and your Firebase Service Account Private
> Key, a `json` file.
- Add the json file containing the private key to the root of you ghost
directory or somewhere else more secure.
- Add a `storage` block to your `config.${GHOST_ENVIRONMENT}.json` as shown below:
```json
"storage": {
"active": "firebase",
"firebase": {
// configurations for the storage adapter
"serviceAccount": "./path/to/service/account.json",
"bucketName": "bucket-name",
"basePath": "base path for saving uploads",
"uploadOptions": {
"gzip": true,
"metadata": {
"cacheControl": "public, max-age=31536000"
}
}
}
}
```
For more information, see the example config [here](example/config.development.json).
### Config notes
- `serviceAccount` (`required`) - Path to your firebase service account
credential file, you can provide a relative or absolute path to the credential file.
- `bucketName` (`required`) - The bucket to save ghost uploads to
- `basePath` - the base directory to upload file to inside your Firebase storage
bucket.
- `uploadOptions` - Configuration options for bucket file upload as indicated
[here](https://googleapis.dev/nodejs/storage/latest/global.html#UploadOptions).
All fields can be appended except the destination:
**Example**
```json
{
"metadata": {
"cacheControl": "public, max-age=30000",
},
"public": "true",
"gzip": true
}
```
- `domain` - Custom domain name to append to the file destination. Use this
option if you are using a Firebase Cloud Functions to serve images.
## Verify new Storage Adapter
To verify everything is configured correctly, stop your ghost server and run it
again.
```sh
ghost stop
ghost run
```
Fix any errors that come up and try again. After that, try and uploading a file
and it should be accessible on your Firebase storage bucket.
## Contributions
Contributions of any kind - bug reports, pull request, feature suggestions are
welcome.