5b4b5d4b87 | ||
---|---|---|
api | ||
conf | ||
constants | ||
encryption | ||
example | ||
global | ||
logger | ||
middleware | ||
response | ||
routes | ||
security | ||
utils | ||
.gitignore | ||
Dockerfile | ||
LICENSE | ||
README.md | ||
go.mod | ||
go.sum | ||
init.go | ||
main.go |
README.md
Tytanium
Tytanium is a private file host program, meant for a single user or a small group. Here are the main highlights:
- SHA2-512 file encryption at rest, with an encryption key unique to each file
- Tune the server to exactly how you want with extensive customization options
- 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
- Zero-width strings: make your links appear invisible! (Example: https://example.com/file.png?enc_key=X appears as https://example.com/)
- Not written in Javascript!
Please note that files are NOT encrypted client-side; encryption is done on the server.
Setup
- Download the binary in the Releases tab, or build the code from source.
- Rename
example.yml
toconfig.yml
and set the values you want, or create aconfig.yml
from scratch. - Mark the binary as executable (this can be done with
chmod
).
Upload & Response
Create a POST request to /upload
with a file in the field "file". Put the key in the Authorization
header.
Query arguments you can pass:
?zerowidth=1
: Zero-width links. By enabling this, you can turn a URL's path invisible (See example above in the feature list).uri
will be zero-width if you specified?zerowidth=1
.
Example response on success:
{
"status": 0,
"data": {
"uri": "https://example.com/file.png?enc_key=ABCDEF",
"path": "file.png?enc_key=ABCDEF",
"file_name": "file.png",
"encryption_key": "ABCDEF"
}
}
If there's any error, the response will look like this. Status code 1
means a generic error, 2
means something broke internally. message
will contain the error message.
{
"status:": 1,
"message": "Error message"
}
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.