S3 Object Storage - aaronwmorris/indi-allsky GitHub Wiki
indi-allsky supports direct automated uploading of images, keograms, star trails, and timelapses to cloud object storage providers using native SDK integrations (boto3, google-cloud-storage, oci).
Configuration is managed in the web dashboard under Configuration → File Transfer.
Transfer type: BOTO3_S3
- Access Key ID: AWS IAM access key.
- Secret Access Key: AWS IAM secret access key.
-
Region: The AWS region hosting the bucket (e.g.,
us-east-1,eu-west-1). - Bucket Name: Name of the target S3 bucket.
-
Path / Prefix: Optional folder structure within the bucket (e.g.,
allsky/). -
ACL: Access control level (e.g.,
public-readorprivate).
Create an IAM user with restricted permissions limited to the destination bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
}
]
}Transfer type: GCP_STORAGE
- Navigate to the Google Cloud Console: IAM & Admin → Service Accounts.
- Click Create Service Account.
- Specify a service account name (e.g.,
indi-allsky-uploader). - Grant the Storage Object Admin (or Storage Object Creator) role.
- Specify a service account name (e.g.,
- Select the created service account, navigate to Keys → Add Key → Create new key.
- Select JSON format and download the credential file.
- Place the downloaded JSON file on the allsky host (for example,
/etc/indi-allsky/gcp-credentials.json) and verify permissions:sudo chown indi-allsky:indi-allsky /etc/indi-allsky/gcp-credentials.json sudo chmod 600 /etc/indi-allsky/gcp-credentials.json
- Enter this file path into the Credentials File configuration field.
If public web viewing is required without signed URLs:
- Navigate to Cloud Storage → Buckets → select your bucket → Permissions.
- Grant access to principal
allUserswith the Storage Object Viewer role.
Transfer type: OCI_STORAGE
OCI uses native API signing keys configured via standard OCI configuration files:
- Generate an API signing key pair in the OCI Console under Identity → Users → User Details → API Keys.
- Create an OCI config file on the host at
/etc/indi-allsky/oci_config:[DEFAULT] user=ocid1.user.oc1..aaaaaaa... fingerprint=xx:xx:xx:xx:xx:... key_file=/etc/indi-allsky/oci_api_key.pem tenancy=ocid1.tenancy.oc1..aaaaaaa... region=us-ashburn-1
- Set secure permissions:
sudo chown -R indi-allsky:indi-allsky /etc/indi-allsky/oci* sudo chmod 600 /etc/indi-allsky/oci_config /etc/indi-allsky/oci_api_key.pem - Enter
/etc/indi-allsky/oci_configin the Credentials File field. - Specify your tenancy Namespace and target Bucket Name.
Transfer type: BOTO3_MINIO or BOTO3_GENERIC
For third-party object storage platforms adhering to the S3 API protocol:
| Provider | Endpoint URL Example | Notes |
|---|---|---|
| MinIO | http://minio.lan:9000 |
Supports custom self-hosted endpoints; TLS verification bypass available for internal certificates. |
| Backblaze B2 | https://s3.us-west-004.backblazeb2.com |
Use S3-compatible Application Key credentials. |
| Cloudflare R2 | https://<account-id>.r2.cloudflarestorage.com |
Use R2 API Tokens with Object Read & Write permissions. |
| Wasabi | https://s3.us-east-1.wasabisys.com |
Set corresponding region and endpoint URL. |