π ClyoCloud
A personal, self-hosted cloud storage and media management application built for privacy, efficiency, and aesthetics.
ClyoCloud is designed to be a lightweight, privacy-focused alternative to mainstream cloud storage providers. It allows you to store, organize, stream, and share your files effortlessly from your own hardware, keeping your data entirely under your control.
π Key Features
- π Personal Cloud Storage: Securely host all your files and media on your own hardware.
- π Secure Authentication & 2FA: Protect your dashboard with TOTP-based Two-Factor Authentication (e.g., Google Authenticator, Authy).
- β Favorites & Collections: Star important items for instant access in a dedicated view, or organize files dynamically using tags.
- π Activity Tracking: Stay informed with detailed activity logs capturing file additions, moves, and deletions.
- π¨ Advanced Media Management: Automatic thumbnail generation, file tagging, and descriptions.
- π¬ Seamless Video Streaming: Built-in, range-aware video streaming supporting seamless scrubbing and playback.
- π Public Sharing: Generate public, unauthenticated links easily to share files without giving out account access.
- π Modern File Operations: Drag-and-drop uploads, context-menu actions, bulk deletion/downloads, folder creation, and on-the-fly zipping.
π Tech Stack & Architecture
ClyoCloud leverages a modern, lightweight JavaScript stack to maximize performance and portability.
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Nuxt 3 (Vue 3 Composition API), Tailwind CSS, DaisyUI | High-performance, reactive UI with rich user transitions and responsive design. |
| Backend | Nitro (H3 / Node.js) | Lightweight, minimal HTTP framework handling API endpoints, authentication, and file streams. |
| Media Processing | ffmpeg & ffprobe | Asynchronous generation of thumbnails and previews for video and image files. |
| Metadata | Sidecar-based .cloudinfo files | Portable, zero-database JSON metadata storage living directly alongside your assets. |
π Getting Started
π Prerequisites
Before setting up, ensure you have the following installed:
βοΈ Configuration
ClyoCloud utilizes environment variables for settings. Create a .env file in the root directory:
PORT=6969
STORAGE_PATH=/path/to/your/storage
THUMBNAIL_PATH=/path/to/your/thumbnails
JWT_SECRET=your_secure_random_string_here
Ensure the directory paths defined in STORAGE_PATH and THUMBNAIL_PATH exist and are writeable by the user running the ClyoCloud process.
π» Installation
Follow these steps to get your server up and running:
-
Clone the Repository
git clone <repository-url> cd ClyoCloud -
Install Dependencies
npm install -
Run Development Server
npm run devThe application will start in development mode (usually on
http://localhost:3000). -
Build and Run for Production
# Build the production bundle npm run build # Start the server node .output/server/index.mjs
π‘ Security & Design Choices
Why sidecars instead of a database?
ClyoCloud doesn't require a database engine (like SQLite, PostgreSQL, or MongoDB). Instead, metadata is stored in .cloudinfo sidecar files directly adjacent to each resource. This choice ensures that your cloud storage remains extremely portableβif you move your folder to another computer, your labels, tags, and favorites move with it automatically!
Key Security Implementation:
- Path Validation: All user operations are strictly checked to prevent Directory Traversal attacks.
- Token Authentication: API routes are guarded with signed JSON Web Tokens (JWT).
- 2FA (TOTP): Session generation requires a valid two-factor authentication token once configured, protecting your cloud storage from unauthorized logins.