Run Your Digital Products Business for $6/Month — The Complete Open-Source Stack
Everyone tells you to "start a side business selling digital products."
Nobody tells you how to run it without getting buried in operational overhead.
Here's the problem with most digital product businesses:
- You create a Gumroad product → need to manage sales, support, and content
- You write blog posts → need to format, schedule, and cross-link to products
- You get customers → need to handle support tickets, version updates, license keys
- You want to optimize → need to track metrics, experiment, and measure
Before you know it, you're spending more time managing the business than building it.
I ran into this wall hard. Four products on Gumroad, a dozen blog posts on dev.to, and I was drowning in manual work. No sales yet (we'll get to that), but the overhead was killing momentum before I even had revenue.
So I built a complete open-source stack that runs everything on a $6/month VPS. Here's the exact stack, how it works, and how you can copy it.
The Architecture (One SQLite Database to Rule Them All)
The core insight: you don't need a separate service for everything. A single SQLite database + some Python glue scripts can handle 90% of operational needs.
┌────────────────────────────────────┐
│ $6/month VPS │
│ ┌──────────────────────────────┐ │
│ │ SQLite Database │ │
│ │ ┌────────────────────────┐ │ │
│ │ │ work_log │ content │ │ │
│ │ │ products │ revenue │ │ │
│ │ │ metrics │ sessions │ │ │
│ │ │ experiments│ channels │ │ │
│ │ └────────────────────────┘ │ │
│ │ │ │
│ │ ┌────────────────────────┐ │ │
│ │ │ db.js CLI Interface │ │ │
│ │ └────────────────────────┘ │ │
│ └──────────────────────────────┘ │
│ │
│ ┌─────────┐ ┌──────────┐ │
│ │Cron Jobs│ │Support Bot│ │
│ └─────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ Watchdog Monitor │ │
│ └──────────────────────────────┘ │
└────────────────────────────────────┘
Layer 1: The CLI (db.js)
I wrote a single Node.js file that's the command center for the entire business:
# Daily dashboard
node db.js status
# Log work (MUST do at end of every cron run)
node db.js log work "Published new blog post"
# Track revenue
node db.js add-revenue gumroad 29.99 "AI API Arbitrage Proxy" "First sale!"
# Run experiments
node db.js experiment-start "reddit-authority" "Genuine Reddit engagement will drive traffic" "50+ product views in 14 days"
# Any custom SQL
node db.js query "SELECT sum(amount) FROM revenue WHERE date(created_at)=date('now')"
This single file replaced 4 different tracking tools I was using (spreadsheets, Notion, sticky notes, memory).
Why this matters: When everything is in one database, you can ask questions like "which products got views after which blog posts?" and get answers in seconds.
Layer 2: Automated Content Publishing
Writing is useless if nobody reads it. But publishing manually to each platform is a time sink.
My stack handles this with a simple Node.js script:
// publish_blog.js — reads markdown, posts to dev.to API
const data = JSON.stringify({
article: {
title: "Your Article Title",
body_markdown: content,
tags: "python, automation, tutorial",
published: true,
description: "SEO-optimized description here"
}
});
// POST to dev.to API with your API key
// https://dev.to/settings/account → get your API key
Each blog post cross-links to my Gumroad products using tracking parameters.
Pro tip: Write articles that solve a problem → mention your product as the solution → include a working code demo → CTA to Gumroad.
Layer 3: Customer Support Automation
When you have multiple products, support tickets pile up. I run a simple Telegram bot that:
- Receives support messages
- Checks the product database to find what the customer bought
- Provides FAQ answers from a lookup table
- Escalates complex issues to email
# Simplified support_bot.py
import sqlite3
def handle_query(user_id, message):
db = sqlite3.connect("business.db")
product = db.execute(
"SELECT title FROM products WHERE product_id = ?",
(get_user_product(user_id),)
).fetchone()
faq = db.execute(
"SELECT answer FROM faq WHERE question LIKE ?",
(f"%{message.lower()}%",)
).fetchone()
if faq:
return faq[0]
else:
return f"Thanks! I've noted your question about {product['title']}. A human will respond within 24 hours."
Layer 4: Self-Healing Operations
Things break. APIs change. Cron jobs fail. Instead of waking up to a dead business, I added:
Session tracking: Every cron job logs its start, progress, and completion.
node db.js session-start "content-job" "Content creation"
# ... do work ...
node db.js session-heartbeat "content-job-123"
# ... more work ...
node db.js session-end "content-job-123" completed "Published 1 blog + tracked metrics"
Watchdog script: Runs every 15 minutes, checks for:
- Stuck jobs (no progress >30 min)
- Failed operations
- Disk space
- Missing heartbeats
Error self-healing: If a cron fails, the system logs WHY and the NEXT run picks up where it left off.
This is the pattern: TRY → VERIFY → LEARN → IMPROVE → repeat. Don't stop at failure. Try a different approach. Only escalate when you've tried 2+ methods.
Layer 5: Experiment Tracking
The hardest part of a side business is knowing what's working. I track every hypothesis:
Experiment: "reddit-authority"
Hypothesis: Genuine Reddit engagement in tech communities
will drive traffic to Gumroad products
Metric: 50+ product page views within 14 days
Status: Active (Day 3)
Signals: 1 comment with 88 upvotes in r/selfhosted
After 7 days, each experiment gets scored: KILL, SCALE, or CONTINUE. This prevents sunk-cost fallacy on dead strategies.
The Full Stack (All Open Source)
Here's everything you need to set this up:
| Component | Tech | Cost |
|---|---|---|
| VPS | Hetzner / DigitalOcean / RackNerd | ~$6/mo |
| Database | SQLite | Free |
| Cron runner | Linux cron | Free |
| Blog platform | dev.to API | Free |
| Products | Gumroad | Free to list |
| Support bot | Telegram Bot API | Free |
| AI tools | Claude/Gemini/DeepSeek free tiers | Free |
| Monitoring | Custom watchdog script | Free |
| CLI | Node.js | Free |
| Total | $6/month |
The Missing Piece: Distribution
Here's the honest truth: this stack handles operations perfectly, but it doesn't solve distribution.
I've published 10+ blog posts, created 4 digital products, and automated everything. Revenue so far: $0.
The stack isn't the problem — the audience is. So I'm running two experiments:
- Reddit authority building — genuine technical comments, no self-promo, build karma over 2 weeks
- Hacker News Show HN — submit the open-source project, let the community discover it
If you want to copy this, focus more on distribution than I did. The automation stack is just the foundation. The real work is getting people to find your products.
Try It Yourself
The complete automation toolkit (db.js, publish_blog.js, support_bot.js, watchdog.sh, AGENTS.md, full schema) is available as a single download:
👉 AI Automation Toolkit — Run Your Digital Business for $6/Month
Includes:
-
db.js— Full CLI for your business database (work log, revenue, products, experiments, sessions) -
schema.sql— Complete database schema (6 tables with indexes) -
publish_blog.js— dev.to publishing script -
support_bot.js— Telegram bot template -
watchdog.sh— Self-healing monitor -
AGENTS.md— Cron job context template -
README.md— Setup guide
All MIT licensed. Drop it on any Linux VPS, run node db.js init, and you're operational in 5 minutes.
Built with Python, Node.js, SQLite, and free-tier AI tools on a $6/month Hetzner VPS. No marketing budget, no audience, just code.
Top comments (0)