4.5 KiB
ass
ass is a self-hosted ShareX upload server written in Node.js. I initially started this project purely out of spite.
Features
- ✔️ Token authorization via HTTP
Authorization
header - ✔️ Upload images, videos, files
- ✔️ Seamless inline video embeds on Discord
- ✔️ Delete support
- ✔️ Multiple access types
- ZWS
- Mixed-case alphanumeric
- Original
- ❌ Thumbnail support
- ❌ Multiple database types
- JSON
- Mongo (soon!)
- MySQL (soon!)
- PostgreSQL (soon!)
- ❌ Multi-user support (upload restrictions, web library, etc.)
- ❌ Block-storage support including Amazon S3
- ❌ Usage metrics
Access types
Type | What is it? |
---|---|
ZWS (Zero-width spaces) | The "fancy" mode. When pasted elsewhere, the URL appears to be just your domain name. |
Mixed-case alphanumeric | The "safe" mode. URL's are browser safe as the character set is just letters & numbers. |
Original | The "basic" mode. URL matches the same filename as when the file was uploaded. This may be prone to conflicts with files of the same name. |
Installation
The installation may look daunting but it's really pretty straightforward. Just follow it word-for-word & you'll be fine. If you are not fine, then by all means open an Issue & I'll try my best to help.
- First of all you must have Node.js 14 or later installed. It might work with Node.js 12 but just use 14.
- Clone this repo using
git clone https://github.com/tycrek/ass.git && cd ass/
- Run
npm i
to install the required dependencies - Run
npm run setup
to start the easy configuration - Run
npm start
to start the server. The first time you run it you will be shown your first authorization token; save this as you will need it to configure ShareX. - (Optional) You must also configure an SSL-enabled reverse proxy (only if you want to use HTTPS):
- I personally use Caddy, see my tutorial on setting that up
- You may also use Apache or Nginx as reverse proxies
Generating new tokens
If you need to generate a new token at any time, run npm run new-token
. This will automatically load the new token so there is no need to restart ass.
Cloudflare users
In your Cloudflare DNS dashboard, make sure your domain/subdomain is set to DNS Only.
Configure ShareX
- Add a new Custom Uploader in ShareX by going to
Destinations > Custom uploader settings...
- Under Uploaders, click New & name it whatever you like.
- Set Destination type to
Image
,Text
, &File
- Request tab:
- Method:
POST
- URL:
https://your.domain.name.here/
- Body:
Form data (multipart/form-data)
- File from name:
file
(literally put "file
" in the field) - Headers:
- Name:
Authorization
- Value: (the value provided by
npm start
on first run)
- Name:
- Method:
- Response tab:
- URL:
$json:.resource$
- Deletion URL:
$json:.delete$
- URL:
- The file
sample_config.sxcu
can also be modified & imported to suit your needs
Header overrides
If you need to override a specific part of the config to be different from the global config, you may do so via "X
" HTTP headers:
Header | Purpose |
---|---|
X-Ass-Domain |
Override the domain returned for the clipboard |
X-Ass-Access |
Override the generator used for the resource URI. Must be one of: original , zws , or random (see above) |
Contributing
No strict contributing rules at this time. I appreciate any Issues or Pull Requests.