Self-Hosting Series 1: My Setup & Services

date
Mar 27, 2024
thumbnail
slug
self-hosting-series-1-my-setup-and-services
author
Can Durmus
status
Published
tags
Self-Host
Portainer
Docker
Home Assistant
Immich
Ollama
Homelab
summary
Dive into my self-hosting journey!
type
Post
updatedAt
Mar 27, 2024 11:07 PM

Self-Hosting Series 1: My Setup & Services

Welcome to the first installment of my Self-Hosting Series! If you're like me, fascinated by the autonomy and customization that comes with self-hosting your services, you're in for a treat. Today, I'll take you through my self-hosting setup, the services I run, and how I make everything work seamlessly together. Let's dive in!

The Heart of My Setup: AsRock Deskmini X300

An adjustable monitor stand organizes the simple setup. I will talk about the thing on top-right later.
An adjustable monitor stand organizes the simple setup. I will talk about the thing on top-right later.
At the core of my self-hosting journey is the AsRock Deskmini X300, powered by a Ryzen 5 5600G processor and beefed up with 32GB of RAM. For now, I am using an NVME drive that boots Ubuntu 22.04 LTS Server and two 1TB SATA SSDs. I bought the SATA SSDs a long time ago at a discount and the NVME came out as a spare after my ThinkPad upgrade. One SSD is dedicated to a Samba share, making file sharing across my network a breeze, while the other one houses the data for all other services. I will figure out what to add as more storage in the future. This tiny powerhouse is power efficient and also surprisingly silent, making it a perfect fit for my desk.
The Deskmini X300 came with a mains power adapter and an AM4 motherboard with a CPU cooler. This made a real difference in terms of the cost and the form factor between a Mini ITX setup with similar components. The main drawback is that I can’t add a GPU without using a flimsy M.2 PCIe converter. Since I wasn’t planning any heavy video transcoding and GPU work at the time, it’s been the perfect deal for me. I managed to keep the cost of the Deskmini, 32GB memory and the Ryzen 5 5600G less than $350 by chasing some discounts.
It’s connected to my budget WiFi 6 router (Zyxel NBG7510) which can provide around 1200 MB/s on the 5 GHz network. I am using the 5 GHz network for phones, tablets and computers while using the 2.4 GHz network for IoT devices.
Also, I already tried some interesting self-hosting solutions with multiple Raspberry Pis before this setup. I will share them in future posts.

My Suite of Self-Hosted Services

I like the simplicity of the Homepage.
I like the simplicity of the Homepage.
Self-hosting allows me to run a variety of services tailored to my needs. Here's a snapshot of what I have up and running:

Portainer

This is a game-changer for managing Docker containers. The intuitive UI makes deploying services using docker-compose files a walk in the park. Whether I need to update a service or deploy a new one, Portainer simplifies the process, allowing me to focus on what matters most (breaking the running services).
I can't emphasize enough the convenience offered by Docker and, by extension, Portainer. Using docker-compose file contents to deploy and manage services has streamlined my workflow significantly so I don’t have to go through different documentation and workflow for each service on my infrastructure. The ability to update the services by simply re-pulling its image means that maintenance is no longer a headache but a straightforward task.

Samba Share

The backbone of my file-sharing setup, allowing easy access to files across my network. Since I am using multiple devices with a Zoo of operating systems (iOS, iPad OS, Mac OS, Linux, Win10, Win11 etc...). I found Samba as most compatible, stable and easy to manage. I use it mainly to store different OS ISO files, media and 3D printable design files. It’s also the entry point of my photography backup chain. So I can take photos off my camera by using any of my devices to the Samba share and access them from any device at home.

Homepage

A customized start page for my browser, providing quick access to my services and also some web bookmarks. I like the instant update feature for changing the config files at any time and seeing the output almost in real time. I tried Dashy but simply liked this one better.

Home Assistant

The heart of my smart home, allowing me to collect data from around my home and will allow me to automate some tasks in the future. Right now it’s connected to two ESP home-based DIY air quality control sensors with Sensirion SEN55 and ESP32. I am planning to integrate more devices like my Roborock, Mi Smart LED, 3D printers and anything else that can be connected there.

Immich

An open-source solution for photo backup and sharing, making it easy to store, organize, and access my photo library. The most critical feature for me has been the mobile app which can backup my whole iPhone library overnight through wifi without me intervening. It also has a cool deep-learning feature for object detection and face recognition through the library. It supports live photos and is very performant on the local network. I configured it to have a specific file structure for the imported photos so I can access them on the file system to create more backups without needing the web interface. Since it is under very (very) active development, it breaks often but simply re-pulling the image solves almost all problems.

Ollama

A relatively new addition to my setup, Ollama is an open-source solution to self-host, manage and interact with Large Language Models. Since I have a decent amount of memory I get to test some interesting models with sufficient performance. It has an API compatible with OpenAI API design so I can connect OpenAI-compatible tools to my self-hosted models. I am planning to check out coding assistants with VSCode and PyCharm extensions.

Nginx Proxy Manager

An extremely user-friendly tool for managing reverse proxies. I will try setting up SSL certificates for my local services so I can avoid my browsers complaining about the encryption of my local network.

AdGuard Home

I installed it to use as a DNS service. I am planning to configure the ad blocking and other features in the future if I can find some time

Tandoor Recipes

For me, it’s not hard to improvise and present a nice dinner without much effort, but baking is different. I am new to baking and it requires proper recipes and attention. So I decided to manage them on this open-source solution.

Actual Budget

Managing finances is crucial, I planned to develop something for this reason in the beginning but then I realized that there are some mature open-source projects. Actual Budget is one of them. It’s offering a great set of features but I didn’t start using it yet. I will first try to automatize extracting, preprocessing and importing my transaction data automatically into Actual.

Looking Ahead: Self-Hosted LLM Special

As I continue to explore the world of self-hosting, one area that excites me is the potential of self-hosted Large Language Models (LLMs). The independence and privacy benefits are tremendous. I'm currently diving deep into this topic and will be sharing my journey and insights in a special blog post dedicated to self-hosting LLMs. I will talk about the typical tech stack, tools with alternatives, models, and use cases. So, stay tuned!

Final Thoughts

Starting on a self-hosting journey has been an enriching experience, offering control, privacy, and a deep sense of satisfaction. Whether you're an experienced self-hoster or just starting, I hope my setup inspires you to explore the possibilities of self-hosting. Remember, the journey is as rewarding as the destination. Happy self-hosting!