A few weeks ago I started building a small tutorial website.
At first, everything was manual:
Write content
Add markdown
Run build
Restart container
It worked… but it was boring.
So I automated the entire pipeline on my Synology NAS.
Now every morning:
A Python script generates new content
The content is validated
Astro rebuilds the site inside Docker
Nginx restarts
The updated site goes live automatically
All without me touching anything.
🏗 My Stack
Synology NAS
Docker + Docker Compose
Astro (static site)
Python automation scripts
Scheduled tasks (cron-like)
🔄 The Automation Flow
Here’s the simplified flow:
Scheduled task runs every morning
Python script generates tutorials
Script validates output
Docker Compose runs Astro build
Nginx container restarts
New content is live
The rebuild takes ~1 minute.
The old version of the site keeps running until the container restarts, so there’s no downtime.
🧠 Why I Built It
Two reasons:
I wanted to learn more about automation in a real environment.
I wanted a self-maintaining content system.
It’s basically a mini CI/CD pipeline running on a NAS.
⚙️ The Rebuild Script
For those interested, this is the rebuild part:
#!/bin/bash
cd /volume1/docker/tutorialshub || exit 1
/usr/local/bin/docker compose run --rm astro-builder
/usr/local/bin/docker restart astro-nginx
Simple, but effective.
📈 What I Learned
Self-hosting forces you to understand your stack.
Automation saves mental energy.
Small systems compound over time.
Build in public works — I shared the setup on Reddit and it sparked interesting discussions.
I’m continuing to iterate on this system.
If there’s interest, I can write a deeper technical breakdown of the content generation + validation layer.
Top comments (0)