12729 Commits

Author SHA1 Message Date
abuckit e3737b39dd fix: fall back from inconclusive FastOpen reads (#32) RELEASE.2026-08-08T00-55-02Z 2026-08-07 12:18:37 -04:00
abuckit ad5c64d3ee fix: validate FastOpen initial shard indexes (#31) 2026-08-07 09:59:54 -04:00
abuckit 3867a60d03 docs: use the merged binary installer in the quickstart (#30)
install-binary.sh handles Linux and macOS in one script and is published
as of the latest release, so the two platform lines collapse into one.
The old per-platform URLs still work, but there is no reason to send new
readers to them.
2026-08-05 16:44:05 -04:00
abuckit 6a4de45bbe README: get readers to a running server in one command (#26)
* docs: retitle the Docker section to match what it does

The section was called "Build Docker Image" but was almost entirely
about running the published one, so anyone scanning for how to try
Buckit in a container skipped past it.

Retitle to "Run with Docker", lead with the run commands, and demote
image building to a closing note. Also name both registries and the
advice to pin a tag in production.

* docs: make Quickstart reach a running server in one command

Quickstart opened with `make build`, so the first runnable thing in the
README required installing Go and compiling. Lead with the published
container image instead.

Fold Distributed Server Mode in as a subsection so the single-node and
cluster commands sit together. The cluster one-liner is the more
striking of the two and was previously buried under prose, split across
continuation lines, and immediately followed by advice to use bm web
instead. It now stands on its own line with an explanation of what it
describes.

* docs: quickstart without requiring Docker

Leading with a container image assumed a runtime the reader may not
have. The binary installer shipped in the last release needs neither a
toolchain nor Docker, so use that instead and keep the container path as
one of the alternatives listed beneath it.

* docs: split quickstart into download and run steps

* docs: walk the quickstart through to an uploaded file

The quickstart stopped at a running process, which is not the thing a
reader is trying to confirm. Continue through signing in to the console
and uploading an object with bm, so the first session ends with data in
object storage rather than a server listening on a port.

* docs: tighten the quickstart and end it in the console

Cut the throat-clearing: the "no toolchain required" claim, the
description of what the installer does, and the pointers to other
install methods, which are one heading away.

Swap the last two steps. Creating a bucket and uploading a file, then
opening the console to find them there, gives the sequence a payoff. The
previous order treated the console and the CLI as interchangeable
alternatives, which ended the quickstart on a shrug.

* docs: give quickstart steps their own headings

Bold-inline step labels ran into the text that followed them, so the
four steps read as one block. Promote them to h3 so each gets real
separation and an anchor, and move the platform variants and the bm
install note into the code blocks as comments, where a reader can copy
the line that applies to them instead of reading a sentence about it.

The cluster one-liner becomes its own section rather than a fifth
sibling heading under Quickstart, where it read as step 5.

* docs: restore the learning-purposes note on the quickstart

* docs: reword the quickstart note

* docs: state what the quickstart walks through

* docs: put the quickstart note above the intro line

* docs: point the quickstart note at the guided deployment wizard

* docs: comment each command in the quickstart upload step

* docs: note the PATH line is conditional

* docs: name the data directory in the quickstart

* docs: name the CLI in the step 3 heading

* docs: say web browser rather than console in step 4

* docs: point at the Object Browser menu in step 4

* docs: give the Windows bm install its own line

* docs: comment out the Windows bm install so the block pastes cleanly

* docs: restore the Distributed Server Mode heading

* docs: restore the original Distributed Server Mode section

* docs: keep the rewritten distributed section under its original heading

* docs: restore Distributed Server Mode to its original form

* docs: point distributed deployments at the guided wizard

* docs: simplify what the wizard handles

* docs: simplify the install section blurbs

* docs: drop the Linux install subsections from Install Buckit

Installing and deploying for real takes more than a one-line curl, and
the Deployment Guide covers it properly. The quickstart already shows
the download command for anyone who just wants to try the server, so
these two sections offered a third telling of the same thing at a level
of detail that suits neither audience.

Leaves Install Buckit as a pointer to the guide, plus building from
source, which is the part only this repository can document.

* docs: contrast the deployment guide with building from source

* docs: promote Build From Source to a top-level section

* docs: drop the build commands that do not work

`go install github.com/buckit-io/buckit@latest` cannot succeed. Go
refuses `pkg@version` installs for any module carrying a replace
directive, and go.mod:7 has one for go-openapi/testify. The line was
inherited from MinIO's README, where it works because their go.mod has
none. Running it here fails outright.

The manual `go build -tags kqueue -trimpath --ldflags ...` line was the
Makefile's build target spelled out, so it only offered a way to get the
invocation subtly wrong.

Leaves the one path that works, verified from a clean clone.

* docs: restore go install now that it works

Removing it was correct at the time: the go.mod replace directive made
`go install pkg@version` fail outright. That directive is gone, and the
command has been verified against the published module.

Note the version caveat -- go install skips the Makefile's gen-ldflags
step, so the binary cannot report which release it came from.

* docs: use the Docker Hub image in the run commands

Docker Hub is Docker's default registry, so buckitio/buckit needs no
prefix at all, and it is where most people expect to find an image. This
also matches the compose example in the migration blog post.

Name both registries explicitly in the note beneath, since GHCR is not
subject to Docker Hub's anonymous pull limits and is the better choice
from CI.

* docs: drop the custom-image aside from Run with Docker

* docs: name the bm section as the CLI

* docs: add a Buckit Manager Web screenshot

The section described a web UI without showing it. Use the cluster view
from the website's media assets, which covers four of the five things the
section lists: cluster health, nodes, pools and drives, and host
operations.

Cropped off the decorative video-poster frame and the burned-in caption
so it reads as a screenshot rather than a video thumbnail. Placed
centred under the intro, matching the console GIF at the top of the file.

* docs: fold the bm install blocks into one

Two blocks with prose labels became one with per-command comments,
matching how the quickstart presents the same install. The Windows line
is commented out so the block still pastes cleanly on Linux and macOS,
where the trailing `bm --help` runs either way.

* docs: add the PATH line the bm install block was missing

`bm --help` fails with "bm: not found" straight after install: bm lands
in ~/.local/bin and its installer only prints a PATH hint rather than
applying one. The two blocks this replaced had the same gap.

Verified by pasting the block verbatim with nothing added.
RELEASE.2026-08-05T18-01-10Z
2026-08-05 14:00:04 -04:00
abuckit d4fc27e0f6 docs: add breathing room above the MinIO tip (#25)
The Learn More links are a dense <br>-separated block, so the callout's
border sat directly against the last link.
2026-08-05 12:12:57 -04:00
abuckit 22998ee756 build: drop the go.mod replace directive (#29)
go.mod pinned go-openapi/testify/v2 down to v2.0.2 because newer
releases removed assert/yaml, which go-openapi's own test dependencies
still imported. The pin worked, but a replace directive makes

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

fail outright: Go refuses pkg@version installs for any module carrying
one. Building from a clone was the only way in.

The stale module was not testify itself but its companion,
go-openapi/testify/enable/yaml, still at v2.0.2 while testify had moved
to v2.4.1. That older enable/yaml is what imported the removed package.
Upgrading it to v2.6.0 lets both move together, and the incompatibility
disappears without pinning anything.

Neither replace nor exclude remains, so pkg@version installs work.
2026-08-05 12:07:43 -04:00
abuckit 0801e31164 refactor(packaging): merge the per-platform binary installers (#28)
install-linux-binary.sh and install-mac.sh were 443 lines that differed
in three places: the OS check and architecture allowlist, the platform
token in the pointer URL and asset name, and clearing the macOS
quarantine attribute. The other ~190 lines were identical.

That duplication already cost something. Hardening the installers meant
applying five fixes twice, by hand, in parallel -- pin-bypass path
traversal, pipeline masking, digest normalisation, directory
destination, and the cross-origin digest check. The next fix would have
had the same shape, and eventually one would land in only one file.

Merge them into install-binary.sh, which detects Linux or macOS and
validates the architecture against what is published for that platform:
Linux ships amd64 and arm64, macOS ships Apple Silicon only.

The release workflow publishes it under the old names as well, so URLs
already in the wild, in the docs, and in the blog post keep working and
pick up the merged behaviour on every release. Nothing needs to change
on the reader's side, and there is no window where a documented command
404s.

Two benign consequences: install-mac.sh now also works on Linux and
install-linux-binary.sh on macOS, and error messages self-identify as
install-binary.sh whichever URL was fetched.
2026-08-04 20:57:01 -04:00
abuckit 555e772519 README: add MinIO migration callout and rework the feature list (#24)
* docs: point MinIO users at the migration path from the README

Someone arriving from the discontinued MinIO project has one question
before anything else: how much work is switching? The README answered
everything except that.

Add a callout directly under the intro, above the console screenshot,
stating that Buckit is a drop-in replacement and linking to the blog
post and the migration guide. Also list the new post under Learn More,
which only had the original fork announcement.

* docs: tighten the MinIO callout wording

* docs: drop the second link from the MinIO callout

* docs: keep the migration post to the callout only

* docs: move the MinIO callout above Quickstart

* docs: move the MinIO callout above What Buckit Provides

* docs: drop the redundant sentence from the MinIO callout

* docs: rewrite What Buckit Provides around technical capability

Three of the six bullets described the console, CLI, and web manager,
which the console recording directly above already demonstrates. Nothing
described replication, deployment shape, or the read path.

Replace them with capability statements: the S3 surface, single-binary
deployment, the scaling range, site and bucket replication, one bullet
covering the tooling, and the single-trip GET path that upstream does
not have.

* docs: trim the feature descriptions

* docs: clarify the scaling bullet

* docs: keep the plain feature wording, add leads and the missing items

* docs: fold the admin tools into an operations toolkit item

* docs: lead the replication item with what it buys you

* docs: shorten the replication item to the DR case

* docs: replication supports more than one remote site

* docs: simplify the replication item

* docs: note the browser console is the end-user surface

* docs: lead with S3-compatible object storage

* docs: group single binary with the operational items

* docs: name homelabs in the standalone item

* docs: describe the console as self-service
2026-08-04 13:55:27 -04:00
abuckit fbbf5d76f0 fix(packaging): harden release-tag and checksum handling in installers
install-linux-binary.sh was adapted from install-mac.sh and inherited
several weaknesses from it. Fix them in all three installers so the
platforms behave consistently.

- Validate the release tag on the pinned path as well as the resolved
  one. BUCKIT_VERSION previously bypassed the RELEASE.* guard entirely,
  so a value like ../../evil reached the download URL as path traversal.
  Both paths now share one check, and it requires a non-empty suffix and
  a conservative character set, rejecting '/', whitespace, control
  characters, and URL delimiters.

- Require the gh-pages pointer filename to actually carry the buckit.
  prefix. Stripping it with ${name#buckit.} silently accepted a payload
  that never had it.

- Fetch the published checksum into a variable before parsing it. Piping
  the fetch straight into awk hid a failed transfer behind awk's exit
  status; a partial response with a complete leading token could pass.
  The hash utilities are now invoked outside a pipeline for the same
  reason.

- Normalise digests to lowercase and require exactly 64 hex characters,
  so an uppercase digest cannot cause a spurious mismatch and a truncated
  record cannot be compared as if it were valid.

- Refuse to run when the destination is a directory. mv and Move-Item
  both place the temp file inside it, after which the installer reported
  success while leaving nothing runnable at the path it printed.

Also cross-check the pointer digest against the release-host digest on
macOS and Windows, matching the new Linux script.
RELEASE.2026-08-04T03-21-12Z
2026-08-03 22:15:30 -04:00
abuckit fa2f0483a4 feat(packaging): add install-linux-binary.sh for standalone binary installs
install-linux.sh downloads a native package and registers a systemd
service, which is the wrong shape for deployments that run the server
binary directly -- a hand-run process, a non-systemd supervisor, or a
MinIO deployment being migrated in place.

Add a Linux counterpart to install-mac.sh that fetches only the binary:
resolve the current release from the gh-pages pointer, download the
matching asset, verify its SHA-256, chmod it, and leave ./buckit in the
working directory. It does not touch PATH and does not install a service.

The checksum is verified against both the release-host .sha256sum and the
digest published in the gh-pages pointer, and the two must agree. The
binary and its adjacent checksum share an origin, so that digest alone
only proves the transfer was not corrupted; the pointer is served from a
different origin and turns the check into something an attacker must
defeat in two places. A pinned BUCKIT_VERSION skips the cross-check,
since the pointer only ever describes the latest release.

Publish the script to gh-pages alongside the others, and advertise it in
the README and the generated release-notes install table.
2026-08-03 22:15:30 -04:00
abuckit 440be6909c docs: refresh README RELEASE.2026-07-30T00-12-49Z RELEASE.2026-07-29T17-06-43Z RELEASE.2026-07-29T17-06-42Z 2026-07-29 20:10:36 -04:00
abuckit 276ca8d1e1 docs: refresh Discord invite RELEASE.2026-07-28T16-43-20Z 2026-07-28 09:32:40 -04:00
abuckit f5345b3894 docs: update Discord invite 2026-07-28 09:31:12 -04:00
abuckit d2b08d8dfc docs: clarify manual quickstart scope 2026-07-27 21:08:12 -04:00
abuckit bf23071e18 docs: link Buckit Manager Web guidance 2026-07-27 21:05:20 -04:00
abuckit 40743a2ef5 fix: update vulnerable Go dependencies 2026-07-27 20:05:40 -04:00
abuckit 10efe6b3d9 docs: refine deployment guide callout 2026-07-27 19:52:15 -04:00
abuckit 94e927b1f8 docs: prioritize Linux package installation 2026-07-27 19:50:55 -04:00
abuckit 552fa6e4d7 docs: reorganize deployment and architecture sections 2026-07-27 19:48:13 -04:00
abuckit b95e90fa61 docs: refresh Buckit introduction 2026-07-27 19:46:06 -04:00
abuckit 3b743fb1b1 docs: link Buckit architecture concepts 2026-07-27 19:45:03 -04:00
abuckit caf661d332 docs: combine installation resources 2026-07-27 19:40:14 -04:00
abuckit f2eec48430 docs: link Buckit documentation 2026-07-27 19:39:33 -04:00
abuckit 4cee45516a docs: clarify guided installation 2026-07-27 19:37:09 -04:00
abuckit cce7f9419d docs: refine Getting Started callout 2026-07-27 19:36:32 -04:00
abuckit 73e12b6da7 docs: link Getting Started guide 2026-07-27 19:34:32 -04:00
abuckit 059f17101f docs: link Buckit Manager repository 2026-07-27 19:30:50 -04:00
abuckit d6c6eb102e docs: refresh Buckit capabilities 2026-07-27 19:21:44 -04:00
abuckit 6c0c6862e0 docs: use descriptive Discord link 2026-07-27 19:15:45 -04:00
abuckit b090bacd81 docs: consolidate Discord community link 2026-07-27 19:13:48 -04:00
abuckit 0f10a617af docs: move project note below demo 2026-07-27 19:11:50 -04:00
abuckit 7198012c65 docs: simplify README introduction 2026-07-27 19:10:36 -04:00
abuckit 6bb355f822 docs: rename README title 2026-07-27 19:10:06 -04:00
abuckit 6809d1f85e docs: move website to repository about 2026-07-27 19:07:38 -04:00
abuckit 1b4c61b845 docs: embed web console demo 2026-07-27 19:04:59 -04:00
abuckit ae47729cc9 docs: add README project badges 2026-07-27 18:46:39 -04:00
abuckit 8e40e1b1a6 build: bump console to v1.8.4 RELEASE.2026-07-21T17-57-33Z 2026-07-21 13:57:54 -04:00
abuckit d34309324e Merge pull request #20 from buckit-io/chore/bump-console-v1.8.3
build: bump console to v1.8.3
RELEASE.2026-07-18T23-21-20Z
2026-07-18 19:19:48 -04:00
abuckit 760154635b build: bump console to v1.8.3 2026-07-18 16:50:54 -04:00
abuckit fa10c1e59f Merge pull request #19 from buckit-io/chore/update-console-v1.8.2
chore: use console v1.8.2 release
RELEASE.2026-07-14T23-57-13Z
2026-07-14 18:07:40 -04:00
abuckit 4488828b3a ci: update Go vulncheck baseline 2026-07-14 16:40:09 -04:00
abuckit 77146c96c5 chore: use tagged console release v1.8.2 2026-07-14 16:37:00 -04:00
abuckit 1af5db7f5c docs: add fork notice and attribution 2026-07-08 23:02:18 -04:00
abuckit 5ce2fdb41b chore: switch minio-go dependency to buckit-go RELEASE.2026-07-08T23-43-30Z 2026-07-08 19:44:10 -04:00
abuckit 79ab73aea9 Merge pull request #18 from buckit-io/cleanup-rebrand-docs-remove-legacy-artifacts
docs: refresh project docs and remove legacy artifacts
2026-07-08 12:12:18 -04:00
abuckit 6d83d7c0af docs: refresh project docs and remove legacy artifacts 2026-07-07 22:47:25 -04:00
abuckit 9341440c89 Merge pull request #16 from buckit-io/chore/rebrand-runtime-messages
chore: rebrand runtime messages for Buckit CLI
2026-07-07 13:07:22 -04:00
abuckit def0a2e492 chore: rebrand runtime messages for Buckit CLI 2026-07-04 20:51:44 -04:00
abuckit 1e2a266ab0 chore: update startup docs url 2026-07-03 20:47:45 -04:00
abuckit a7ed65b988 Merge pull request #14 from buckit-io/feat/xfs-retry-on-error-timer
packaging: disable XFS retry-on-error on Buckit data drives
2026-06-24 13:04:48 -04:00