Skip to content
This repository has been archived by the owner on Nov 22, 2023. It is now read-only.
/ pop Public archive

Run a point-of-presence within Myel, the community powered content delivery network.

License

Notifications You must be signed in to change notification settings

myelnet/pop

Repository files navigation


🍿

pop


Run a point-of-presence within Myel, the community powered content delivery network.

Technical Highlights

  • Libp2p, IPFS and Filecoin protocols for data transfer.
  • Content is routed via Gossipsub.
  • New content to cache is directly replicated by connected peers.
  • Payments to retrieve content are made via Filecoin payment channels.

Background

Our mission is to build a community powered content delivery network that is resilient 🦾, scalable 🌏, and peer-to-peer ↔️ to suit the long-term needs of Web3 applications.

We're currently using Filecoin building blocks and are aspiring to make this library as interoperable as possible with existing Web3 backends such as IPFS.

This library is still experimental so feel free to open an issue if you have any suggestion or would like to contribute!

Install

As a CLI:

$ go install github.com/myel/pop/cmd/pop@latest

As a library:

$ go get github.com/myelnet/pop/exchange

CLI Usage

Run any command with -h flag for more details.

$ pop
USAGE
  pop subcommand [flags]

This CLI is still under active development. Commands and flags will
change until a first stable release. To get started run 'pop start'.

SUBCOMMANDS
  start   Starts a POP daemon
  off     Gracefully shuts down the Pop daemon
  ping    Ping the local daemon or a given peer
  put     Put a file into an exchange transaction for storage
  status  Print the state of any ongoing transaction
  commit  Commit a DAG transaction
  get     Retrieve content from the network
  list    List all content indexed in this pop
  wallet  Manage your wallet

FLAGS
  -log info  Set logging mode

Metrics Collection

pop nodes can push statistics measuring the performance of retrievals to an InfluxDB v2 database if certain environment variables are set. Set these variables as follows:

export INFLUXDB_URL=<INSERT InfluxDB ENDPOINT>
export INFLUXDB_TOKEN=<INSERT TOKEN>
export INFLUXDB_ORG=<INSERT ORG>
export INFLUXDB_BUCKET=<INSERT BUCKET>

Auto-updating

pop supports auto-updating via GitHub webhooks.

To activate it pass the flag -upgrade-secret to pop start such that it matches the GitHub webhook secret set for your server. Make sure you run as sudo, or that your current user has authorization to modify your pop binary.

Your pop will then automatically download and install new releases.

Deployment

You can deploy a cluster of nodes on AWS using kubernetes, as detailed in infra/k8s.

Library Usage

See go docs.