No description
Find a file
2026-02-27 19:09:26 +03:00
.docker go.mod: upgrade to Go 1.25+, use 1.26 for builds 2026-02-26 17:05:24 +03:00
.github go.mod: upgrade to Go 1.25+, use 1.26 for builds 2026-02-26 17:05:24 +03:00
cmd *: apply make modernize 2026-02-27 18:47:49 +03:00
config node: drop node.persistent_sessions.path support completely 2026-02-24 16:43:20 +03:00
debian cmd: move cli docs into docs, fix #2332 2023-06-02 21:27:46 +03:00
docs node: drop node.persistent_sessions.path support completely 2026-02-24 16:43:20 +03:00
internal testutil: don't use golang.org/x/exp/constraints 2026-02-26 17:05:29 +03:00
misc [#1592] Remove debug builds 2022-07-14 10:39:51 +03:00
pkg *: apply make modernize 2026-02-27 18:47:49 +03:00
.dockerignore .dockerignore: exclude .cache directory 2024-08-06 20:20:09 +03:00
.gitattributes build: Better GitHub handling of auto-generated code 2020-08-04 12:17:09 +03:00
.gitignore workflows: reuse org-wide linter workflow 2024-10-04 13:24:15 +03:00
CHANGELOG.md ir: do not wait for payment transaction acceptance 2026-02-27 15:19:28 +03:00
CONTRIBUTING.md Minor typo fixes 2020-12-30 13:22:50 +03:00
CREDITS.md CREDITS: refresh 2025-07-01 17:29:25 +03:00
go.mod morph: improve notary events parsing (#3813) 2026-02-27 11:08:19 +03:00
go.sum morph: improve notary events parsing (#3813) 2026-02-27 11:08:19 +03:00
help.mk [#1578] Minor Makefile fixes 2022-07-06 10:00:19 +03:00
LICENSE Initial commit 2020-07-10 17:45:00 +03:00
Makefile Makefile: add modernize target 2026-02-27 17:30:29 +03:00
README.md README: drop outdated platforms section 2025-12-24 00:01:49 +03:00
VERSION CHANGELOG: release 0.51.1 2026-02-18 19:06:41 +03:00

NeoFS logo

NeoFS is a decentralized distributed object storage integrated with the NEO Blockchain.


codecov Report GitHub release (latest SemVer) License

Overview

NeoFS nodes are organized in a peer-to-peer network that takes care of storing and distributing user's data. Any Neo user may participate in the network and get paid for providing storage resources to other users or store their data in NeoFS and pay a competitive price for it.

Users can reliably store object data in the NeoFS network and have a transparent data placement process due to a decentralized architecture and flexible storage policies. Each node is responsible for executing the storage policies that the users select for geographical location, reliability level, number of nodes, type of disks, capacity, etc. Thus, NeoFS gives full control over data to users.

Deep Neo Blockchain integration allows NeoFS to be used by dApps directly from NeoVM on the Smart Contract code level. This way dApps are not limited to on-chain storage and can manipulate large amounts of data without paying a prohibitive price.

NeoFS has a native gRPC API and has protocol gateways for popular protocols such as AWS S3, HTTP, FUSE and sFTP allowing developers to integrate applications without rewriting their code.

Building

To build all binaries you need modern Go (any officially supported version, see NeoSPCC Go policy for how we manage Go updates) and make:

make all

The resulting binaries will appear in bin/ folder.

To make a specific binary use:

make bin/neofs-<name>

See the list of all available commands in the cmd folder.

Building with Docker

Building can also be performed in a container:

make docker/all                     # build all binaries
make docker/bin/neofs-<name> # build a specific binary

Docker images

To make docker images suitable for use in neofs-dev-env use:

make images

Running

CLI

neofs-cli allows to perform a lot of actions like container/object management connecting to any node of the target network. It has an extensive description for all of its commands and options internally, but some specific concepts have additional documents describing them:

See docs/cli-commands for information about all cli commands.

neofs-adm is a network setup and management utility usually used by the network administrators. Refer to docs/cli-adm.md for mode information about it.

Both neofs-cli and neofs-adm can take configuration file as a parameter to simplify working with the same network/wallet. See cli.yaml for an example of what this config may look like. Control service-specific configuration examples are ir-control.yaml and node-control.yaml for IR and SN nodes respectively.

Node

There are two kinds of nodes -- inner ring nodes and storage nodes. Most of the time you're interested in running a storage node, because inner ring ones are special and are somewhat similar to Neo consensus nodes in their role for the network. Both accept parameters from YAML or JSON configuration files and environment variables.

See docs/sighup.md on how nodes can be reconfigured without restart.

See docs/storage-node-configuration.md on how to configure a storage node.

Example configurations

These examples contain all possible configurations of NeoFS nodes. All parameters are correct there, however, their particular values are provided for informational purposes only (and not recommended for direct use), real networks and real configuration are likely to differ a lot for them.

See node.yaml for configuration notes.

Private network

If you're planning on NeoFS development take a look at neofs-dev-env. To develop applications using NeoFS we recommend more light-weight neofs-aio container. If you really want to get your hands dirty refer to docs/deploy.md for instructions on how to do things manually from scratch.

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create a new issue first, describing the feature/topic you are going to implement.

Credits

NeoFS is maintained by NeoSPCC with the help and contributions from community members.

Please see CREDITS for details.

License