SkillAgentSearch skills...

Transfer.sh

Easy and fast file sharing from the command-line.

Install / Use

/learn @dutchcoders/Transfer.sh
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

transfer.sh Go Report Card Docker pulls Build Status

Easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance.

Transfer.sh currently supports the s3 (Amazon S3), gdrive (Google Drive), storj (Storj) providers, and local file system (local).

<br />
<br />

Disclaimer

@stefanbenten happens to be a maintainer of this repository and the person who host a well known public installation of the software in the repo.

The two are anyway unrelated, and the repo is not the place to direct requests and issues for any of the pubblic installation.

No third-party public installation of the software in the repo will be advertised or mentioned in the repo itself, for security reasons.

The official position of me, @aspacca, as maintainer of the repo, is that if you want to use the software you should host your own installation.

<br />
<br />

Usage

This section outlines how to use transfer.sh

<br />

Upload

$ curl -v --upload-file ./hello.txt https://transfer.sh/hello.txt
<br />

Encrypt & Upload

$ gpg --armor --symmetric --output - /tmp/hello.txt | curl --upload-file - https://transfer.sh/test.txt
<br />

Download & Decrypt

$ curl https://transfer.sh/1lDau/test.txt | gpg --decrypt --output /tmp/hello.txt
<br />

Upload to Virustotal

$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
<br />

Deleting

$ curl -X DELETE <X-Url-Delete Response Header URL>
<br />
<br />

Request Headers

This section explains how to handle request headers with curl:

<br />

Max-Downloads

$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H "Max-Downloads: 1" # Limit the number of downloads
<br />

Max-Days

$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H "Max-Days: 1" # Set the number of days before deletion
<br />

X-Encrypt-Password

Beware, use this feature only on your self-hosted server: trusting a third-party service for server side encryption is at your own risk

$ curl --upload-file ./hello.txt https://your-transfersh-instance.tld/hello.txt -H "X-Encrypt-Password: test" # Encrypt the content server side with AES256 using "test" as password
<br />

X-Decrypt-Password

Beware, use this feature only on your self-hosted server: trusting a third-party service for server side encryption is at your own risk

$ curl https://your-transfersh-instance.tld/BAYh0/hello.txt -H "X-Decrypt-Password: test" # Decrypt the content server side with AES256 using "test" as password
<br />
<br />

Response Headers

This section explains how to handle response headers:

<br />

X-Url-Delete

The URL used to request the deletion of a file and returned as a response header:

curl -sD - --upload-file ./hello.txt https://transfer.sh/hello.txt | grep -i -E 'transfer\.sh|x-url-delete'
x-url-delete: https://transfer.sh/hello.txt/BAYh0/hello.txt/PDw0NHPcqU
https://transfer.sh/hello.txt/BAYh0/hello.txt
<br />
<br />

Examples

See good usage examples on examples.md

<br />

Link aliases

Create direct download link:

https://transfer.sh/1lDau/test.txt --> https://transfer.sh/get/1lDau/test.txt

Inline file:

https://transfer.sh/1lDau/test.txt --> https://transfer.sh/inline/1lDau/test.txt

<br />
<br />

Usage

Parameter | Description | Value | Env
--- |-----------------------------------------------------------------------------------------------|-------------------------------|-------------------------------| listener | port to use for http (:80) | | LISTENER | profile-listener | port to use for profiler (:6060) | | PROFILE_LISTENER | force-https | redirect to https | false | FORCE_HTTPS | tls-listener | port to use for https (:443) | | TLS_LISTENER | tls-listener-only | flag to enable tls listener only | | TLS_LISTENER_ONLY | tls-cert-file | path to tls certificate | | TLS_CERT_FILE | tls-private-key | path to tls private key | | TLS_PRIVATE_KEY | http-auth-user | user for basic http auth on upload | | HTTP_AUTH_USER | http-auth-pass | pass for basic http auth on upload | | HTTP_AUTH_PASS | http-auth-htpasswd | htpasswd file path for basic http auth on upload | | HTTP_AUTH_HTPASSWD | http-auth-ip-whitelist | comma separated list of allowed ips to upload without auth challenge | | HTTP_AUTH_IP_WHITELIST | virustotal-key | VirusTotal API key | | VIRUSTOTAL_KEY | ip-whitelist | comma separated list of ips allowed to connect to the service | | IP_WHITELIST | ip-blacklist | comma separated list of ips not allowed to connect to the service | | IP_BLACKLIST | temp-path | path to temp folder | system temp | TEMP_PATH | web-path | path to static web files (for development or custom front end) | | WEB_PATH | proxy-path | path prefix when service is run behind a proxy (a / prefix will be trimmed) | | PROXY_PATH | proxy-port | port of the proxy when the service is run behind a proxy | | PROXY_PORT | email-contact | email contact for the front end | | EMAIL_CONTACT | ga-key | google analytics key for the front end | | GA_KEY | provider | which storage provider to use | (s3, storj, gdrive or local) | | uservoice-key | user voice key for the front end | | USERVOICE_KEY | aws-access-key | aws access key | | AWS_ACCESS_KEY | aws-secret-key | aws access key | | AWS_SECRET_KEY | bucket | aws bucket | | BUCKET | s3-endpoint | Custom S3 endpoint. | | S3_ENDPOINT | s3-region | region of the s3 bucket | eu-west-1 | S3_REGION | s3-no-multipart | disables s3 multipart upload | false | S3_NO_MULTIPART | s3-path-style | Forces path style URLs, required for Minio. | false | S3_PATH_STYLE | storj-access | Access for the project | | STORJ_ACCESS | storj-bucket | Bucket to use within the project | | STORJ_BUCKET | basedir | path storage for local/gdrive provider | | BASEDIR | gdrive-client-json-filepath | path to oauth client json config for gdrive provider | | GDRIVE_CLIENT_JSON_FILEPATH | gdrive-local-config-path | path to store local transfer.sh config cache for gdrive provider | | GDRIVE_LOCAL_CONFIG_PATH | gdrive-chunk-size | chunk size for gdrive upload in megabytes, must be l

View on GitHub
GitHub Stars15.8k
CategoryDevelopment
Updated1d ago
Forks1.6k

Languages

Go

Security Score

100/100

Audited on Mar 26, 2026

No findings