Sign inSign up

nathanbabcock/google-drive-cms

By nathanbabcock

•Updated over 5 years ago

An express server which proxies API requests to the Google Drive API.

Image
0

238

nathanbabcock/google-drive-cms repository overview

⁠Google Drive CMS

This shared Google Drive folder⁠ serves as the backend for this sample webpage⁠.

Quick links: Github⁠ / NPM⁠ / Dockerhub⁠

Published with a companion article on CSS Tricks: Using Google Drive as a CMS by Nathan Babcock⁠

⁠NPM

npm i google-drive-cms

⁠Run local demo

npm i
npm start

Note: The local demo app connects to a remote backend deployed on Heroku. To run your own backend and connect to your own Google Drive, you will need to create your own API credentials by following the steps in the next section.

⁠Connecting to Google APIs via Service account credentials

⁠Create a new Google Cloud project
⁠Enable Google APIs for the project
⁠Generate Service Account credentials
  • Go to Credentials⁠
  • "Create Credentials" > "Service account"
    1. Choose a name and email for the account
    2. Skip step 2
    3. Give your primary google account admin rights to manage this service account
  • Select the Service account you just created
  • Go to the KEYS tab
    • "ADD KEY" > Create new key
    • Use key type "JSON" and download the credentials .json file
    • Rename the file to credentials.json and move it to /secret/credentials.json in this repo.

⁠Node.js usage

const GoogleDriveCMS = require('google-drive-cms')
const cms = new GoogleDriveCMS();
cms.getDoc('1UC7Ah...').then(console.log);

⁠Express server

node node_modules/google-drive-cms/express.js

⁠Docker image

Get the image on Docker Hub⁠.

# pull from docker hub
docker pull nathanbabcock/google-drive-cms

# or build locally:
docker build . -t nathanbabcock/google-drive-cms

# run container, passing in CLIENT_EMAIL and PRIVATE_KEY 
docker run \
  --name google-drive-cms \
  --restart=always \
  --log-opt max-size=100m \
  --log-opt max-file=5 \
  -e CLIENT_EMAIL=your-client-email-here@npm-drive-cms.iam.gserviceaccount.com \
  -e PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n entire private keyfile here \n-----END PRIVATE KEY-----\n" \
  -v cache:/usr/src/app/cache \
  -p 80:80 \
  -d \
  nathanbabcock/google-drive-cms

Tag summary

Content type

Image

Digest

Size

342.6 MB

Last updated

over 5 years ago

docker pull nathanbabcock/google-drive-cms