Skip to content

Quick start ​

Install Arkel, run a node, and put/get your first object.

Install ​

sh
curl -fsSL https://arkeldata.com/install.sh | sh
arkel --help

Build from source ​

sh
git clone https://github.com/amr8t/arkel && cd arkel
cargo build
./target/debug/arkel --help

As an operator — run a storage node ​

The easiest way is one command (swap in your public IP and the disk you're committing):

sh
docker run -d --name arkel-storage --restart unless-stopped --network host \
  -v arkel-data:/var/lib/arkel \
  ghcr.io/amr8t/arkel:latest storage \
  --addr 0.0.0.0:9001 \
  --advertise-addr <your-public-ip>:9001 \
  --index-addrs http://index.pc1.arkeldata.com:8001 \
  --data-dir /var/lib/arkel/storage-9001 \
  --capacity 50GB

Prefer Compose? Use the ready-made files in examples/storage-node/: edit arkel-node.toml, then docker compose up -d.

  • Identity is auto-generated on first boot into the arkel-data volume.
  • Needs inbound UDP 9001 reachable for direct connections; otherwise iroh falls back to a relay.
  • capacity is the disk you commit; the index fills it and pays against stored bytes.
Binary / systemd alternative
sh
arkel storage \
  --addr 0.0.0.0:9001 \
  --advertise-addr <your-public-ip>:9001 \
  --index-addrs http://index.pc1.arkeldata.com:8001 \
  --data-dir /var/lib/arkel/storage

Run an index node (part of the Raft metadata quorum):

sh
arkel index \
  --http-addr 0.0.0.0:8001 \
  --peer-addresses <pubkey@ip:port,...>

As a user ​

sh
# The public index cluster
INDEX=http://index.pc1.arkeldata.com:8001

# put
arkel client put photo.jpg --bucket media --key holidays/1.jpg --index-addrs "$INDEX"

# get
arkel client get media holidays/1.jpg --output photo.jpg --index-addrs "$INDEX"

# rm
arkel client rm media holidays/1.jpg --index-addrs "$INDEX"

Note: During beta test, limited quota is available. Reach out on the Discord channel for more quota.

See the CLI reference for the full command surface.