Docs / Work with files
Upload a file. Get the same file back.Upload a file. Get the same file back.
Connect an S3 client, upload a file and verify the downloaded bytes match. Run the steps on your own computer.
Before you begin
You need a provisioned customer service and its private credentials. Never enter secret keys into this documentation page.
1
An active customer service
Open your storage service in the WHMCS client area. Its Keldra panel shows the endpoint and service credentials.
2
A private bucket
If your product includes a starting bucket, use that bucket. Otherwise open Create a bucket in the Keldra service panel and choose Create private bucket. Note its exact name.
3
Your chosen S3 client
For command-line steps, install AWS CLI v2 or curl with AWS Signature Version 4 support. Use a local shell; these commands use POSIX shell syntax.
1. Configure your client
Configure your S3 access key and secret locally when prompted. Use eu-west-1 as the region and json as the output format. Replace your-private-bucket with the exact bucket name from your service.
aws configure --profile keldra
export S3_ENDPOINT='https://eu-west-1.keldra.store'
export BUCKET='your-private-bucket'
Expected: AWS CLI saves the keldra profile locally. Keep that credentials file private. S3_ENDPOINT and BUCKET contain only nonsecret connection details.
2. Upload a file
Create a small local file, then upload it to your private bucket. Keep hello.txt for the final comparison.
printf 'Hello from Keldra\n' > hello.txt
aws --profile keldra --endpoint-url "$S3_ENDPOINT" \
s3 cp hello.txt "s3://$BUCKET/hello.txt"
Expected: AWS CLI prints an upload confirmation for hello.txt. An AccessDenied response is not a successful upload.
3. Download it
Fetch that object into a different local file so you can compare it with the original.
aws --profile keldra --endpoint-url "$S3_ENDPOINT" \
s3 cp "s3://$BUCKET/hello.txt" downloaded.txt
Expected: AWS CLI prints a download confirmation and downloaded.txt appears in your working directory.
4. Verify the result
Compare the downloaded bytes with the original file. This check runs locally, not on this documentation website.
cmp hello.txt downloaded.txt
Expected: cmp prints nothing and exits with status 0 when the files match. Any reported difference needs investigation.
Your completion checklist
Mark what you have verified yourself. These page-local checkboxes do not run commands or inspect your storage.
Need help?
Access denied or unable to connect?
Check the complete endpoint, eu-west-1 region and exact bucket name. Confirm the service is active and the key pair belongs to that service. Review configured bucket permissions. Do not make the bucket public to work around a credential error.
The files differ?
Confirm you downloaded the same object key into downloaded.txt, not an error response or an older local file. Repeat the download and compare again. Keep both files until you understand the difference.
Next goal: move an existing bucket
Inventory the source first, configure destination permissions and indexes, and check transfer charges. To export current originals from your configured bucket to a local directory, use the command below. Version history and permission/index configuration need separate migration steps.
aws --profile keldra --endpoint-url "$S3_ENDPOINT" \
s3 sync "s3://$BUCKET/" ./export/
Next goal: control who can access data
Start private. Give each service its own credentials, then configure groups, roles and resource permissions for applications that need finer-grained access. Test both an allowed and denied identity.
Manage customer services
Use the module’s service controls in WHMCS to suspend, restore or terminate access. Suspension blocks new authentication; existing sessions can last until expiry. Termination revokes service credentials without automatically deleting stored files.
Your goal
Upload a file to your private bucket and get the same file back. Complete the checklist only after checking the results on your computer.
Where are my credentials?
Open your storage service in the WHMCS client area. Use that service’s S3 credentials, not your WHMCS login. For AWS CLI, configure them locally with:
aws configure --profile keldra
Troubleshoot this tutorial →