Quick start
Install Arkel, run a node, and put/get your first object.
Install
sh
curl -fsSL https://arkeldata.com/install.sh | sh
arkel --helpBuild from source
sh
git clone https://github.com/amr8t/arkel && cd arkel
cargo build
./target/debug/arkel --helpAs 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 50GBPrefer 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-datavolume. - Needs inbound UDP 9001 reachable for direct connections; otherwise iroh falls back to a relay.
capacityis 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/storageRun 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.