Sign up
Docs

S3 tools and SDKs

tport.space speaks the S3 API, so the tools you already use work with three settings.

Endpointhttps://s3.tport.space
Regionauto (any name works)
Access key id / secretFrom the Keys page of the console
AddressingPath style (s3.tport.space/bucket/file); virtual-host style works too

AWS CLI

aws configure --profile tport
# AWS Access Key ID: TPS...
# AWS Secret Access Key: (your secret)
# Default region name: auto

aws s3 sync ./site s3://my-site/ --endpoint-url https://s3.tport.space --profile tport

Newer CLI versions read the endpoint from the profile too: add endpoint_url = https://s3.tport.space under [profile tport] in ~/.aws/config and drop the flag.

rclone

[tport]
type = s3
provider = Other
access_key_id = TPS...
secret_access_key = ...
endpoint = https://s3.tport.space
region = auto
rclone sync ./photos tport:my-files/photos

Python (boto3)

import boto3

s3 = boto3.client("s3", endpoint_url="https://s3.tport.space", region_name="auto",
                  aws_access_key_id="TPS...", aws_secret_access_key="...")
s3.upload_file("backup.tar.gz", "my-files", "backups/backup.tar.gz")
url = s3.generate_presigned_url("get_object", Params={"Bucket": "my-files", "Key": "backups/backup.tar.gz"},
                                ExpiresIn=3600)

JavaScript (AWS SDK v3)

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  endpoint: "https://s3.tport.space",
  region: "auto",
  forcePathStyle: true,
  credentials: { accessKeyId: "TPS...", secretAccessKey: "..." },
});
await s3.send(new PutObjectCommand({ Bucket: "my-files", Key: "hello.txt", Body: "hi" }));

restic

export AWS_ACCESS_KEY_ID=TPS... AWS_SECRET_ACCESS_KEY=...
restic -r s3:https://s3.tport.space/my-backups init
restic -r s3:https://s3.tport.space/my-backups backup ~/Documents

Cyberduck and other apps

Choose "Amazon S3" (or "S3 compatible"), server s3.tport.space, port 443, and your key id and secret. Apps that ask for a region take auto.

Good to know