• Stars
    star
    238
  • Rank 163,570 (Top 4 %)
  • Language
    Go
  • License
    Other
  • Created about 3 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A custom IPFS/Filecoin node that makes it easy to pin IPFS content and make Filecoin deals.

Estuary

An experimental ipfs node

Questions? Reach out! slack

Building

Requirements:

  1. Run make clean all inside the estuary directory

Running your own node

To run locally in a 'dev' environment, first run:

./estuary setup --username=<uname> --password=<pword>

Save the credentials you use here, you will need them to login to the estuary-www frontend.

NOTE: if you want to use a different database than a sqlite instance stored in your local directory, you will need to configure that with the --database flag, like so: ./estuary setup --username=<uname> --password=<pword> --database=XXXXX

Once you have the setup complete, choose an appropriate directory for estuary to keep its data, and use it as your datadir flag when running estuary. You will also need to tell estuary where it can access a lotus gateway api, we recommend using:

export FULLNODE_API_INFO=wss://api.chain.love

Then run:

./estuary --datadir=/path/to/storage --database=IF-YOU-NEED-THIS --logging

NOTE: Estuary makes only verified deals by default and this requires the wallet address to have datacap(see https://verify.glif.io/). To make deals without datacap, it will require the wallet to have FIL, and the run command will need the --verified-deal option set to false.

./estuary --datadir=/path/to/storage --database=IF-YOU-NEED-THIS --logging --verified-deal=false

Running as daemon with Systemd

The Makefile has a target that will install a generic but workable systemd service for estuary.

Run make install-estuary-service on the machine you wish to run estuary on.

Make sure to follow the instructions output by the make command as configuration is required before the service can run successfully.

Running estuary using docker

  • View the guidelines on how to run estuary using docker here.

Using Estuary

The first thing you'll likely want to do with Estuary is upload content. To upload your first file, use the /content/add endpoint:

curl -X POST http://localhost:3004/content/add -H "Authorization: Bearer REPLACE_ME_WITH_API_KEY" -H "Accept: application/json" -H "Content-Type: multipart/form-data" -F "data=@PATH_TO_FILE_BUT_REMEMBER_THE_@_SYMBOL_IS_REQUIRED"

You can verify this worked with the /content/list endpoint:

curl -X GET -H "Authorization: Bearer REPLACE_ME_WITH_API_KEY" http://localhost:3004/content/list

You may find the API documentation at docs.estuary.tech useful as you explore Estuary's capabilities.

Sealing a Deal

Estuary will automatically make a deal with Filecoin miners after 8 hours. If you upload more than 3.57 GiB of data it will make the deal sooner.

To keep tabs on the status of your uploaded content and Filecoin deals, you can use estuary-www. Clone the estuary-www repository and run:

npm install
npm run dev

And then head to localhost:4444/staging to see the status of your deal.

Contributing

See CONTRIBUTING.md for contributing and development instructions.

Troubleshooting

Make sure to install all dependencies as indicated above. Here are a few issues that one can encounter while building estuary

Guide for: route ip+net: netlinkrib: too many open files

Error

If you get the following error:

/ERROR basichost basic/basic_host.go:328 failed to resolve local interface addresses {"error": "route ip+net: netlinkrib: too many open files"}

It is because you do not have enough open file handles available.

Solution

Update this with the following command:

ulimit -n 10000

Guide for: Missing hwloc on M1 Macs

The Portable Hardware Locality (hwloc) software package provides a portable abstraction of the hierarchical structure of current architectures, including NUMA memory nodes, sockets, shared caches, cores, and simultaneous multi-threading (across OS, versions, architectures, etc.).

lhwloc is used by libp2p-core. Estuary uses libp2p for the majority of its features including network communication, pinning, replication and resource manager.

Error

`ld: library not found for -lhwloc`

Solution

For M1 Macs, here's the following steps needed

  • Step 1: brew install go bzr jq pkg-config rustup hwloc - Uninstall rust as it would clash with rustup in case you have installed.
  • Step 2: export LIBRARY_PATH=/opt/homebrew/lib
  • Step 3: Follow the steps as per the docs.

On Ubuntu, install libhwloc-dev.

Guide for: cannot find -lfilcrypto collect2

Related issue here

Error

When trying to build estuary in an ARM machine, it returns an error

# github.com/filecoin-project/filecoin-ffi/generated /usr/bin/ld: skipping incompatible extern/filecoin-ffi/generated/../libfilcrypto.a when searching for -lfilcrypto /usr/bin/ld: skipping incompatible extern/filecoin-ffi/generated/../libfilcrypto.a when searching for -lfilcrypto /usr/bin/ld: skipping incompatible extern/filecoin-ffi/generated/../libfilcrypto.a when searching for -lfilcrypto /usr/bin/ld: skipping incompatible extern/filecoin-ffi/generated/../libfilcrypto.a when searching for -lfilcrypto /usr/bin/ld: skipping incompatible extern/filecoin-ffi/generated/../libfilcrypto.a when searching for -lfilcrypto /usr/bin/ld: cannot find -lfilcrypto collect2: error: ld returned 1 exit status make: *** [Makefile:67: estuary] Error 2

Solution

Related solution here

RUSTFLAGS="-C target-cpu=native -g" FFI_BUILD_FROM_SOURCE=1 make clean deps bench

More Repositories

1

next-bucket

A template to start a project easily with NextJS and Textile Buckets
TypeScript
55
star
2

filclient

A minimal filecoin client library
Go
41
star
3

estuary-www

https://estuary.tech
TypeScript
34
star
4

autoretrieve

A server to make GraphSync data accessible on IPFS
Go
22
star
5

wallet

building a filecoin wallet that works
JavaScript
20
star
6

next-sass

[2022] [OUTDATED] A template with nothing to start using NextJS.
TypeScript
18
star
7

delta

Filecoin deal proposal / making service
Go
16
star
8

file.app

https://file.app - everything about miners.
JavaScript
16
star
9

next-storage-deal

An example of making a Filecoin Storage Deal from a verified Filecoin address
TypeScript
14
star
10

delta-edge

Edge Gateway + Storage deal making using Delta
Go
11
star
11

whypfs-core

Lightweight IPFS-network peer embeddable library
Go
10
star
12

estuary-docs

https://docs.estuary.tech
TypeScript
9
star
13

pipepiper

pipe over network
Rust
7
star
14

delta-ui

TypeScript
7
star
15

delta-dm

Delta Large Dataset Manager
Go
7
star
16

outercore-eng-kb

Official Knowledge base repo of Estuary
5
star
17

barge

Barge - CLI tool to stream/upload files/cars/dirs to Estuary
Go
5
star
18

estuary-auth

Authentication library for Estuary API Devs
Go
4
star
19

filclient-unstable

rewrite
Go
4
star
20

estuary-hosted-infrastructure

The main repository for EHI
Shell
3
star
21

barge-v2

Barge (v2) - CLI tool to stream/upload files/cars/dirs to Estuary
3
star
22

fevm-nft-frontend

Simple NFT minter frontend
JavaScript
3
star
23

estuary-metrics

Estuary Metrics API
TypeScript
3
star
24

estuary-playbook

Ansible playbook to stand up an Estuary node
Jinja
3
star
25

estuary-docker

Estuary provisioning using docker
Shell
3
star
26

fevm-nft-estuary

ERC721 contract that uses Estuary for storing digital asset metadata
Solidity
3
star
27

delta-docs

Documentation for Delta Stack
3
star
28

storage-market-api

data layer
TypeScript
3
star
29

prototypes

Just some prototypes upon request.
TypeScript
2
star
30

delta-www

come hell or high water
TypeScript
2
star
31

estuary-rust-sdk

A rust SDK to interact with Estuary nodes
Rust
2
star
32

whypfs-gateway

Experimental whypfs-gateway using whypfs-core
Go
2
star
33

delta-importer

Import client for Delta
Go
2
star
34

fevm-data-segment

Implementation of inclusion proofs on the FEVM
Solidity
2
star
35

estuary-docusaurus

Official Estuary Documentation Website (built with Docusaurus)
TypeScript
2
star
36

pestuary

A Python SDK to interact with Estuary nodes
Python
2
star
37

estuary-clients

Java
2
star
38

estuary-js-sdk

A javascript SDK to interact with Estuary nodes
JavaScript
2
star
39

delta-chunker

Batch job for chunking large datasets to delta
Go
2
star
40

delta-global-metrics-rest-api

Delta Metrics / Telemetry REST Endpoints
Go
1
star
41

delta-dm-playbook

Ansible tooling for Delta DM
Jinja
1
star
42

estuary-postgres-playbook

Jinja
1
star
43

estuary-java-sdk

A Java SDK to interact with Estuary nodes
Java
1
star
44

cpi-reporter

Reporting infra for Customer Provisioned Infrastructure
Python
1
star
45

random-cid

Generate a random CID
Go
1
star
46

delta-data-pipeline

Delta Job that pulls different datasources and push them to delta
1
star
47

auth-svc

Authorization/Authentication Microservice
Go
1
star
48

ipfs-events

TypeScript
1
star
49

delta-events-consumer

Delta Events Metrics Collection Consumer
Go
1
star
50

fastcommp

Filecoin fast piece commitment summation tool
Go
1
star
51

delta-standalone

Delta Standalone Installer
Shell
1
star
52

delta-nextjs-white-label-app

white label app per filecoin address per client
TypeScript
1
star
53

filecoin-web-services-www

filecoin web services
TypeScript
1
star
54

radiant-data-to-delta

Radiant MLHub Data to Delta
Python
1
star
55

delta-sp-selection

SP Selection using Storage.Market
Go
1
star
56

delta-playbook

Delta Ansible Deployment Playbooks
Jinja
1
star
57

delta-drop

TypeScript
1
star
58

fevm-subscription

Simple Subscription Contract on FEVM
Solidity
1
star
59

ehi-proxmaas

Integrates Proxmox, MAAS and Technitium to provide one-touch deployment of many machines
Python
1
star
60

bsutil

bsutil
Go
1
star