Coder Social home page Coder Social logo

blkluv / ghost-ipfs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alexbakers/ghost-ipfs

0.0 0.0 0.0 722 KB

IPFS storage adapter for ๐Ÿ‘ป Ghost.

Home Page: ghost-ipfs-dee029.spheron.app

License: MIT License

Shell 3.54% JavaScript 96.46%

ghost-ipfs's Introduction

Ghost IPFS Storage Adapter

ghost-ipfs

IPFS (Filebase, Pinata, Fleek, Web3, Lighthouse) storage adapter for Ghost.

Installation

Install using yarn/npm/git

  • Go into Ghost root directory
  • Download the adapter:
# using yarn
yarn add ghost-ipfs

# or using npm
npm install ghost-ipfs --save

# create dir
mkdir -p content/adapters/storage

# move
mv node_modules/ghost-ipfs content/adapters/storage/ghost-ipfs

# or using git
git clone \
    https://github.com/alexbakers/ghost-ipfs \
    content/adapters/storage/ghost-ipfs
  • Done, go configure

Install on Docker

Here's an example of using this adapter with a containerized Ghost:

FROM ghost:5-alpine as ipfs
RUN apk add g++ make python3
RUN su-exec node yarn add ghost-ipfs

FROM ghost:5-alpine
COPY --chown=node:node --from=ipfs $GHOST_INSTALL/node_modules $GHOST_INSTALL/node_modules
COPY --chown=node:node --from=ipfs $GHOST_INSTALL/node_modules/ghost-ipfs $GHOST_INSTALL/content/adapters/storage/ghost-ipfs

# Here, we use the Ghost CLI to set some pre-defined values.
RUN set -ex; \
    su-exec node ghost config storage.active ghost-ipfs; \
    su-exec node ghost config storage.ghost-ipfs.defaultStorage "filebase"; \

    # https://console.filebase.com/keys
    su-exec node ghost config storage.ghost-ipfs.filebase.key "FILEBASE_KEY"; \
    su-exec node ghost config storage.ghost-ipfs.filebase.secret "FILEBASE_SECRET"; \
    su-exec node ghost config storage.ghost-ipfs.filebase.bucket "FILEBASE_BUCKET"; \

    # https://app.pinata.cloud/keys
    su-exec node ghost config storage.ghost-ipfs.pinata.jwt "PINATA_JWT"; \

    # https://app.fleek.co/#/settings/general/profile
    su-exec node ghost config storage.ghost-ipfs.fleek.key "FLEEK_KEY"; \
    su-exec node ghost config storage.ghost-ipfs.fleek.secret "FLEEK_SECRET"; \
    su-exec node ghost config storage.ghost-ipfs.fleek.bucket "FLEEK_BUCKET"; \

    # https://web3.storage/tokens/
    su-exec node ghost config storage.ghost-ipfs.web3.token "WEB3_TOKEN";

    # https://files.lighthouse.storage/dashboard/apikey
    su-exec node ghost config storage.ghost-ipfs.lighthouse.token "LIGHTHOUSE_TOKEN";

Make sure to set the content path right in the Ghost config as well:

"paths": {
    "contentPath": "/var/lib/ghost/content/"
}

Configuration

  • tokens/keys on ./config.production.json
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "filebase",
      "filebase": {
        "key": "FILEBASE_KEY",
        "secret": "FILEBASE_SECRET",
        "bucket": "FILEBASE_BUCKET"
      },
      "pinata": {
        "jwt": "PINATA_JWT"
      },
      "fleek": {
        "key": "FLEEK_KEY",
        "secret": "FLEEK_SECRET",
        "bucket": "FLEEK_BUCKET"
      },
      "web3": {
        "token": "WEB3_TOKEN"
      },
      "lighthouse": {
        "token": "LIGHTHOUSE_TOKEN"
      }
    }
  }
  // ...
}
  • or tokens/keys on .env
FILEBASE_KEY=""
FILEBASE_SECRET=""
FILEBASE_BUCKET=""

PINATA_JWT=""

FLEEK_KEY=""
FLEEK_SECRET=""
FLEEK_BUCKET=""

WEB3_TOKEN=""

LIGHTHOUSE_TOKEN=""

./config.production.json

{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "filebase"
    }
  }
  // ...
}

Configuration Ghost + Filebase

Configuration Ghost + Filebase

Variable Type Description Required
key string Filebase access key yes
secret string Filebase access secret yes
bucket string Filebase bucket name yes
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "filebase",
      "filebase": {
        "key": "FILEBASE_KEY",
        "secret": "FILEBASE_SECRET",
        "bucket": "FILEBASE_BUCKET"
      }
    }
  }
  // ...
}

Configuration Ghost + Pinata

Configuration Ghost + Pinata

Variable Type Description Required
jwt string Pinata JWT (Secret access token) yes
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "pinata",
      "pinata": {
        "jwt": "PINATA_JWT"
      }
    }
  }
  // ...
}

Configuration Ghost + Fleek

Configuration Ghost + Fleek

Variable Type Description Required
key string Fleek Storage API key yes
secret string Fleek Storage API secret yes
bucket string Fleek bucket name (e.g. 71a...-bucket) yes
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "fleek",
      "fleek": {
        "key": "FLEEK_KEY",
        "secret": "FLEEK_SECRET",
        "bucket": "FLEEK_BUCKET"
      }
    }
  }
  // ...
}

Configuration Ghost + Web3

Configuration Ghost + Web3

Variable Type Description Required
token string Web3 Storage API Token yes
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "web3",
      "web3": {
        "token": "WEB3_TOKEN"
      }
    }
  }
  // ...
}

Configuration Ghost + Lighthouse

Configuration Ghost + Lighthouse

Variable Type Description Required
token string Lghthouse Storage API Token yes
{
  // ...
  "storage": {
    "active": "ghost-ipfs",
    "ghost-ipfs": {
      "defaultStorage": "lighthouse",
      "lighthouse": {
        "token": "LIGHTHOUSE_TOKEN"
      }
    }
  }
  // ...
}

Links


(c) Alex Baker

ghost-ipfs's People

Contributors

alexbakers avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.