Store files in a bucket
Five minutes from nothing to files in a bucket. How buckets and keys work: Object storage.
1. Create a bucket
Section titled “1. Create a bucket”Bucket names are unique in the region: pick something like acme-photos.
Storage → Buckets, type the name, Create bucket. Tick Public only for files anyone may download (a website’s images, say).
tebib bucket create acme-photos --waittebib bucket list2. Create an S3 key
Section titled “2. Create an S3 key”Storage → S3 keys, name it (laptop), Create S3 key. Copy the access key ID and the
secret now: the secret is never shown again.
tebib storage key create laptop# or for a CI job: tebib storage key create ci --service-account sa-...The key reads and writes every bucket in this project.
3. Upload and download
Section titled “3. Upload and download”aws configure --profile tebib # paste the key ID and secret; region: lab-neo-1export AWS_PROFILE=tebibS3="--endpoint-url https://s3.lab-neo-1.tebibhost.com"
aws $S3 s3 cp ./photo.jpg s3://acme-photos/2026/photo.jpgaws $S3 s3 ls s3://acme-photos/ --recursiveaws $S3 s3 sync ./site s3://acme-photos/siteaws $S3 s3 cp s3://acme-photos/2026/photo.jpg ./copy.jpg# A link that works for one hour, even on a private bucket:aws $S3 s3 presign s3://acme-photos/2026/photo.jpg --expires-in 3600rclone config create tebib s3 provider Ceph \ access_key_id TBO... secret_access_key ... \ endpoint https://s3.lab-neo-1.tebibhost.com region lab-neo-1 \ force_path_style true no_check_bucket true
rclone copy ./photos tebib:acme-photos/2026rclone ls tebib:acme-photosrclone sync ./site tebib:acme-photos/site --progressno_check_bucket matters: rclone otherwise tries to create the bucket before every upload,
and buckets are only made in the console, CLI or API (it fails with TooManyBuckets).
import boto3
s3 = boto3.client( "s3", endpoint_url="https://s3.lab-neo-1.tebibhost.com", region_name="lab-neo-1", aws_access_key_id="TBO...", aws_secret_access_key="...",)s3.upload_file("photo.jpg", "acme-photos", "2026/photo.jpg")print([o["Key"] for o in s3.list_objects_v2(Bucket="acme-photos").get("Contents", [])])Use path-style addressing (aws-cli and boto3 pick it with an endpoint URL; for others set
force_path_style or equivalent).
4. Share files publicly (optional)
Section titled “4. Share files publicly (optional)”tebib bucket set-visibility bkt-... public-readcurl -O https://s3.lab-neo-1.tebibhost.com/acme-photos/2026/photo.jpgAnyone with the URL can download; nobody can list, upload or delete without a key. Downloads are billed to you.
5. Clean up
Section titled “5. Clean up”aws $S3 s3 rm s3://acme-photos --recursivetebib bucket delete bkt-... --wait # or --force to delete the objects tootebib storage key delete s3key-...