Watch
1
0
Fork
You've already forked vixen.link
0
Backend for vixen.link, now with S3 support
  • JavaScript 88.4%
  • HTML 8.8%
  • SCSS 1.7%
  • Dockerfile 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-06 19:39:11 -07:00
src theme update, allow svg 2026-08-27 22:20:22 -07:00
web theme update, allow svg 2026-08-27 22:20:22 -07:00
.editorconfig initial commit 2026-08-27 21:22:56 -07:00
.env.example add multiupload 2026-08-27 21:44:11 -07:00
.gitignore theme update, allow svg 2026-08-27 22:20:22 -07:00
.oxfmtrc.json initial commit 2026-08-27 21:22:56 -07:00
.oxlintrc.json initial commit 2026-08-27 21:22:56 -07:00
Caddyfile initial commit 2026-08-27 21:22:56 -07:00
compose.yml update compose 2026-09-06 19:39:11 -07:00
Dockerfile initial commit 2026-08-27 21:22:56 -07:00
package-lock.json initial commit 2026-08-27 21:22:56 -07:00
package.json initial commit 2026-08-27 21:22:56 -07:00
README.md initial commit 2026-08-27 21:22:56 -07:00
vite.config.js initial commit 2026-08-27 21:22:56 -07:00

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.