Skip to content

vcgtz/ghost-gcp-storage-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ghost-gcp-storage-adapter

Ghost adapter to store images, media files, and other files into Google Cloud Storage.

npm ghost

⬇️ Installation

Google Cloud Storage Configuration

  1. Create a project from Google Cloud Console
  2. Be sure that Google Cloud Storage API is enable in APIs & Services > Library
  3. Create a new Service Account in IAM & Admin > Service Accounts
  4. Create new credentials for your service account in IAM & Admin > Service Accounts > <Your Service Account> > Actions > Manage Keys > Add Key
  5. Download your credentials as a JSON file and renamed it to credentials.json
  6. Create a bucket to store your files (use Fine-grained access control)

Server Configuration for production

  1. Go to your Ghost instalation folder (the folder where you have the files config.production.json or config.development.json):
cd /your/ghost/instalation/folder
  1. Create the adapters/storage folder inside the content folder:
mkdir -p content/adapters/storage
  1. Install this package via NPM:
npm i ghost-gcp-storage-adapter
  1. Copy the installed package into content/adapters/storage:
cp -r node_modules/ghost-gcp-storage-adapter content/adapters/storage/ghost-gcp-storage-adapter
  1. Copy your credentials.json file into content/adapters/storage/ghost-gcp-storage-adapter

  2. Add the following configuration to your config.production.json file:

"storage": {
  "active": "ghost-gcp-storage-adapter",    // For images
  "media": "ghost-gcp-storage-adapter",     // For video and audio files
  "files": "ghost-gcp-storage-adapter",     // For other file types
  "ghost-gcp-storage-adapter": {
    "projectId": "<your_google_cloud_project_id>",
    "keyFilename": "<your_ghost_instalation_folder>/content/adapters/storage/ghost-gcp-storage-adapter/credentials.json",
    "bucketName": "<your_bucket_name>"
  }
}

Storage Configuration Options:

  • active: Controls the storage adapter for images
  • media: Controls the storage adapter for video and audio files
  • files: Controls the storage adapter for other file types
  1. Restart Ghost

Docker Deployment

If you're running Ghost in Docker, follow these steps:

  1. Clone and prepare the adapter:
# Clone this repository
git clone https://github.com/vcgtz/ghost-gcp-storage-adapter.git
cd ghost-gcp-storage-adapter

# Install dependencies
npm install
  1. Update your docker-compose.yml to mount the necessary volumes:
version: '3'
services:
  ghost:
    image: ghost:5-alpine
    volumes:
      # Mount config.production.json
      - ./config.production.json:/var/lib/ghost/config.production.json
      # Mount the storage adapter
      - ./ghost-gcp-storage-adapter:/var/lib/ghost/content/adapters/storage/ghost-gcp-storage-adapter
      # Mount credentials.json (ensure it's in your project directory)
      - ./credentials.json:/var/lib/ghost/content/adapters/storage/ghost-gcp-storage-adapter/credentials.json
    // ... other configurations ...
  1. Ensure your config.production.json includes the storage configuration:
{
  // ... other configurations ...
  "storage": {
    "active": "ghost-gcp-storage-adapter",    // For images
    "media": "ghost-gcp-storage-adapter",     // For video and audio files
    "files": "ghost-gcp-storage-adapter",     // For other file types
    "ghost-gcp-storage-adapter": {
      "projectId": "<your_google_cloud_project_id>",
      "keyFilename": "/var/lib/ghost/content/adapters/storage/ghost-gcp-storage-adapter/credentials.json",
      "bucketName": "<your_bucket_name>"
    }
  }
}
  1. Start your Docker containers:
docker-compose up -d

Note: Make sure the file permissions are correct and the credentials.json file is accessible within the container.

Configuration for development

If you want to contribute or test this adapter, you can use it locally by following the next instructions:

  1. Follow the same steps to configure Google Cloud Storage
  2. Fork this repo
  3. Clone your fork in your computer
  4. Install Ghost locally (Instructions)
  5. In the folder where you installed Ghost, install the adapter locally
cd ghost_folder/
npm install /path/to/your/forked/repo
  1. Create the adapters/storage folder inside the content folder:
mkdir -p content/adapters/storage
  1. Copy the installed package into content/adapters/storage:
cp -r node_modules/ghost-gcp-storage-adapter content/adapters/storage/ghost-gcp-storage-adapter
  1. Copy your credentials.json file into content/adapters/storage/ghost-gcp-storage-adapter
  2. Stop Ghost and running it in development mode by using:
NODE_ENV=development ghost run

With this you'be able to see the logs in real time and test and debug this package.

📃 License

MIT

About

Ghost adapter to store images into Google Cloud Storage

Resources

License

Stars

Watchers

Forks

Packages

No packages published