返回资讯中心
外部精选
软件工程
#开发者实时流

Show HN: Nexo – S3-compatible object storage in Go, single binary, AGPL

Nexo is an object store compatible with the Amazon S3 API, written in Go. A single binary

Hacker News 最新paolorusso2026/10/17 · 20 天前11 分钟阅读

以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。

Nexo is an object store compatible with the Amazon S3 API, written in Go. A single binary (nexo) contains the S3 server, the Admin API and the web console; nexoctl is the CLI for data and administration. The same binary runs on one drive, on multiple drives with erasure coding and as a multi-node cluster, with no external metadata database.

Sign in, a versioned bucket, an upload, a preview and a share link in the web console (recorded with make demo-gif).

Coming from MinIO? Follow the migration guide (every version, policies and users, verified with nexoctl diff). Choosing a store? See how Nexo compares with MinIO, SeaweedFS, Garage and Ceph RGW, including where another project fits better.

The overview of the web console (shown in dark mode when your browser prefers it). The images are taken from a demo deployment with make screenshots; drive capacity is shown as 4 × 1 TiB for illustration.

docker run -d --name nexo -p 9000:9000 -p 9001:9001
-e NEXO_ROOT_USER=admin -e NEXO_ROOT_PASSWORD=supersecret
-v nexo-data:/data paolor/nexo:latest server /data

The images are on Docker Hub: paolor/nexo (server and CLI) and paolor/nexoctl (CLI only).

With the binary (releases or make build):

export NEXO_ROOT_USER=admin NEXO_ROOT_PASSWORD=supersecret nexo server ~/nexo-data # absolute path; multiple drives: nexo server /mnt/disk{1...4}

Then open the console at http://localhost:9001 (user admin, password supersecret) or use the CLI:

nexoctl alias set local http://localhost:9000 admin supersecret nexoctl mb local/photos nexoctl cp hello.txt local/photos/ nexoctl share download --expire 2h local/photos/hello.txt # revocable link

Any S3 client works with the endpoint http://localhost:9000 and the same credentials, for example aws --endpoint-url http://localhost:9000 s3 ls.

📖 Documentation site: https://r3n3r0.github.io/Nexo/ (Italian: https://r3n3r0.github.io/Nexo/it/), with search, the CLI reference and the Admin API.

The same pages are in docs/user, in English with an Italian translation next to every page (<page>.it.md; also at https://github.com/R3n3r0/Nexo/tree/main/docs/user, for those reading this file from a release archive):

make docs-site publishes it as a static site with MkDocs (in bin/site, in English and in Italian under /it/).

Document Contents

1 Architecture Components, repository layout, stack, technical choices

2 Features Catalog of the server, dashboard and CLI features, differences from S3

3 Cluster Topology, erasure coding, quorum, distributed locks, healing, expansion

4 API Supported S3 APIs, Admin API, internode RPC

5 Roadmap and tasks Milestones, tasks with IDs, dependencies and acceptance criteria, status

6 Test plan Strategy and test cases for server, CLI, dashboard and cluster

7 Security and operations Threat model, TLS, KMS, observability

8 Modes and release Deployment modes, packaging and release process

9 Presigned URLs, policies and sharing Presigned URLs, POST policies, policies, revocable share links

10 Access, domains and distributions Access rules, domains, distributions behind proxies

11 Per-domain cache Memory/disk cache, per-level policies, invalidation, cluster cache

12 Service architecture Binding convention for services, routes and composition in internal/app

The changes of every release are in the CHANGELOG; the test coverage of every feature in the catalog is in the traceability matrix.

You need Go (the version in go.mod) and, for the console, Node.js.

The code follows the convention of docs/12: every service has an interface and an unexported implementation, and composition happens only in internal/app.

Nexo is free software licensed under the GNU Affero General Public License v3.0 only (AGPL-3.0-only): if you modify it and let users interact with it over a network, you must offer them the source code of your version. The NOTICE file adds attribution terms (AGPL section 7(b)): keep it, and keep "Powered by Nexo (https://github.com/R3n3r0/Nexo)" in the legal notices of the user interface. Organizations that cannot comply with the AGPL can buy a commercial license from the copyright holder; contributions are accepted under the terms of CONTRIBUTING.md. Archives, deb/rpm packages, container images and the Helm chart carry LICENSE (and NOTICE in archives and packages).

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →