Jon's SiteBlogs

Self-Hosted Website Design v2

Overview

This document covers the setup of my personal website after I made some major improvements to it in May 2025. My website consists of a blog, which is a GitHub pages website, as well as some self-hosted apps.

Requirements

Non-Goals

Design

Summary

My website jonms.com currently consists of a GitHub pages website (blog.jonms.com) as well as a series of self-hosted apps on subdomains of jonms.com. The self-hosted apps are all apps running on an Asustor NAS (AS6508T) that sits in my living room. Some of my apps were installed from Asustor App Central, and some are creating via docker compose. I also run a Traefik reverse proxy, which gives me HTTPS on all my apps. Finally, I have a CloudFlare tunnel, which allows me to expose individual services to the public internet.

System Diagram

This diagram shows a user can access sites through the public internet via the Cloudflare tunnel, or directly if they are attached to the intranet. Not all services are available publicly due to security reasons.

  graph LR

user[🌐 User]
intranet-user["🏠 User (over intranet)"]
tunnel[CloudFlare Tunnel]
traefik[Traefik Reverse Proxy]

home["Homepage (home.jonms.com)"]
asustor-portal["Asustor Portal (portal.jonms.com)"]
gitea["Gitea (gitea.jonms.com)"]
immich["Immich (photos.jonms.com)"]
resilio["Resilio Sync (resilio.jonms.com)"]
adguard["AdGuard (adguard.jonms.com)"]

blog["Jon's Blog (GitHub pages)"]

user-->tunnel
intranet-user-->|*.jonms.com| traefik
tunnel-->|*.jonms.com| traefik

traefik-->home
traefik-->asustor-portal
traefik-->gitea
traefik-->immich
traefik-->resilio
traefik-->adguard

user-->|blog.jonms.com| blog

Design Choices

I had a few different overall solutions in mind when setting up my new site. This table summarizes a few self-hosting options.

SolutionDescription
Asustor NAS + Docker ComposeThis is the greatest and simplest solution! Since I am deploying all apps via docker, it is easy and supported to run them on Asustor. Also, it gives easy access to the NAS for storage since I just have to mount the /share/Docker/<app> directory to each docker container. I also don't have to get or maintain additional hardware for this. The only con is my Asustor NAS only has 8GiB of memory, which may eventually cause issues. (Immich recommends 6 by itself, and I'm already using 2GiB without Immich).
Yunohost DeploymentYunohost is a great solution where you just click a button to install an app. It is an extremely simple way to host, even simpler than docker compose. However, I played around with this and found that some apps didn't work. So, I still need docker-compose for some apps. Also, this would require an additonal machine since Yunohost is installed on Debian machines, and can't be installed on top of Asustor. Adding another machine would complicate my setup.
Austor NAS + Proxmox with Proxmox VE Scriptshttps://community-scripts.github.io/ProxmoxVE/
The only problem with this one is that it seems that not all apps are supported. For example, Immich is not in the list.  Also, I would have to mount NAS shares onto the Proxmox VMs to store data back on the NAS, which is additional complexity.

Hardware, Tools, Services

Appendix

Alternatives Considered

Homer for my self-hosted home page/app launcher. Homer seems good and light weight, but I had already created a plain html home page and didn’t feel like setting this up yet. The nice thing about Homer is that it easily allows multiple tabs, so I could put the admin services on a different page. It also has built-in search to make it easier to find apps.

Remote Access via Tailscale. Based on the Tailscale docs, it seems like WireGuard or CloudFlare tunnels is a fine choice:

We suspect that using WireGuard directly will be most appealing if you have a small, stable number of Linux servers whose connections you want to secure.

Forgejo - Git server. I think about using this over Gitea due to philosophy of having all open source. It seems like there is currently no advantage over Gitea though right now, but they are working on adding federation features. For now, I don’t feel like migrating over philosophical differences.

Future Work

Easy Hosting Providers

Self-Hosting Resources