Table of Contents
Although there are already many articles online about NAS and hosts for personal or family services, most focus on the experience of hardware and custom software from NAS manufacturers. Many friends, after getting a NAS, put in a great deal of effort to deploy a service, only to find the experience mediocre. It might even be inferior to the applications provided by big internet companies. In the end, after all the fuss, it’s mainly used for backups and watching shows. Therefore, I dare to introduce, in a broad but not deep manner, my experience with the Home Server over the years.
NAS Hardware Specification
While this article will not touch upon hardware choices, I will briefly introduce the overview of my personal home server hardware. I have two server hardware setups: the ASRock DeskMini X300 and the QNAP TS-453Bmini from QNAP. The X300 is an STX form factor barebones system running on the Ubuntu 20.04 OS, while the 453Bmini is a NAS product from QNAP, running its native QTS 5.0 system. Below are the hardware configurations for both servers. Notably, the high-capacity volume on the NAS is mounted on Ubuntu via NFS.
|Intel® Celeron® J3455
|Integrated Intel® HD 500
|SSD 1T + 500G
|HDD 18T + 12T + 8T
|2xM.2 / 2×2.5″SATA / Wi-Fi / USB3.2 / DP, HDMI / GB Ethernet Port
|4×3.5″SATA / 4xUSB3.2 / HDMI / 2xGB Ethernet Port
In recent years, various mini-hosts, NAS, and light NAS systems have been continuously updated and introduced. The above configurations are just for reference. For the services introduced in this article, my hardware setup can handle them with ease.
Generally speaking, a home server can be used for the following needs:
Storage: BT/PT downloading, file synchronization/backup;
Multimedia: Management and online playback of movies/music/books;
Automation: Smart home, automated workflows, web crawling;
Gaming: Private servers;
Website: Personal websites;
Networking: Software-based routers, traffic auditing;
Lab: Some people use them in production/entertainment to learn new technologies.
First, let’s take an overview of the services deployed on my home server. They can be categorized into six main types based on their functions: Storage and Synchronization, RSS, Multimedia, Automation, Monitoring, and Other Applications. Of course, there’s another category I call "Infrastructure," which I haven’t listed, but they are indispensable for realizing the aforementioned six types of functions. Examples include the Nginx reverse proxy, Let’s Encrypt SSL certificate updates, DDNS, Wireguard VPN, containers, virtual machines, and so on.
Most of these services are free and open-source and can be conveniently deployed via Docker. As two special cases: Roon requires a paid subscription, and Plex offers an optional paid upgrade to enhance the mobile experience.
Storage and Synchronization
My synchronization/backup needs can be categorized into 7 types:
- Notes: Markdown-formatted text, various local attachments, using Obsidian as the terminal software.
- Documents: Scientific research literature in PDF format, databases, using Zotero as the terminal software.
- Passwords: Important keys, website/application passwords with automatic filling.
- Photo Albums: Photos taken with mobile phones/tablets + photos taken with cameras.
- Screenshots: Screenshots from mobile phones/tablets synchronized in real-time to other devices.
- Work Files: A large number of files in various formats that require version control and easy sharing.
- Transit Station: Transient text/file transfers, receiving files sent to me by others.
This is a storage and synchronization solution that can cover all platforms. Although there are quite a few services to deploy and terminal software to install, these software tools can generally run in the background seamlessly. The services deployed on the home server include:
- Nextcloud: A private cloud storage solution that handles PC file synchronization, version control, and provides a web interface and mobile app.
- Immich: For photo backup and browsing, offering a web interface and mobile app.
- Bitwarden: For password synchronization and autofill, providing web browser plugins and mobile apps.
- Resilio: P2P file synchronization for cross-platform file syncing (can be replaced with MicroBin).
- MicroBin: A web application for sharing text and files, with a self-destruct feature.
For mobile devices, you need to install Resilio, Immich, and Bitwarden. For PCs, you need to install Resilio, Bitwarden plugins, and Nextcloud."
Notes and Documents
My note-taking system is built using Obsidian, and most of the notes are directly written within Obsidian. There are a few other sources, such as handwritten notes on mobile devices, online multi-dimensional tables, and e-book reading notes, but these can be conveniently imported into or embedded within Obsidian. I include Zotero’s attachment folder as a subfolder within Obsidian’s Vault. Therefore, when I’m organizing summaries or ideas, I can easily reference scientific literature from Zotero.
I use Resilio for real-time synchronization of the Obsidian folder, ensuring that whenever I open Obsidian on computer 1, computer 2, mobile phone, or tablet, I can access the latest version, make modifications, and synchronize them.
The photos come primarily from two sources: mobile phone photos and camera photos. Through the Immich software on my mobile phone, I can monitor and backup the Camera album in real-time to the server. I can also perform actions like "only delete local photos" or "delete all backups" on my phone.
For photos taken with the camera, I need to manually export and upload them to the server (the server folder is mounted on my computer’s File Explorer via "mapping network drives"). Immich can monitor this folder and update it to the database through scheduled tasks.
Both on mobile and computer, I can use apps or browsers to browse and download all photos from the database. This solution perfectly resolves the awkward situation where my mobile and camera photos are stored separately.
The multimedia module is divided into books, movies, and music.
Books: On the server, both Calibre and the Calibre Web service are deployed, and they share a common database file called "metadata.db."
On mobile devices, I use Jingdu Tianxia as my e-book reader. It provides webdav synchronization for reading progress, which conveniently aligns with the use of NextCloud’s webdav for synchronization.
There are two methods for adding books. First, I can upload them via the Calibre Web webpage. Second, I can synchronize the "attachment" folder from the app on my mobile device to the server using Resilio. Once the server detects new files, they are automatically added to the Calibre database.
Movies: I’ve deployed Plex Server on the server, and Plex offers clients for all platforms. I purchased a Plex Lifetime subscription.
Music: I’ve deployed Roon Server on the server, and Roon provides clients for all platforms. It can be said that Roon is the ultimate solution for self-built digital playback, but it comes at a high price. I’m fortunate to have purchased a Lifetime subscription before the price increase in the past two years. In addition to supporting a local music library, Roon also integrates streaming services like Qobuz, Tidal, and KKBOX.
For obtaining movies and music, acquiring resources may be more challenging. Here, I’ll list the downloaders I use: Tubesync (for YouTube video downloads), rtorrent (for BT/PT), and pyncm (for NetEase Cloud Music).
Task Automation and Monitoring
Automation and monitoring are discussed together. The core tools are n8n and Node-RED. Both of them are low-code platforms that offer various modules, allowing for the interconnection of various software and the creation of custom automation workflows.
I’ve integrated the automation and monitoring system with various components, including Linux cron jobs, AI services like ChatGPT and Bing, WeChat bots through HOOK, Microsoft ToDo, Outlook email, and HomeAssistant. My smart hardware setup includes smart home products and DIY hardware, all connected through HomeAssistant.
For direct interactions, the software components include HomeAssistant and WeChat, while the hardware includes the Xiao Ai smart speaker.
Any module that can communicate with n8n or Node-RED through various pathways can be integrated into the "automation" system. For example, my motorized curtains at home originally only support Tmall Genie, but I can control them using a 433MHz wireless transceiver module. This allows me to connect them to HomeAssistant via an ESP32. Currently, I have set up scheduled curtain operations and voice control with Xiao Ai. However, theoretically, I could configure them to be controlled through WeChat messages, based on TV status, or even react to events like "Today’s fuel price has decreased -> open the curtains early." At this point, the only limitation is my imagination.
For monitoring, Dashy provides a navigation page, while WeChat (HOOK) is responsible for notifying me of any abnormal states. Of course, Gotify can also serve this purpose effectively.
Other Useful Applications
In addition to the aforementioned major service categories, my home server also hosts the following tools:
- Grocy: A self-hosted tool for household grocery and chore management.
- Apitable: A multi-dimensional spreadsheet platform designed for APIs; it’s an open-source version of VigeTable and a self-hosted alternative to Airtable.
- Chatgpt Web: A web-based ChatGPT demonstration page built with Express and Vue3.
- Code Server: VS Code accessible in the browser.
- Gitea: A lightweight DevOps platform.
- Kms Server: A Microsoft KMS activation server.
The above represents my practices on a home server, and I hope it can provide some application ideas for servers and NAS for everyone. Finally, thank you to the contributors in the open-source community.