{"repo":"soltros/Cabinet","free":true,"listed":false,"github":"https://github.com/soltros/Cabinet","clone":"git clone https://github.com/soltros/Cabinet.git","description":"Cabinet is a lean, high-performance \"File Locker\" designed for self-hosting. It prioritizes a fast web experience, mobile-first design, and simple file management without the bloat of complex syncing engines.","language":"JavaScript","stars":10,"topics":[],"license":"GPL-3.0","category":"self-hosted-apps","readme_excerpt":"Cabinet Cabinet is a lean, self-hosted file locker. It focuses on a fast, mobile-friendly web experience, secure sharing, and high-speed uploads without the bloat of background sync engines. Screenshots Cabinet is optimized for mobile screens and can be added to your home screen as a Progressive Web App (PWA): Mobile List View Mobile Grid View Features Mobile-First UI : Responsive React frontend with custom bottom-sheet action drawers. On-the-Fly Encryption : All files are encrypted at rest using AES-256-CTR. Decryption is streamed on-the-fly, supporting random access range requests (like video scrubbing) with zero memory overhead. Smart Previews : Auto-generated thumbnails for images, videos, and PDFs. Public Sharing : Generate short link hashes with optional password protection, download count limits, and expiration dates. Single Container : Frontend, modular Express backend, and SQLite database run together in one lightweight Docker image. Setup & Running Environment Variables Set these variables in your container run config or docker-compose file: JWT SECRET : Secret key for session authentication. [!WARNING] If JWT SECRET is not set, it defaults to a public fallback ( 'dev-secret-key' ). Setting a custom, unique JWT secret is mandatory for production deployments to prevent session forging and unauthorized access to your file locker. You can generate a secure random string by running: ENCRYPTION KEY : Secret key used to encrypt/decrypt physical files at rest. [!WARNING] F","default_branch":null,"files":null,"tree":[],"storefront":"/r/soltros","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/soltros/Cabinet/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}