> VAULT 420 TERMINAL — SYSTEM DOSSIER
> MISSION STATEMENT
Vault 420 is a self-hosted media and file server built and maintained by John K. It was created to give a trusted circle of friends and family a private, ad-free space to share content — no clouds, no subscriptions, no surveillance.
The vault runs on physical hardware in John's home, serving media through Jellyfin, storing ROMs, movies, music, games, and archives across four dedicated hard drives, and hosting a custom dashboard built from the ground up with a Fallout terminal aesthetic because that's just cooler.
If Vault 420 has been useful to you, consider 🌲 donating a tree to help keep the lights on.
> CHANGELOG — VAULT CONSTRUCTION LOG
- Organize the vault: create, rename, and delete folders right in Browse.
- Drag-and-drop a file onto a folder — or multi-select and use Move To… — to file things away (works on phones too via long-press).
- Folders are shared but owned: you manage your own (and can grant a fellow dweller access); the Overseer manages all.
- Your existing folders carried over automatically.
- Resilient folder uploads: interrupted uploads can be resumed by re-selecting the folder — already-uploaded files are skipped automatically, no duplicates ever.
- Uploads now retry transient network hiccups instead of freezing, and show an honest summary (added / skipped / failed) with a RESUME option if anything goes sideways.
- Duplicate detection covers folder, chunked, and zip uploads (both extract and archive modes) — the vault stays clean no matter how you send files.
- Vault Radio now broadcasts the uploaded soundtrack in FLAC quality, with automatic MP3 fallback for Apple devices.
- Tile view or list view, your call — the file library now lets you flip between a cover/thumbnail grid and a compact list everywhere it helps: any category, and inside folders too. Image files show real thumbnails. Your preference is remembered.
- FIX: the top navigation now scales cleanly to any screen width, and several screens are tidied up for phones.
- Vault-Tec has authorized a recreation program for off-duty dwellers. The terminal is somewhere on this very screen — keep your eyes on the numbers. House chips only; no caps change hands.
- Achievement Showcase — pin up to 3 of your earned badges to the top of your dossier
- Vault 420 Wrapped — the stats page now opens with headline numbers (dwellers, caps in circulation, downloads, ROMs preserved) and superlatives like Vault MVP, heaviest haul, and busiest day
- "New since your last visit" bar — see at a glance how many files and comments landed while you were away, then mark it read
- The Vault-Tec Bulletin smiley now bobs along to Vault Radio while it's playing
- Fixed: the bulletin no longer clips messages on tablet-width screens
- 50 achievements now, up from 41 — new milestones for uploads (Kilo Club), speed (Warp Speed), caps (Folk Hero), music (Audiophile), and ROMs (ROM Deity)
- Vault 420 experiment achievements — Blaze It (42 files), The Experiment (4,200 caps), and Four-Twenty, a rare brag for uploading a file at exactly 4:20
- Vault Benefactor — donate a tree to the vault, then claim your badge from the donate panel
- New Vault-Tec Bulletins with that signature Vault 420 flavor
- The Vault-Tec Bulletin now has an animated smiley that blinks and "talks" as each new message scrolls in
- Bulletin redesigned — larger, more readable text with the smiley to the left and a panel that stays a consistent size
- Top Rated panel always shows on the dashboard now, with a friendly note before any files are rated
- Vault-Tec Bulletin board added to the dashboard — rotating, Fallout-flavored public service announcements from the Overseer
- Vault Radio (Galaxy News Radio) — a bottom-bar music player that keeps playing the vault's tunes as you browse
- Ratings now earn the uploader caps, and a Top Rated panel highlights the vault's best-reviewed files
- File ratings & comments — every file now has a detail page where dwellers can rate it (1–5 caps) and leave reviews
- Mobile pass — folder cards, folder navigation, greeting bar, search, and tile grids now lay out cleanly on phones
- Fixed folder headers overflowing off-screen on small displays; floating controls shrink to fit
- MOTD panel (system info) realigned on mobile — clean captions with consistent RAM/DISK rows
- Automatic asset cache-busting — style/script changes now show up immediately, no stale cache
- Custom terminal cursor on desktop — amber arrow + reticle on clickable items (green variant in Pip-Boy theme)
- Touch devices keep their native cursor; text fields keep the I-beam caret
- ROM box art now fills in reliably on bulk uploads — a rate-limited queue replaces the old thread storm that IGDB was throttling
- User-uploaded box art is now used automatically — if you upload an image matching a ROM's name, it becomes the cover (preferred over IGDB)
- Admin buttons: [APPLY USER BOX ART] and [BACKFILL FROM IGDB], with live queue status
- Cleaner folder navigation — breadcrumb path bar, folder header with summary, and separate FOLDERS / FILES sections
- Large files now upload through the website with no install needed — the browser splits them into chunks automatically
- Folder tile navigation — click into folders to browse subfolders & files as tiles, with breadcrumbs and an "up one level" button
- Delete entire folders — [DELETE] on a collection or inside the folder view removes the whole thing (owner/admin only)
- Folders open in tile view from the library; a collapsible quick-tree is still available per folder
- Large folder uploads fixed — folders now upload in automatic batches that pass the web size limits
- Raised the server's form-parts limit so folders with thousands of files no longer get rejected
- Batches of one folder stay grouped in a single bay/collection with structure intact
- Single files over 90MB are flagged to upload via Tailscale/local (Cloudflare's free-plan per-request cap)
- Personalized dashboard greeting — your rank, caps, progress to next level, and a daily-bonus nudge
- Trending This Week + Most Downloaded panels on the dashboard
- Download counts now tracked per file
- New-dweller orientation page — auto-shown after registration with a full briefing on caps, uploads, Jellyfin, and access
- Permanent public domain — vault420.net now serves the dashboard over HTTPS, no app or VPN needed
- watch.vault420.net routes to Jellyfin for remote streaming
- Cloudflare Tunnel — secure outbound connection, home IP hidden, no router port forwarding
- Tailscale remote access added earlier for the Overseer (100.91.136.70)
- HTTPS session hardening — Secure cookies + HSTS on vault420.net, real client IP via proxy awareness (local/Tailscale access unaffected)
- Pip-Boy green theme — toggle the whole UI between Vault amber and New Vegas green, saved per browser
- Terminal settings panel (bottom-left) — theme toggle, sound on/off, ambience on/off, and FX + ambience volume sliders
- Hover + tactile click sounds on all buttons, links, and tabs (Pip-Boy static-flavored)
- Mojave flavor — boot sequence, MOTD, and lore reworked with New Vegas references
- Rank ladder re-themed to Mojave factions: Vault Dweller → Prospector → Courier → Great Khan → NCR Ranger → Legion Legate → Mr. House
- Daily bonus reflavored as a wasteland vendor's bottle-cap stash
- CRT sound system — ambient terminal hum + UI clicks, beeps, power-on, and success/error tones
- Sound controls (bottom-left) — toggle all audio or just the ambient loop, saved per browser
- Search bar on browse — search filenames, uploaders, tags, and consoles
- Favorites — star any file; favorite counts shown and ranked on the stats page
- Recently Added feed on the dashboard — newest vault uploads, refreshed live
- Vault Activity Stats page — storage by category, top contributors, most favorited, recently accessed
- Production server — migrated from Flask dev server to Gunicorn (3 workers)
- Automated daily DB + cover/avatar backups to storage4 (keeps last 14)
- Login rate limiting / lockout after repeated failures; registration abuse protection
- Security headers (CSP, X-Frame-Options) + hardened session cookies
- Folder hierarchy view on browse — uploaded folders show as expandable trees with subfolder labels preserved
- Whole folders now stored together in one bay (by dominant type) instead of being split across drives
- [DL FOLDER] downloads the entire folder as a structured zip; [DL ZIP] downloads any subfolder
- Folder downloads now work for all dwellers (shared library), not just the uploader
- Path-traversal protection added to all file and folder downloads
- Custom tags — add comma-separated tags to any upload (single file or whole folder)
- Tag filtering on browse page — click any tag to see all files sharing it
- Real-time browse updates — live banner appears when new files are added to the vault
- All file types now accepted — no more format rejections, unknown types stored as "other"
- Caps now awarded correctly on folder and zip uploads (measured transfer speed bonus applied)
- Fixed folder upload crash that blocked multi-file folder transfers
- Folder upload — select an entire folder and preserve its directory structure on upload
- Files routed to correct storage bay by type, internal subfolder tree kept intact
- Caps awarded per individual file within the folder
- Single [DL FOLDER] button on every file in a collection — streams the whole folder as a .zip
- Jellyfin installed and configured — Movies, TV Shows, and Music libraries on dedicated bays
- Jellyfin user accounts set up for PairsOfTwoSocks (admin), PsiVolt, and Flexecon
- Tailscale installed — private VPN tunnel for remote access without port forwarding
- Live service health checks on dashboard — Jellyfin and OMV Panel status updated every 30s
- Daily caps limit raised from 300 to 1,000
- About & changelog page — created by John K., mission statement, full version history
- File deletion security hardened — ownership now verified against the database, not the URL path
- Daily check-in cap bonus — clickable once per day on the home page
- Ko-fi donate button — "Donate a Tree to the Vault"
- Text rendering sharpened — removed 3D perspective tilt from main frame
- Boot sequence now plays once per session, not on every page
- Profile customization — avatar, bio, and social links (Discord, Twitch, YouTube, GitHub, website)
- Storage health admin page — LRU file groups (Never / Cold 90d+ / Warm 30–90d) with bulk delete
- Storage alert bar — admin warning banner when any bay hits 85–90%+ full
- File archiving flag system — admin flags files, users notified with Keep or Delete options
- Live bay stats on admin panel (10s poll)
- Flag count badge on profile nav link
- 41 achievements across onboarding, uploads, caps, ROMs, speed, time-of-day, and meta categories
- Steeper rank ladder — Overseer now requires 250,000 caps (was 50,000)
- Zip extraction modes — upload as archive, extract & organize by type, or extract & preserve folder structure
- Console Wars, Handheld Hero, Dedicated Gamer, ROM Archivist, Leviathan, Legend, and more achievements
- Meta achievements — Achievement Hunter (10) and Achievement Master (20)
- ROM cover art via IGDB — auto-fetched in background after upload
- Manual cover art upload and IGDB refresh per ROM
- Grid / list toggle on ROM browser (preference saved to localStorage)
- ROM console sub-tabs in browser — filter by Game Boy Advance, PlayStation, etc.
- File delete for users (own files) and admin (any file)
- Shared file library at /browse — viewable by all vault members
- Floating admin gear icon (⚙) — admins only
- ROM console detection — auto-detects console from file extension (26 mappings)
- Console picker on upload for ambiguous formats (.iso, .bin, .cue, .img)
- ROMs organized by console — storage1/{user}/roms/{Console}/file
- Vault Storage Array on dashboard with live 5s poll
- HDD storage bays mounted — storage1 (Gaming), storage2 (Video), storage3 (Audio), storage4 (Misc)
- Files routed to correct bay by type on upload
- Upload progress bar with speed, transferred size, and ETA
- Cancel upload button
- Admin panel — user management, promote/demote, reset caps, purge users
- Drive status on admin panel (lsblk integration)
- Bot protection on registration — server-side math CAPTCHA
- Math CAPTCHA regenerated on every failed attempt
- Multi-user accounts — registration, login, per-user upload folders
- Caps earning system — size × type multiplier + upload speed bonus
- 10-level Fallout rank system (Vault Dweller → Overseer)
- Leaderboard — ranked caps standings
- User profile page with level progress, upload history, and rank ladder
- Upload limit raised to 100 GB
- File categories — ROMs, Games, Movies, Music, Archives, Images, Documents
- Vault 420 dashboard — Flask web app with amber CRT terminal aesthetic
- Live system stats — CPU, RAM, disk, network, uptime, load average
- Boot sequence with RobCo Termlink typewriter effect
- CRT visual effects — scanlines, vignette, sweep, noise canvas, glass sheen, flicker
- SSH MOTD — Vault 420 ASCII logo + system stats on login
- Textual TUI — Monitor, Services, Files, Logs tabs
- Jellyfin and OMV service links
- DuckDNS dynamic DNS — vault420.duckdns.org
- systemd service — auto-starts on boot