File sharing, url shortener and pastebin all in one place.
Please star this project if you find it useful, thank you!
![]() |
![]() |
---|---|
![]() |
![]() |
- works in mobile browsers, can upload file / text with ctrl+v, drag and drop, browse file or through terminal
- Extremely easy to set up, all you need is
go build .
or use the docker-compose.yaml and it's done - Very easy for modificiations, don't like the style? pick a .css file from here and replace the
static/theme.css
, don't like the layout? the html page is well commented and structured - Can run on any OS or deployment platforms like repl.it, render, fly.io, etc
- Designed to run efficiently on any system, regardless of its CPU or memory resources
- Can handle gigabytes of file upload and download with fixed memory and cpu usage
- Encryption done right, all your data can be secured with AES & pbkdf2 for passwords
- Decryption is done on the fly, the encrypted data is never decrypted to the disk
- Short & unambiguous URL generation (with letters like ilI1 omitted) with collision detection
- QR code support to quickly share files to / between mobile devices
simply paste any valid url (must start with http://
or https://
) to the textbox and upload
pick a .css file from here and replace the static/theme.css
, or search for "classless css"
- Download / clone this repo
- Make a folder called
uploads
- Run
docker compose up
- Download / clone this repo
- Open terminal
- Run
go build .
You can modify the variables inside data/settings.json
fileSizeLimitMB
= limit file size (in megabytes)textSizeLimitMB
= limit text size (in megabytes)streamSizeLimitKB
= limit file encryption, decryption, upload & download buffer stream size (in kb) to limit memory usagestreamThrottleMS
= add throttle to the encryption, decryption, upload & download buffer to limit cpu usagepbkdf2Iterations
= key derivation algorithm iteration, the higher the better, but 100000 should be enoughcmdUploadDefaultDurationMinute
= default file duration if you upload file through curl if duration is not specifiedBaseUrl
= a prefix for all the endpoints, which is useful when hosting multiple services on the same hostname
You can modify CPU/memory usage by calculating the memory usage / sec with streamSizeLimitKB * (1000/streamThrottleMS)
, the default setting can handle 40 MB of data on file upload, download, encryption & decryption / second, you can tune this down if needed
If you want to run GigaPaste behind a caddy reverse proxy, you can, for example, set the BaseUrl
setting to "/gigapaste" and use the following config in the CaddyFile:
yoursite.com {
encode zstd gzip
reverse_proxy /gigapaste/* gigapaste:80
}
and access GigaPaste at yoursite.com/gigapaste/
curl -F "file=@main.go" -F "duration=10" -F "pass=123" -F "burn=true" yoursite.com
Note that the duration, password, and burn is totally optional, you can just write curl -F "file=@file.txt" yoursite.com
for quick upload
For maximum security, it is recommended to encrypt your file before uploading
The core features are complete & there will be no new major feature unless it's a really good idea. Any changes to the project will either be minor improvements or bugfix.