A "Digital Zen" blog theme for developers who need some peace.
Debugging code, systems, and the lifetime of ideas.
A minimalist, high-performance tech blog theme built with Astro and Deno. Designed for readability and speed.
- Framework: Astro (Static Site Generation)
- Runtime: Deno
- Deployment: Nginx (Static hosting)
- Styling: Vanilla CSS with a focus on typography (Charter & System UI)
This theme is optimized for speed and accessibility, achieving perfect LightHouse scores.
| Category | Score |
|---|---|
| 🟢 Performance | 100 |
| 🟢 Accessibility | 100 |
| 🟢 Best Practices | 100 |
| 🟢 SEO | 100 |
Start the local development server:
deno task dev
# or
npm run devServer runs at http://localhost:4321.
Generate the static assets:
deno task buildThe output will be in the ./dist folder.
We use Nginx because it is an event-driven, asynchronous web server that is incredibly efficient at serving static files. For a static site like this, Nginx uses very little memory and can handle thousands of concurrent connections effortlessly compared to traditional process-based servers.
Run the build command and copy the ./dist folder to your server (e.g., /var/www/tech-blog).
On Debian/Ubuntu systems, Nginx uses a split configuration focus:
/etc/nginx/sites-available/: Stores all your server block definition files (liketech-blog)./etc/nginx/sites-enabled/: Stores symlinks to the files insites-availablethat you want to be active.
Step-by-Step Guide:
-
Create the configuration file: We name it
tech-blogfor clarity, but the name can be anything.sudo nano /etc/nginx/sites-available/tech-blog
-
Paste your configuration: Use the provided nginx.conf as a template. Update
rootto point to/var/www/tech-blog. -
Enable the site: Create a symbolic link from
sites-availabletosites-enabled.sudo ln -s /etc/nginx/sites-available/tech-blog /etc/nginx/sites-enabled/
-
Test and Reload:
sudo nginx -t # Check for syntax errors sudo systemctl reload nginx
To enable HTTPS and get that "Green Padlock," we use Certbot from Let's Encrypt. It automatically handles the SSL certificate issuance and renewal.
-
Install Certbot and the Nginx Plugin
Run these commands on your Debian VM:
sudo apt update sudo apt install certbot python3-certbot-nginx -y
-
Obtain and Install the Certificate
Certbot is smart enough to read your
/etc/nginx/sites-available/tech-blogfile, find yourserver_name, and configure the SSL for you.# Replace 'yourdomain.com' with your actual domain or free subdomain sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comDuring setup: It will ask for your email (for renewal alerts) and ask if you want to redirect all HTTP traffic to HTTPS. Choose "Yes" (Redirect).
-
Verify Automatic Renewal
Let's Encrypt certificates expire every 90 days, but Certbot sets up a "timer" to renew them automatically. You can test this process with a "dry run":
sudo certbot renew --dry-run
