Ghost adapter to store images into Google Cloud Storage
https://github.com/vcgtz/ghost-gcp-storage-adapter.git
Google Cloud Storage API is enable in APIs & Services > LibraryIAM & Admin > Service AccountsIAM & Admin > Service Accounts > <Your Service Account> > Actions > Manage Keys > Add Keycredentials.jsonconfig.production.json or config.development.json):cd /your/ghost/instalation/folder
adapters/storage folder inside the content folder:mkdir -p content/adapters/storage
npm i ghost-gcp-storage-adapter
content/adapters/storage:cp -r node_modules/ghost-gcp-storage-adapter content/adapters/storage/ghost-gcp-storage-adapter
credentials.json file into content/adapters/storage/ghost-gcp-storage-adapterconfig.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 imagesmedia: Controls the storage adapter for video and audio filesfiles: Controls the storage adapter for other file types# Clone this repository
git clone https://github.com/vcgtz/ghost-gcp-storage-adapter.git
cd ghost-gcp-storage-adapter
# Install dependencies
npm install
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 ...
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>"
}
}
}
docker-compose up -d
Note: Make sure the file permissions are correct and the credentials.json file is accessible within the container.
cd ghost_folder/
npm install /path/to/your/forked/repo
adapters/storage folder inside the content folder:mkdir -p content/adapters/storage
content/adapters/storage:cp -r node_modules/ghost-gcp-storage-adapter content/adapters/storage/ghost-gcp-storage-adapter
credentials.json file into content/adapters/storage/ghost-gcp-storage-adapterdevelopment 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.