npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@nellcorp/ghost-s3-store

v3.0.2

Published

S3 Storage adapter for Ghost.

Downloads

5

Readme

GhoS3

An AWS S3 storage adapter tested on Ghost 5.x.

This is a modernized version based on colinmeinke/ghost-storage-adapter-s3. Major changes are:

  • Adopted async/await
  • Rewritten in TypeScript
  • Use latest Version 3 of AWS SDK

It's designed to be a drop-in replacement of colinmeinke's package, so configuration and installation method remained largely the same.

However, this port pretty much targets only Ghost 5.x and up, as the build toolchain is set to target Node 16.x. With some modifications this should work for older version of Ghost (PRs welcomed).

On my blog The Base, I use Cloudflare R2 with GhoS3.

Installation

# Install ghos3 package
npm install ghos3

# Create directory to storage adapter
mkdir -p ./content/adapters/storage

# Copy package files to s3 storage folder
cp -r ./node_modules/ghos3/* ./content/adapters/storage/s3

# Remove unnecessary files generated from ghos3 installation
rm -Rf node_modules package-lock.json package.json

# Move to s3 storage folder
cd ./content/adapters/storage/s3

# Resolve dependencies
npm install

Configuration

Largely the same, but note signatureVersion and serverSideEncryption are removed since in AWS SDK v3 they're implemented differently than just a simple string field (PRs welcomed, of course).

"storage": {
  "active": "s3",
  "media":{
     "adapter": "s3"
  },
  "files": {
    "adapter": "s3"
  },
  "s3": {
    "accessKeyId": "YOUR_ACCESS_KEY_ID",
    "secretAccessKey": "YOUR_SECRET_ACCESS_KEY",
    "region": "YOUR_REGION_SLUG",
    "bucket": "YOUR_BUCKET_NAME",
    "assetHost": "YOUR_OPTIONAL_CDN_URL (See note 1 below)",
    "pathPrefix": "YOUR_OPTIONAL_BUCKET_SUBDIRECTORY",
    "cdnPrefix": "YOUR_OPTIONAL_CDN_SUBDIRECTORY",
    "endpoint": "YOUR_OPTIONAL_ENDPOINT_URL (only needed for 3rd party S3 providers)",
    "forcePathStyle": true,
    "acl": "YOUR_OPTIONAL_ACL (See note 3 below)",
  }
}

Notes

  1. Be sure to include // or the appropriate protocol within your assetHost string/variable to ensure that your site's domain is not prepended to the CDN URL.
  2. If your S3 provider requires path style, you can enable it with forcePathStyle.
  3. If you use CloudFront the object ACL does not need to be set to public-read.

Via environment variables

AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID // optional
AWS_SECRET_ACCESS_KEY // optional
GHOST_STORAGE_ADAPTER_S3_PATH_BUCKET
GHOST_STORAGE_ADAPTER_S3_ASSET_HOST  // optional
GHOST_STORAGE_ADAPTER_S3_PATH_PREFIX // optional
GHOST_STORAGE_ADAPTER_CDN_PATH_PREFIX // optional
GHOST_STORAGE_ADAPTER_S3_ENDPOINT // optional
GHOST_STORAGE_ADAPTER_S3_FORCE_PATH_STYLE // optional
GHOST_STORAGE_ADAPTER_S3_ACL // optional

For configuration on the AWS side, colinmeinke's original README has a detailed tutorial to set your up.

License

ISC