Storj¶
Storj is a decentralized cloud storage provider.
Description¶
It offers S3-compatible storage that is distributed across thousands of nodes worldwide, providing high reliability and security.
When to use it¶
- When you need high-performance, decentralized object storage.
- When you want to reduce storage costs compared to traditional cloud providers.
- When building applications that require S3 compatibility.
When not to use it¶
- When you require block storage or file system mounting (use for object storage).
- If your workload requires absolute single-region data residency.
Getting started¶
Docker installation¶
Running a Storj node via Docker allows you to contribute storage to the network and earn rewards.
docker run -d --restart unless-stopped --stop-timeout 300 \
-p 28967:28967/tcp \
-p 28967:28967/udp \
-p 127.0.0.1:14002:14002 \
-e WALLET="0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-e EMAIL="user@example.com" \
-e ADDRESS="domain.ddns.net:28967" \
-e STORAGE="2TB" \
--mount type=bind,source="/path/to/identity",target=/app/identity \
--mount type=bind,source="/path/to/storage",target=/app/config \
--name storagenode storjlabs/storagenode:latest
Installation¶
Install the uplink CLI tool to manage your Storj buckets and objects:
curl -L https://github.com/storj/storj/releases/latest/download/uplink_linux_amd64.zip -o uplink.zip
unzip uplink.zip
sudo install uplink /usr/local/bin
Setup¶
Configure the CLI with your Storj access credentials:
uplink setup
Follow the prompts to enter your access grant or API key.
Hello World¶
- Install and setup the
uplinkCLI as described above. - Create a new bucket:
uplink mb sj://hello-world. - Create a small text file:
echo "Hello Storj" > hello.txt. - Upload the file:
uplink cp hello.txt sj://hello-world/. - Verify the upload:
uplink ls sj://hello-world/.
CLI examples¶
The uplink tool supports standard object storage operations. Use the sj:// protocol for buckets.
# Create a new bucket
uplink mb sj://my-bucket
# Upload a local file with a custom expiration date
uplink cp my-local-file.txt sj://my-bucket/ --expires 2026-12-31T23:59:59Z
# List objects and their sizes in a bucket
uplink ls sj://my-bucket/
# Share a specific path with a new access grant
uplink share sj://my-bucket/public-folder/ --readonly --not-after 2026-12-31T23:59:59Z
API examples¶
Use the boto3 library to interact with Storj via its S3-compatible Gateway.
Python (Boto3)¶
import boto3
# Configure the client for Storj S3 Gateway
s3 = boto3.client(
"s3",
endpoint_url="https://gateway.storjshare.io",
aws_access_key_id="<your_access_key>",
aws_secret_access_key="<your_secret_key>"
)
# Upload a file
s3.upload_file("local_image.png", "my-bucket", "cloud_image.png")
# List objects in a bucket
response = s3.list_objects_v2(Bucket="my-bucket")
for obj in response.get("Contents", []):
print(f"Object: {obj['Key']}, Size: {obj['Size']} bytes")
Links¶
Related tools / concepts¶
- S3 / S3-Compatible Storage (Core protocol)
- Rclone Automation (Common tool for Storj sync)
- Syncthing (Local sync alternative)
- Nextcloud (Can use Storj as external storage)
- n8n (For automating bucket operations)
Backlog¶
- Configure as a backup target for Rclone.
Contribution Metadata¶
- Confidence: high
- Last reviewed: 2026-06-12
Sources / References¶
- https://www.storj.io/
- https://aws.amazon.com/s3/
- https://www.backblaze.com/cloud-storage
- https://docs.storj.io/