YesNAS is an open-source home NAS system developed using Next.js 14 in a full-stack environment. By installing a Node environment on your server and running the application, you can transform it into a NAS server. The system supports RAID configuration; however, if your hard drives are limited, you can opt not to set up RAID. It also provides an excellent folder backup system, allowing you to easily back up important folders to another disk or cloud storage. Additionally, it supports Docker and virtual machine management. The system is currently under development, and we welcome your participation!
npm run dev
# installs nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# download and install Node.js (you may need to restart the terminal)
nvm install 20
# verifies the right Node.js version is in the environment
node -v # should print `v20.18.0`
# verifies the right npm version is in the environment
npm -v # should print `10.8.2`
npm install pm2@latest -g
npm install
npm run build
pm2 start npm --name "YesNAS" -- start -- -p 3001
- Browse, upload, and download files on the server
- Create and Run Docker containers
- VM management
- Server monitoring
- ...
This project uses SQLite database named yes.db
. To Ensure the project runs correctly, you may need to edit the database rows.
- Open the
yes.db
file located in the root directory of the project using an SQL editor or SQL command. - Update the rows in the dev table to reflect your server directory.
- ▲Next.js(using App Directory and React Server Components) – React framework for building performant apps with the best developer experience
- Zustand – A small, fast, and scalable bearbones state management solution. Zustand has a comfy API based on hooks. It isn't boilerplatey or opinionated, but has enough convention to be explicit and flux-like.
- nanoid – A tiny, secure, URL-friendly, unique string ID generator for JavaScript.
- next-intl – Support multiple languages, with your app code becoming simpler instead of more complex.
- dayjs – Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API.
- CodeMirror – A component that highlights the changes between two versions of a file in a side-by-side view, highlighting added, modified, or deleted lines of code.
- ▲Vercel – Easily preview & deploy changes with git
- PM2 – PM2 is a daemon process manager that will help you manage and keep your application online 24/7 .
- Tailwind CSS – Utility-first CSS framework for rapid UI development
- react-icons – Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons that your project is using.
- Headless UI – Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS. React.
- Apache ECharts – Apache ECharts, a powerful, interactive charting and visualization library for browser.