- JavaScript 88.4%
- HTML 8.8%
- SCSS 1.7%
- Dockerfile 1.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| web | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| .oxfmtrc.json | ||
| .oxlintrc.json | ||
| Caddyfile | ||
| compose.yml | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
vixen.link (now with S3 support!)
This repository contains the new backend for https://vixen.link/ which is a simple file sharing service for myself and my friends.
Specifically, vixen.link provides the ability to upload single files (one or more at a time) to a S3 bucket, and then get public URLs in the style of https://cdn.vixen.link/acqzw8/dance.gif or similar. These links can then be shared anywhere online, usually via Discord/IM or social media, or even hotlinked on any old website.
Additionally:
- You can see previously uploaded files in a handy list
- Previously uploaded files can be deleted, though this takes time to propagate
- Files can have an expiry date, and will be deleted automatically
The actual production https://vixen.link/ application uses:
- Backblaze B2 as the S3-compatible storage provider
- Bunny CDN as the content delivery network and DDoS protection
Files are uploaded from the browser straight into an S3 bucket using presigned multipart URLs, and served back through the BunnyCDN pull zone in front of that bucket.
Usage
cp .env.example .env # fill in the S3 credentials
npm install
npm run build # builds web/ into public/
node --env-file=.env src/main.js
For frontend work, npm run dev:web serves the UI on :5173 with hot reload and proxies /api to the server on :3000.
In production:
docker compose up -d --build
Caddy terminates TLS and proxies vixen.link to 127.0.0.1:5280; see Caddyfile.