Case #001 — d0a1.es runs on d0a1

This page is a verifiable use case. Everything we claim here is public and reproducible: every URL, every container, every command is open for you to check yourself.

The 30-second summary

d0a1.es runs on the same d0a1 stack it advertises. It’s not a staging example or a controlled demo: it’s the marketing site, the chat app, the Git repository, and the mail server in real production, powered by 25 Docker containers on a 16 GB RAM VPS, paying zero euros in external API tokens.

We audited the stack live on September 2, 2026 at 21:00 UTC. This page reflects that exact moment on the server.

The actual infrastructure

ResourceValue
VPSClouding, 4 vCPU + 16 GB RAM
SystemUbuntu 24.04 LTS, kernel 6.8
Disk99 GB total, 60 GB used (63 %)
Load average0.30 — plenty of headroom
Uptime7 days since last reboot
VPS cost~25 €/month

What runs inside (audited live)

25 Docker containers, grouped by function:

Local AI core — 7 containers

  • ollama — local embeddings at localhost:11434 + 11 Ollama Cloud models for generation.
  • qdrant — vector database at :6333 for semantic search.
  • qdrant-mcp-server — MCP exposure of the vector store.
  • openwebui — chat interface at app.d0a1.es.
  • mcpo + mcpo-docker-socket-proxy — unified MCP gateway.
  • searxng — private metasearch.

WordPress + data — 4 containers

  • wordpress — d0a1.es (this site), PHP 8.4.
  • wordpress_db — MariaDB with every page and post.
  • wpcli — headless WordPress CLI for operations.
  • redis — object cache to offload MariaDB queries.

Dev and Git — 4 containers

  • giteagit.d0a1.es, public and private repos, with CI.
  • gitea-act-runner — pipeline runner (tests and fast-check on every PR).
  • workspace-git + workspace-artifacts — agent storage.

Mail and proxy — 5 containers

  • mailserver — Postfix + Dovecot + OpenDKIM. Sending and receiving at hello@d0a1.es working.
  • snappymail — webmail.
  • nginx (openresty) — reverse proxy and cache for all subdomains.
  • terminal-proxy + terminal — web terminal for operations.

Operations and agents — 5 containers

  • d0a1-ai-bot — the agent that operates this site (Hermes).
  • workspace-browser — headless Playwright for QA and screenshots.
  • listmonk + listmonk_db — self-hosted mailing (on standby).
  • vaultwarden — self-hosted password manager.

AI models on the VPS

The current mix (September 2026) is hybrid by design: embeddings run locally (0 €, data stays inside the VPS) and generation uses Ollama Cloud, which gives access to frontier models without filling the disk:

ModelLocationActual use on d0a1.es
qwen3-embedding:0.6bLocal (639 MB)Embeddings for Qdrant (semantic search)
nomic-embed-textLocal (274 MB)Fallback embeddings
glm-5.3 / glm-5.3-flashOllama CloudGeneral reasoning, generation
kimi-k3 / kimi-k2.6 / kimi-k2.7-codeOllama CloudLong tasks and code
deepseek-v4-flash / deepseek-v4-proOllama CloudGeneration alternatives
nemotron-3-ultra, minimax-m3, glm-5.1/5.2Ollama CloudOccasional fallbacks

Local embeddings keep search data inside the server. For generation, Ollama Cloud lets us switch frontier models with one command — the same no-lock-in principle we recommend, applied to ourselves. If the provider raises prices, we switch models or go back to local models.

The real cost: what you pay vs what you’d save

What d0a1.es pays monthly

ItemCost/month
Clouding VPS 4×16~25 €
d0a1.es domain~1 €
Backups, misc~2 €
AI (local embeddings + Ollama Cloud)0 €
Total~28 €/month

What replicating this stack with SaaS would cost

Same traffic, same operations. Equivalent services, one to one:

Equivalent SaaS serviceEstimated cost/month
OpenAI API (generation + embeddings)~50 €
Algolia or Pinecone (semantic search)~30 €
Cloudflare Pro + WP Engine (hosting)~50 €
Buffer / Hootsuite (social publishing)~30 €
Akismet (comment moderation)~10 €
BlogVault (backups)~25 €
ManageWP (multi-site management)~25 €
1Password Teams (password manager)~20 €
Total SaaS equivalent~240 €/month

Direct savings: ~212 €/month, about 2,500 €/year. And we haven’t counted the opportunity cost of SaaS price hikes, migrations when they change their API, or GDPR compliance costs when handing data to third-party servers.

Public repos (the “open source” proof)

At git.d0a1.es you’ll find, among others, the repos backing what we sell:

  • d0a1/packs — the 4 deploy packs we offer at /en/stacks/: deploy.sh, docker-compose.yml and README for each.
  • monyi/quickstart — the original quickstart (Ollama + Open WebUI in 3 minutes).

The rest of the infrastructure (WordPress theme, plugins, service configuration) is being opened progressively — product repos come first.

What is NOT automated (brutal honesty)

If we tell you what works, we also tell you what doesn’t yet:

  • Interactive “live demo”/en/ has a textual walkthrough with screencast, not a public-facing stack.
  • Signed testimonials — this case is the first. No public clients yet.
  • n8n in production — we deployed it in June and retired it: current workflows run through the agent directly. If your flow needs it, the pack installs in minutes.
  • 100 % local generation — embeddings are local; generation uses Ollama Cloud. It’s a deliberate trade-off (quality vs disk), documented above.

If you see something promised on another page that isn’t fulfilled here, that’s a marketing bug to fix, not an excuse.

How to verify all this

Anyone can audit the current state of the public-facing parts:

# Subdomains served
curl -sI https://d0a1.es/
curl -sI https://app.d0a1.es/
curl -sI https://git.d0a1.es/

# Public repos
curl -s https://git.d0a1.es/api/v1/repos/search?limit=20 | grep full_name

# Packs: the code we sell is the code we run
git clone https://git.d0a1.es/d0a1/packs.git

If you reproduce these commands at any time, you’ll see the real state of the public services. This page is updated whenever the state changes significantly.

Want to do the same on your VPS?

The WordPress + AI pack is the shortest path: WordPress, MariaDB, Ollama and Open WebUI with one command. And if you’d rather not touch anything, we install it for you:


Audit performed September 2, 2026, 21:00 UTC. Case #001 — self-documented. The meta-case.