sendless.cloud sendless.cloud Launch

Documentation

Sendless installs into your own AWS account from a single CloudFormation template. This guide covers installing, configuring, using, updating and removing it. Current release: 1.6.0. The source code is on GitHub.

Before you start

  • An AWS account and permission to create IAM roles, Lambda functions, S3 buckets, a CloudFront distribution, a DynamoDB table and a Cognito user pool. Administrator access is the simplest. CloudFormation asks you to confirm that the template creates IAM roles.
  • A commercial AWS Region that offers Lambda function URLs and Amazon Cognito. Malware scanning (Pro) also needs GuardDuty Malware Protection for S3 there.
  • Optional: a sender address verified in Amazon SES in the same Region, to email links (Email), and a certificate in AWS Certificate Manager in us-east-1, for your own domain (Custom domain).

Install

  1. On sendless.cloud, choose your Region and select Launch in your AWS account. The CloudFormation console opens with the Sendless template filled in. Sign in to AWS if asked.
  2. Keep the stack name sendless or choose another one.
  3. Enter the administrator's email in AdminEmail. All other parameters are optional (Stack parameters). If you want your own domain, enter it now: the invitation email then shows that address.
  4. Under Capabilities, confirm that CloudFormation may create IAM resources, then choose Create stack.
  5. Wait until the stack shows CREATE_COMPLETE, usually about five minutes. The Outputs tab shows the address of your installation.

With the AWS CLI instead:

aws cloudformation create-stack --region eu-central-1 --stack-name sendless \
  --template-url https://sendless-releases.s3.us-east-1.amazonaws.com/v1.6.0/sendless.yaml \
  --parameters ParameterKey=AdminEmail,ParameterValue=admin@example.com \
  --capabilities CAPABILITY_IAM

Stack outputs

OutputWhat it is
AppUrlThe address of your installation. Share it with your users.
CloudFrontDomainThe CloudFront name to point your own domain at.
UserPoolIdThe Cognito user pool that holds your users.
FilesBucketThe S3 bucket that stores the files.
VersionThe installed Sendless release.

First sign-in

  1. The administrator receives an email titled Your Sendless account from no-reply@verificationemail.com, the Amazon Cognito sender. It contains the address, the username and a temporary password that is valid for 7 days. Check the spam folder if it doesn't arrive.
  2. Open the address, choose Sign in, enter the email and the temporary password, and choose a new password: at least 12 characters, with upper-case and lower-case letters and a number.
  3. Under Admin → Settings, add your privacy policy and imprint links and check the defaults and limits.
  4. Under Admin → Users, invite the people who will send files.

Stack parameters

You set these when you create the stack and can change them later with a stack update.

ParameterDefaultDescription
AdminEmailrequiredThe first administrator. Receives the invitation with a temporary password.
MaxRetentionDays30The longest any file is kept: 1, 3, 7, 14, 30, 60, 90, 180 or 365 days. Enforced by the app and by an S3 lifecycle rule.
SenderEmailemptyAn address or domain verified in Amazon SES in the same Region. Turns on email; see Email.
SelfSignUpDomainsemptyComma-separated email domains, such as example.com,example.de, whose people may create their own account. Empty means invitation only.
CustomDomainNameemptyYour own address, such as files.example.com. Needs CertificateArn; see Custom domain.
CertificateArnemptyAn ACM certificate in us-east-1 that covers CustomDomainName.
EnableMalwareScanningfalsePro. Scans every upload with GuardDuty Malware Protection for S3; see Malware scanning.
CloudFrontPriceClassPriceClass_100Which CloudFront edge locations serve the app. PriceClass_100 uses North America and Europe and is the cheapest; PriceClass_200 and PriceClass_All add more locations.
LogRetentionDays30How long CloudWatch keeps the functions' logs.
ArtifactBaseUrlrelease locationWhere the code is downloaded from: the folder that holds one folder per release. It stays the same across updates. Change it only for a mirror that serves identical files: the template checks their SHA-256 checksums.

Custom domain

Without a custom domain, Sendless runs on a CloudFront address like d1234abcd.cloudfront.net. To use your own address:

  1. Request or import a certificate in AWS Certificate Manager in us-east-1 that covers the name, for example files.example.com or *.example.com. CloudFront only uses certificates from that Region.
  2. Set CustomDomainName and CertificateArn when you create the stack, or later with a stack update.
  3. Point the name at the CloudFrontDomain output: a CNAME record at most DNS providers, or A and AAAA alias records in Route 53.

The CloudFront address keeps working, and sign-in works on both. Links that Sendless creates use your domain.

A name can belong to only one CloudFront distribution. If the stack fails with CNAMEAlreadyExists, the name is still set on another distribution. Remove it there, then update the stack again.

Email

Sendless works without email: people copy a link and send it however they like. With SenderEmail set, Sendless also:

  • sends download links to the recipients you enter,
  • tells senders when their link is opened, if they ask for it,
  • tells the owner of a file request when files arrive.

SenderEmail must be an address or domain verified in Amazon SES in the Region of the stack. New SES accounts start in the sandbox and can only send to verified addresses; request production access before you rely on email.

Invitations and password-reset emails come from Amazon Cognito's built-in sender, no-reply@verificationemail.com, which AWS limits to a small number of messages per day. Invite people in batches if you onboard a large team.

Users and sign-in

People who send files or create file requests need an account; recipients and uploaders don't.

  • Invite people under Admin → Users. They get an email with a temporary password that is valid for 7 days, and choose their own password at the first sign-in.
  • Self sign-up: with SelfSignUpDomains set, people with an email address in those domains can create their own account on the sign-in page.
  • Administrators can change settings and manage users. Make or remove admins under Admin → Users; Sendless keeps at least one active administrator.
  • Disable a user to block their sign-in while keeping their links. Delete a user to close their links and file requests and delete their files.
  • Forgotten passwords are reset by email from the sign-in page.
  • Two-factor authentication: everyone can turn on an authenticator app, such as Microsoft Authenticator, Google Authenticator or 1Password, under the gear icon at the top right. From then on, sign-in asks for a code from the app after the password.
  • Company sign-in with Microsoft Entra ID, Okta, Google and others is part of Sendless Pro.

Sending and receiving files

Send files

On Send files, add files, optionally a title and a message, and choose how long the link lasts and how often it can be opened. Files upload straight from the browser to your S3 bucket in parts, so large uploads survive short network drops. A file can be up to 5 TB; administrators set the maximum per transfer.

  • Expiry: the link stops working after the lifetime you choose, at the latest after MaxRetentionDays.
  • Download limit: each time a recipient opens the link counts once. After opening, they have an hour to download the files. Administrators can allow links without a limit.
  • Password: optional, at least 4 characters. Share it separately from the link. A link accepts at most 10 wrong passwords per 15 minutes.
  • Email: with email turned on, enter recipients to send them the link, and ask to be notified when it's opened.

Under My transfers you see each transfer's status, how often it was opened, and every access with time, IP address and country. Deleting a transfer stops the link and deletes the files immediately.

Receive files

Under File requests, create a request link: choose how long it accepts uploads, how many uploads and how much per upload it takes, and how long received files are kept. Anyone with the link can upload, without an account. Received files appear under My transfers → Received.

Recipients

Recipients open the link in any modern browser, enter the password if there is one, and download the files one by one or all at once. They don't need an account or an app.

Settings

Admin → Settings

  • Legal links: your privacy policy and imprint, shown in the footer of every page.
  • Defaults for new transfers: the lifetime and download limit preselected on Send files.
  • Limits: the maximum size and number of files per transfer, whether links without a download limit are allowed, and whether recipients see the sender's email address.
  • Installation: the version, Region, email status and address of your installation.

Personal settings

Under the gear icon at the top right, every user can choose light or dark appearance and English or German, which are saved in the browser, and turn on two-factor authentication.

Sendless Pro

Pro runs from the same template. A license key unlocks the Pro features; nothing is reinstalled. Paste the key under Admin → License. The key is checked offline, without contacting us. When a license expires, Pro features keep working for 14 more days; after that they turn off, but nothing is deleted. Contact us for a license.

Branding

Under Admin → Branding: your name, a logo (an https URL, shown up to 40 px high), primary, background and text colors, a welcome title and text for the sign-in page, and a footer text. Background and text colors apply to the light appearance; the dark appearance uses your primary color with its own background.

Single sign-on

Under Admin → Single sign-on, add identity providers with SAML or OpenID Connect. The page shows the values to register in your provider: the reply (ACS) URL, the entity ID and the OIDC redirect URI. Assign email domains to a provider to send those users straight to it. Users are created automatically at their first sign-in.

Malware scanning

Set EnableMalwareScanning to true and install a license. Every uploaded file is scanned by GuardDuty Malware Protection for S3, and files can't be downloaded until they are clean. Infected files stay blocked. Files that can't be scanned, such as password-protected archives, are blocked unless a policy allows them. GuardDuty charges per GB scanned.

Audit log

Under Admin → Audit log, every upload, open, download and admin change, with IP address and country, by day. Export up to 31 days at a time as CSV. Choose how long events are kept under policies.

Policies

Policies apply to everyone and can only make things stricter than the settings:

  • require a password on every link, and a minimum password length,
  • a maximum link lifetime,
  • require a download limit, and the highest allowed limit,
  • blocked file types, such as exe or js,
  • allowed recipient domains for emailed links,
  • how long audit events are kept,
  • with malware scanning, whether files that can't be scanned may be downloaded.

Updating

Update the stack with the template of the new release. Files, users and settings are kept, and the update takes a few minutes.

  1. In the CloudFormation console, select the stack and choose Update.
  2. Replace the current template with the new release's Template URL from the table below.
  3. Keep all parameters as they are, confirm the IAM capability and submit.

With the AWS CLI, pass UsePreviousValue=true for every parameter you set at installation:

aws cloudformation update-stack --region eu-central-1 --stack-name sendless \
  --template-url https://sendless-releases.s3.us-east-1.amazonaws.com/v1.6.0/sendless.yaml \
  --parameters ParameterKey=AdminEmail,UsePreviousValue=true \
               ParameterKey=CustomDomainName,UsePreviousValue=true \
               ParameterKey=CertificateArn,UsePreviousValue=true \
  --capabilities CAPABILITY_IAM

Releases

VersionWhat's new and template URL
1.6.0 Two-factor authentication with an authenticator app. Updates keep all parameters as they are. https://sendless-releases.s3.us-east-1.amazonaws.com/v1.6.0/sendless.yaml
1.5.0 First public release. https://sendless-releases.s3.us-east-1.amazonaws.com/v1.5.0/sendless.yaml

Each template pins checksums of the code it installs, so an update deploys exactly the published release. The installed version is shown under Admin → Settings and in the stack's Version output.

Uninstalling

Delete the stack. Sendless empties its buckets first, then CloudFormation removes everything it created: files, users, settings and logs. This can't be undone, so download anything you want to keep beforehand.

Security and data

  • Where data lives: files are stored in an S3 bucket, and transfers and settings in a DynamoDB table, both in the Region you choose. No Lambda@Edge is used.
  • No data leaves your account: files go directly between the browser and your bucket over short-lived signed URLs. There's no telemetry, and Pro licenses are checked offline.
  • Encryption: S3 and DynamoDB encrypt data at rest, and the files bucket refuses connections without TLS.
  • Locked-down API: the API is a Lambda function URL that only your CloudFront distribution can call. The web app is served with a strict content security policy and HSTS.
  • Guaranteed deletion: a cleanup job runs every 15 minutes and deletes the files of expired, used-up and deleted transfers. As a safety net, an S3 lifecycle rule removes any file older than MaxRetentionDays plus 2 days, and unfinished uploads after 2 days.
  • Sign-in: passwords of at least 12 characters with upper-case and lower-case letters and a number, optional two-factor authentication with an authenticator app, or your company's sign-in with Pro. Changing one's email address takes effect only after the new address is verified.
  • Backups: the DynamoDB table has point-in-time recovery turned on.

Costs

Sendless has no servers and no fixed infrastructure cost. AWS bills your account for what you use: mainly storage in S3 and data transfer out to the internet when people download files, plus small amounts for Lambda, DynamoDB, CloudFront and Cognito. An idle installation costs close to nothing. Malware scanning adds GuardDuty charges per GB scanned.

Troubleshooting

The invitation didn't arrive

Check the spam folder for mail from no-reply@verificationemail.com. For an invited user, delete them under Admin → Users and invite them again. For the first administrator, resend the invitation with the AWS CLI:

aws cognito-idp admin-create-user --region <region> \
  --user-pool-id <UserPoolId output> --username admin@example.com \
  --message-action RESEND

The same command helps when the temporary password has expired after 7 days.

Someone lost their authenticator app

An administrator turns two-factor authentication off for that user with the AWS CLI; the user can then sign in with the password and set up the app again:

aws cognito-idp admin-set-user-mfa-preference --region <region> \
  --user-pool-id <UserPoolId output> --username user@example.com \
  --software-token-mfa-settings Enabled=false,PreferredMfa=false

The stack failed

Open the stack's Events tab and look for the first CREATE_FAILED entry. CNAMEAlreadyExists means the custom domain is in use elsewhere; see Custom domain. Delete a failed stack before you try again with the same name.

Emails don't arrive

Check that Admin → Settings shows email as enabled, and that SES is out of the sandbox or the recipient's address is verified in SES.

A recipient says the link doesn't work

Open the transfer under My transfers: it shows whether the link expired, reached its download limit or was deleted, and the activity shows every attempt.

Still stuck?

Write to support@silverlining.cloud.