John Guan - Sep 18, 2023
In this series of blog posts, we have the privilege of sharing the remarkable journey of D. Rowland, a loyal community member who has been with us since the crowdfunding stage of ZimaBoard two years ago. He purchased three boards, each with a unique application scenario. In this series of blogs, we will delve into his experiences with these boards and how they have become invaluable tools in his tech arsenal.
In this 1st of 3 blog, D. Rowland will guide you on how to set up your own Home Server with ZimaBoard 832.
Meet D. Rowland
Let’s start by getting to know D. Rowland a little better. He is your typical tech enthusiast; he’s a husband, a father of two, and a seasoned tech professional with a rich background in networking and IT. His journey into the world of technology began in high school, and it eventually led him to a career in IT, where he worked with servers, networks, and various technologies. His insights and experiences are invaluable as we explore how ZimaBoard has fit into his life.
The Home Server Scenario: ZimaBoard 832
One of the primary reasons D. Rowland bought the 832 unit is to self-host the services he commonly uses. Before ZimaBoard, D. Rowland used a 3U custom-built “server” made from old PC parts he either had lying around or that he could scavenge from e-recycling. In the image of his home rack below, you can still see the old server sitting at the bottom of the rack powered off.
The ZimaBoard 832 took over all duties from the old server, minus some file storage which was moved to the Synology NAS (also pictured). D.Rowland’s ZimaBoard 832 became a powerful home server, and here’s how he set it up:
- ZimaBoard 832
- 480GB SSD for /home directory
- Debian 11.5
- Docker and Docker-Compose
How to Set Up Your ZimaBoard 832 as a Home Server
D.Rowland’s home server setup involved the following steps:
- OS Installation: Since the ZimaBoard units are x86 systems, D. Rowland was able to follow the normal Debian installation procedure. He wiped out the CasaOS partition and installed a clean Debian Bullseye on the ZimaBoard 832 eMMC. He utilized the eMMC for the root/partition.
- Additional Storage: For data storage, he used a 480GB SSD for the /home directory. This separation of the OS and data ensures efficient operation.
- Docker Installation: Once the OS was up and running, D. Rowland installed Docker and Docker-Compose. At the time of setup, Docker and Docker-Compose were separate components; the current Debian Bookworm incorporates Compose into Docker.
- Data Migration: He copied his Docker mount points and docker-compose.yml from his previous server to the ZimaBoard 832. This step ensured that his data and configurations seamlessly transferred to the new hardware. Some file paths were updated in his docker-compose.yml and a “Backup-to-S3” bash script to reflect the new system layout.
- Docker Configuration: With the file paths updated in his docker-compose.yml, D. Rowland was able to “docker-compose up -d” and all his services returned to working order.
Applications and Use Cases
At this time, D.Rowland is running the following applications and services on his ZimaBoard 832:
Q: These applications serve a variety of purposes in scenarios. Below is D. Rowland’s sharing.
D.Rowland would like it noted, that while using all of the above Docker containers, based on his neofetchscreenshot, his 832 is only using 1.3GB of memory during normal daily use.
Python ProjectsD.Rowland: The heart of the ZimaBoard 832 home server lies in the various Python projects I’ve developed and am actively working on. These projects range from practical utilities to experimental endeavors. Currently, I run:
- Autoblog : Autolog is a web-based automobile service log designed to track and manage maintenance records for our family vehicles. It simplifies vehicle maintenance and ensures that we stay on top of scheduled services.
- ipcalc : Inspired by kjokjo’s perl IPCALC, I’ve wanted to create my own Python implementation of an IP subnet calculator. It’s a handy tool for network-related tasks and calculations.
- fastapi : FastAPI is a modern Python web framework that I’ve been exploring. It has enabled me to build a sample REST API, which in turn helped me develop a vendor integration project for work.
Custom Container Builds
D. Rowland: Some Docker Containers work well for most use cases, but sometimes they need a little tweaking.
- PHP-FPM: I’ve customized the standard PHP-FPM container by adding extra packages not found in the normal deployment. I’ve used this with several projects, so the packages keep growing, such as: imagick, mongodb, mysqli, sodium, etc.
Database and Storage
- MongoDB (v4.4): Due to the CPU limitations of the ZimaBoard 832, which lacks support for AVX, I’ve opted to use MongoDB version 4.4 for my projects. Fortunately, this version is well-suited for my specific use cases and projects.
- WebDAV: This WebDAV container plays a crucial role in my workflow. I use it to sync Obsidian notes across multiple devices. It ensures seamless access to my notes, whether I’m on my phone, personal PC, work PC, tablet, or laptop.
Reverse Proxy and Remote Access
- Caddy Server: To simplify remote access to my services while I’m away from home, I rely on Caddy Server as my reverse proxy. Its ease of configuration and reliability make it an ideal choice. I chose not to use the Caddy Server developer container because I wanted the integrated Cloudflare DNS plugin.
- Cloudflare DynDNS: I run the Cloudflare DynDNS container to manage my home DNS A record effortlessly, ensuring that my services remain accessible even when I’m on the go.
- Mealie: I use Mealie as my electronic recipe book. If I come across something that sounds good, I add it quickly and easily. For me, the addition of images and extra note fields makes it better than a hand-written recipe book.
- Gitea: My own personal Git repository; I use this while working on all my personal Python and Powershell projects, and as a mirror for work projects.
- Flame: This is a wonderful dashboard that I use as my browser home page. It’s linked into the Docker socket, so when I add new containers I can link them to the dashboard with minimal config work.
- Minecraft Bedrock: I run the Bedrock server over the Java edition simply because of the memory constraints. I don’t use mods, so the Bedrock version is a very easy and lightweight server to run.
Data Security and Backup
- Backup Script: Data security is a top priority for me. To safeguard my container mountpoints and critical data, I’ve developed a bash script that uses tar to archive my docker files, and then s3cmd to push the archive up to Wasabi every night.
- Vaultwarden: Using the Vaultwarden container with the Bitwarden client/app allows me to keep track of all my passwords and 2FA tokens while ensuring it’s in my control and not running on some larger companies’ target networks.
This diverse range of applications highlights the flexibility and power of the ZimaBoard 832 as a home server.
In this first part of our ZimaBoard series, we’ve explored D. Rowland’s impressive home server setup using the ZimaBoard 832. His experience showcases how this compact SBC can be harnessed to host a plethora of services while maintaining efficiency. Stay tuned for the next installment as we uncover more creative uses of the ZimaBoard!
Join OUR COMMUNITY to discuss with our Members: