2022-03-23 03:12:05 +00:00
![](https://i.imgur.com/AHHWH3z.png)
2021-01-15 21:44:25 +00:00
2022-03-30 18:54:17 +00:00
## Tytanium
2021-04-30 10:06:46 +00:00
2022-03-30 18:54:17 +00:00
Tytanium is a private file host program, meant for a single user or a small group. Here are the main highlights:
2021-04-30 10:06:46 +00:00
2022-03-30 19:14:34 +00:00
- SHA2-512 file encryption at rest, with an encryption key unique to each file
2021-09-12 20:18:32 +00:00
- Tune the server to exactly how you want with extensive customization options
- Works well with image capture suites, such as ShareX/MagicCap
2022-03-23 03:12:05 +00:00
- 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
2022-04-03 04:03:41 +00:00
- Zero-width strings: make your links appear invisible! (Example: https://example.com/file.png?enc_key=X appears as https://example.com/)
2021-04-30 10:06:46 +00:00
- Not written in Javascript!
2021-01-15 21:44:25 +00:00
2022-03-30 19:14:34 +00:00
*Please note that files are NOT encrypted client-side; encryption is done on the server.*
2021-07-24 14:01:51 +00:00
### Setup
2021-01-15 21:44:25 +00:00
2022-03-23 03:12:05 +00:00
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.
2022-03-30 18:54:17 +00:00
3. Mark the binary as executable (this can be done with `chmod` ).
2021-01-20 08:43:19 +00:00
2022-04-03 04:03:41 +00:00
### Upload & Response
2021-01-15 21:44:25 +00:00
2022-04-03 04:03:41 +00:00
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:
```json
{
"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.
```json
{
"status:": 1,
"message": "Error message"
}
```
2021-02-24 10:14:56 +00:00
2022-03-23 03:12:05 +00:00
### Optional stuff
2021-02-24 10:14:56 +00:00
2022-03-23 03:12:05 +00:00
- You can use the [Size Checker ](https://github.com/vysiondev/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 ](LICENSE )