Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudNest Logo

CloudNest

Your Personal Cloud — Lightweight, Secure, Self-Hosted.
A modern file management system built for Armbian & single-board computers.

Status Node.js Express SQLite License



✨ Features

Feature Description
📤 Chunked & Resumable Uploads Handles large files with automatic 2 MB chunking, parallel transfer, and resume-on-failure
🔍 Auto Storage Discovery Automatically detects /media, /mnt, and custom mount points on Linux systems
🛡️ Security First Path traversal prevention, Helmet headers, CORS, and rate limiting out of the box
🎨 Glassmorphism UI Premium dark-theme dashboard — zero frameworks, pure vanilla HTML / CSS / JS
📱 Responsive Design Works seamlessly from desktop to mobile with adaptive grid & list views
⚡ SBC Optimized Minimal memory footprint — runs smoothly on Raspberry Pi, Orange Pi, and similar boards
🔗 Shareable Links Generate direct download links for any file with one click
📦 One-Command Deploy Automated systemd service setup via deploy-armbian.sh

🏗️ Architecture

cloudnest/
├── public/                  # Frontend SPA
│   ├── css/
│   │   ├── main.css         # Design system & tokens
│   │   └── components.css   # Component styles
│   ├── js/
│   │   ├── api.js           # API client layer
│   │   ├── app.js           # Main application controller
│   │   └── components/      # UI modules
│   │       ├── fileGrid.js
│   │       ├── contextMenu.js
│   │       ├── previewModal.js
│   │       ├── storageSidebar.js
│   │       └── uploadManager.js
│   └── index.html
├── server/
│   ├── index.js             # Express entry point
│   ├── config.js            # Central configuration
│   ├── db/                  # SQLite database layer
│   ├── middleware/           # Security middleware
│   ├── routes/              # API route handlers
│   │   ├── files.js         # File operations (CRUD)
│   │   ├── storage.js       # Storage device discovery
│   │   └── upload.js        # Chunked upload endpoint
│   ├── services/            # Business logic
│   │   ├── fileService.js
│   │   ├── chunkService.js
│   │   └── storageService.js
│   └── utils/
│       └── portFinder.js
├── deploy-armbian.sh        # One-click deployment script
└── package.json

🚀 Quick Start

Prerequisites

  • Node.js v18 or higher
  • npm (bundled with Node.js)

1 · Clone & Install

git clone https://github.com/jnckcode/cloudnest.git
cd cloudnest
npm install

2 · Run

# Production
npm start

# Development (hot reload)
npm run dev

3 · Open

Navigate to http://localhost:3000 in your browser.

On Windows, CloudNest automatically creates a mock_storage/ directory with sample mount points for local testing.


🐧 Armbian / Linux Deployment

Deploy CloudNest as a background systemd service with a single command.

Prerequisites

Node.js (v18+) and npm must already be installed — either system-wide or via a version manager (nvm, fnm, n, etc.).

Standard Deploy

git clone https://github.com/jnckcode/cloudnest.git
cd cloudnest
sudo chmod +x deploy-armbian.sh
sudo ./deploy-armbian.sh

Deploy Directly to /opt

If you clone the repo straight into /opt/cloudnest, the script will skip the copy step automatically:

sudo git clone https://github.com/jnckcode/cloudnest.git /opt/cloudnest
cd /opt/cloudnest
sudo chmod +x deploy-armbian.sh
sudo ./deploy-armbian.sh

Using with NVM

When Node.js is managed by nvm, pass your PATH through to root:

sudo -E env "PATH=$PATH" ./deploy-armbian.sh

What the script does:

  1. Validates that node and npm are available in PATH
  2. Installs system dependencies (sqlite3, build-essential)
  3. Copies project to /opt/cloudnest (skipped if already there)
  4. Installs production npm dependencies
  5. Creates storage directory at /var/cloudnest/storage
  6. Registers and enables a systemd service on port 3000
# Manage the service
sudo systemctl status cloudnest
sudo systemctl restart cloudnest
sudo journalctl -u cloudnest -f    # Live logs

🗑️ Complete Uninstallation

To completely and cleanly remove CloudNest (service, app files, node modules, database, env, and all storage data without leftover traces):

sudo chmod +x uninstall-armbian.sh
sudo ./uninstall-armbian.sh

You can also run sudo ./uninstall-armbian.sh -y for non-interactive execution.


🔧 Configuration

CloudNest is configured via environment variables:

Variable Default Description
PORT 3000 Server listen port
NODE_ENV — Set to production for optimized mode
CLOUDNEST_STORAGE_ROOT /var/cloudnest/storage Root path for file storage on Linux

🧰 Tech Stack


Node.js

Express

better-sqlite3

HTML5

CSS3

JavaScript

📄 License

Distributed under the MIT License. See LICENSE for details.


Built with ☁️ by jnckcode

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages