A secure private file host program. Bandwidth & request rate limiting, file sanitizing, good on resources, ShareX compatibility, and more.
Go to file
vysion 7fe0828c8f add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
api add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
conf update examples, upgrade sharex config example to 13.7.0 2022-03-22 20:13:15 -07:00
constants add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
example update examples, upgrade sharex config example to 13.7.0 2022-03-22 20:13:15 -07:00
global Added constants.go 2021-09-13 21:59:45 -07:00
logger add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
middleware add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
response add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
routes add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
security Reworked project structure 2021-09-08 16:37:19 -07:00
utils Added constants.go 2021-09-13 21:59:45 -07:00
.gitignore update readme and gitignore 2022-03-22 20:12:05 -07:00
Dockerfile Reworked project structure 2021-09-08 16:37:19 -07:00
LICENSE update license year 2022-03-22 20:13:33 -07:00
README.md update readme and gitignore 2022-03-22 20:12:05 -07:00
go.mod upgrade dependencies 2022-03-22 20:12:33 -07:00
go.sum upgrade dependencies 2022-03-22 20:12:33 -07:00
init.go add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00
main.go add logger, remove unncecessary code 2022-03-22 20:15:29 -07:00

README.md

Tytanium

A durable and secure private file host solution. Intended for personal or small group use.

Features

  • Tune the server to exactly how you want with extensive customization options
  • Built with fasthttp for optimal performance instead of the native http module
  • File whitelist/blacklist type checks done via file headers rather than extensions
  • Sanitize file type from rendering in HTML/other types to mitigate phishing attacks (Change their Content-Type to text/plain)
  • Option to return a zero-width file IDs in a URL after upload - paste invisible but functional links!
  • Works well with image capture suites, such as ShareX/MagicCap
  • Good on system resources (<1MiB memory usage when idle)
  • Limit how many requests/second to certain paths to prevent DoS attacks or an overloaded server
  • Not written in Javascript!

Setup

  1. Download the binary in the Releases tab, or build the code from source.
  2. Rename example.yml to config.yml and set the values you want, or create a config.yml from scratch.
  3. Start the binary with your method of choice.
  4. Done!

How to Use

  1. Create a POST request to /upload with a file in the field "file". Put the key in the Authorization header.
  2. Set ?omitdomain=1, if you don't want the host's original domain appended before the file name in the response. For example: a.png instead of https://a.com/a.png. This is useful if you have vanity/proxy domains you want to use.
  3. Add ?zerowidth=1 and set it to 1 to make your image URLs appear "zero-width". If you don't get what that means, try it, and see what happens.
  4. The server will respond with a link to the file (or just the file name if you set ?omitdomain=1). It will be just text so no need to parse any JSON.

Optional stuff

  • You can use the Size Checker program to make the /stats path produce values other than 0 for file count and total size used. Just tell it to check your files directory. You can run it as a cron job or run it manually whenever you want to update it. (If you choose not to use it, /stats will always return 0 for some fields.)
  • If you want to change the favicon, replace routes/favicon.ico with your own image.

License

MIT License