buckit

command module
v0.0.0-...-3867a60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: AGPL-3.0 Imports: 3 Imported by: 0

README

[!NOTE] Buckit is an independent project derived from the discontinued open source MinIO project. Buckit is not affiliated with or endorsed by MinIO, Inc.

Buckit Object Storage

Build status Vulnerability check Buckit website Join Buckit on Discord

Buckit is an open-source, S3-compatible object storage system you run on your own commodity servers. It gives your applications an Amazon S3-style API while keeping your data under your control, and it can scale from a small setup to hundreds of petabytes. Teams use Buckit when they want S3-like storage without sending all data to a public cloud or paying cloud storage bills at scale.

Buckit web console

Learn More

Watch demo videos
Getting Started
FAQ
Documentation
Blog: Why I Forked MinIO to Keep It Open, and Made It Faster


[!TIP] Already running MinIO? Buckit is a drop-in replacement. Read MinIO to Buckit: Swap One File, Nothing Else.

What Buckit Provides

  • S3-compatible object storage — works with existing S3 SDKs and tools.
  • Standalone mode — single-node for small setups or homelabs.
  • Distributed mode — multi-node clusters supporting hundreds of petabytes.
  • Replication — keep remote sites in sync for high availability and disaster recovery.
  • Single binary — one executable per node, with no external dependencies.
  • Browser console — self-service bucket and object management for end users.
  • Operations toolkit — CLI for admin and object automation, web-based cluster and node management.

Quickstart

[!NOTE] This quickstart runs the server by hand for learning purposes. For real-world deployments, use the guided deployment wizard.

Let's start the object storage server, create a bucket, upload a file into it, and verify using the web UI.

1. Download the server
# Linux or macOS
curl -fsSL https://buckit-io.github.io/buckit/install-binary.sh | sh

# Windows PowerShell
irm https://buckit-io.github.io/buckit/install-windows.ps1 | iex
2. Start the server
./buckit server /tmp/buckit-data --console-address :9001

Objects are stored in /tmp/buckit-data. The S3 API listens on port 9000 and the console on 9001.

3. Create a bucket and upload a file using CLI
# Install the bm client on Linux or macOS
curl -fsSL https://buckit-io.github.io/bm/install.sh | sh

# Windows PowerShell
# irm https://buckit-io.github.io/bm/install.ps1 | iex

# bm installs to ~/.local/bin; skip this if that is already on your PATH
export PATH="$HOME/.local/bin:$PATH"

# Point bm at the server, naming this connection "local"
bm alias set local http://localhost:9000 buckitadmin buckitadmin

# Create a bucket called "mydata"
bm mb local/mydata

# Upload a file into it
bm cp ./hello.txt local/mydata/
4. See it in the web browser

Open http://127.0.0.1:9001 and sign in with buckitadmin / buckitadmin, then go to Object Browser. Your mydata bucket is there with the file in it.

Distributed Server Mode

For distributed deployments, run the same buckit server command on every participating node with a shared set of drive endpoints and identical root credentials.

Example pattern:

export MINIO_ROOT_USER=myadmin
export MINIO_ROOT_PASSWORD=mysecretpassword

buckit server \
  http://node{1...4}.example.com/data{1...4} \
  --console-address :9001

For new production clusters, use the guided deployment wizard instead of hand-written shell commands. It handles node deployment and configuration for the cluster.

Install Buckit

To install a production release, see the Deployment Guide.

Build From Source

Buckit requires Go 1.25 or newer. If Go is not installed, download and install it from the official Go installation page: https://go.dev/doc/install.

git clone https://github.com/buckit-io/buckit.git
cd buckit
make build

The build writes ./buckit.

You can also install directly with Go, though the resulting binary reports DEVELOPMENT.GOGET rather than a version:

go install github.com/buckit-io/buckit@latest

Run with Docker

docker run -p 9000:9000 -p 9001:9001 \
  -v "$HOME/buckit-data:/data" \
  buckitio/buckit:latest server /data --console-address :9001

With explicit credentials:

docker run -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=myadmin \
  -e MINIO_ROOT_PASSWORD=mysecretpassword \
  -v "$HOME/buckit-data:/data" \
  buckitio/buckit:latest server /data --console-address :9001

The same image is published to Docker Hub as buckitio/buckit and to GitHub Container Registry as ghcr.io/buckit-io/buckit. For production, pin a release tag instead of latest.

Access Buckit with the bm CLI

bm is the Buckit Manager CLI for Buckit and S3-compatible object storage. It provides object commands such as ls, cp, cat, mirror, and rm, plus Buckit administration and cluster-management workflows.

See the bm GitHub repository.

Install it:

# Linux or macOS
curl -fsSL https://buckit-io.github.io/bm/install.sh | sh

# Windows PowerShell
# irm https://buckit-io.github.io/bm/install.ps1 | iex

# bm installs to ~/.local/bin; skip this if that is already on your PATH
export PATH="$HOME/.local/bin:$PATH"

# Confirm the install
bm --help

Add an alias for a local Buckit server:

bm alias set local http://localhost:9000 buckitadmin buckitadmin
bm admin info local

Create a bucket and copy data:

bm mb local/mydata
bm cp --recursive ./mydata/ local/mydata/
bm ls local/mydata

Read, mirror, and remove objects:

bm cat local/mydata/object.txt
bm mirror ./mydata local/mydata
bm rm local/mydata/object.txt

Use --dry-run before large or recursive remove operations:

bm rm --recursive --dry-run local/mydata

Common bm commands:

Command Purpose
bm alias set Add or update a Buckit or S3-compatible endpoint alias.
bm admin info Show deployment information and verify connectivity.
bm ls List buckets, prefixes, objects, or local files.
bm mb Create a bucket or local directory.
bm cp Copy files or objects.
bm cat Print file or object contents.
bm mirror Synchronize local and object storage paths.
bm rm Remove files or objects.
bm version Manage bucket versioning.
bm retention Manage object retention.
bm legalhold Manage object legal holds.
bm tag Manage object tags.
bm ilm Manage lifecycle rules and tiers.
bm replicate Manage bucket replication.
bm update Update the bm binary.

Full bm CLI documentation: https://buckit.sh/docs/reference/bm-cli

Buckit Manager Web

bm also ships Buckit Manager Web, a local web UI for deploying and managing Buckit clusters.

Buckit Manager Web showing a four-node cluster with health, capacity, and per-node status

Start it with:

bm web

By default, Buckit Manager opens at http://127.0.0.1:9443/.

Use Buckit Manager Web to:

  • Prepare a local single-node Buckit deployment on macOS or Windows.
  • Deploy a managed Buckit cluster on one or more Linux servers over SSH.
  • Import an existing Buckit or MinIO cluster.
  • Monitor cluster health, nodes, pools, and drives.
  • Run supported cluster and node operations.

Buckit Manager documentation: https://buckit.sh/docs/administration/buckit-manager

How Buckit Works Internally

Development

Common repository commands:

make build
make install
make test
make lint
make verifiers
go generate ./...
make check-gen

Build and test commands must include the kqueue tag when run manually:

CGO_ENABLED=0 go test -v -tags kqueue,dev ./...

Generated files ending in _gen.go or _string.go must be regenerated and committed when their source types change.

License and Support

Buckit is licensed under the GNU AGPLv3.

All usage must comply with AGPLv3 obligations. The license provides no warranty, liability, or support obligation. Community support is available through GitHub and the Buckit Discord community.

See also:

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cmd This file implements helper functions to validate AWS Signature Version '4' authorization header.
Package cmd This file implements helper functions to validate AWS Signature Version '4' authorization header.
docs
auditlog command
internal
amztime
Package amztime implements AWS specific time parsing and deviations
Package amztime implements AWS specific time parsing and deviations
arn
crypto
Package crypto implements AWS S3 related cryptographic building blocks for implementing Server-Side-Encryption (SSE-S3) and Server-Side-Encryption with customer provided keys (SSE-C).
Package crypto implements AWS S3 related cryptographic building blocks for implementing Server-Side-Encryption (SSE-S3) and Server-Side-Encryption with customer provided keys (SSE-C).
deadlineconn
Package deadlineconn implements net.Conn wrapper with configured deadlines.
Package deadlineconn implements net.Conn wrapper with configured deadlines.
etag
Package etag provides an implementation of S3 ETags.
Package etag provides an implementation of S3 ETags.
grid
Package grid provides single-connection two-way grid communication.
Package grid provides single-connection two-way grid communication.
ioutil
Package ioutil implements some I/O utility functions which are not covered by the standard library.
Package ioutil implements some I/O utility functions which are not covered by the standard library.
jwt
kms
lock
Package lock - implements filesystem locking wrappers around an open file descriptor.
Package lock - implements filesystem locking wrappers around an open file descriptor.
logger/target/testlogger
Package testlogger contains an autoregistering logger that can be used to capture logging events for individual tests.
Package testlogger contains an autoregistering logger that can be used to capture logging events for individual tests.
net

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL