Platform Explainer

HOW 2NTH.IO WORKS

We turn open-source software into managed platforms. You pick the software, we handle the infrastructure. Your business runs, we keep it running.

This page explains everything: what we do, how we do it, what it costs, and what's running right now.

THE PROBLEM

Open-source is free. Running it isn't.

ERPNext, TwentyCRM, and other platforms are free to download. But deploying, securing, backing up, and maintaining them requires infrastructure skills most businesses don't have.

SaaS is easy. But you don't own it.

Cloud SaaS is convenient but your data lives on someone else's servers, in someone else's country, under someone else's terms. Pricing increases, feature removal — you have no control.

Self-hosting is hard. Really hard.

Docker, databases, SSL certificates, backups, security patches, scaling, monitoring — it's a full-time job. One misconfiguration and you lose data or get breached.

THE SOLUTION

2nth.io gives you the best of both worlds: open-source software you own, running on infrastructure we manage.

You Choose

The platform (ERPNext, TwentyCRM, etc.), the configuration, the users. It's your system.

We Operate

Servers, Docker, databases, backups, SSL, security patches, monitoring, uptime. All of it.

You Own

Your data, your configuration, your domain. Leave anytime with a full database export. No lock-in.

WHAT HAPPENS WHEN YOU DEPLOY

When you click "Deploy Platform" on the dashboard, here's exactly what happens behind the scenes:

provision acme
00:00 Create Docker Compose stack from template
Generate unique database password, assign port, write config
00:05 Start containers: MariaDB, Redis, Frappe backend
Database initialises, Redis starts, backend waits for DB health check
00:15 Run site configurator
Set database host, Redis endpoints, socket config
00:20 Create ERPNext site
Install Frappe framework doctypes (~200 tables)
02:00 Install ERPNext modules
Accounting, Inventory, HR, Manufacturing, CRM (~500 doctypes)
04:00 Start workers: scheduler, queue-short, queue-long
Background job processing for emails, reports, integrations
04:10 Start frontend: Nginx reverse proxy + WebSocket
HTTP serving, real-time updates, file uploads
04:15 Create DNS record: acme.2nth.io → server IP
Cloudflare API: A record, proxied, instant propagation
04:20 ✓ Instance live at https://acme.2nth.io

Total time: under 5 minutes. No manual server setup, no SSH, no configuration files. The dashboard handles everything.

ARCHITECTURE

architecture
 Browser (client.2nth.io)
    │
    ├── Cloudflare Edge
    │     ├── SSL termination (managed certs)
    │     ├── WAF rules + DDoS protection
    │     ├── CDN caching (static assets)
    │     └── Proxy to origin server
    │
    ├── Hetzner Cloud VM (shared or dedicated)
    │     │
    │     ├── Nginx (port 80, routes by hostname)
    │     │     ├── erp-demo.2nth.io → :8080
    │     │     ├── b2bs.2nth.io    → :8081
    │     │     └── acme.2nth.io    → :8082 (next tenant)
    │     │
    │     ├── Tenant: erp-demo (Docker Compose stack)
    │     │     ├── frontend   (Nginx + static)
    │     │     ├── backend    (Frappe/Gunicorn)
    │     │     ├── websocket  (Node.js real-time)
    │     │     ├── db         (MariaDB — isolated)
    │     │     ├── redis      (cache + queue — isolated)
    │     │     ├── scheduler  (cron jobs)
    │     │     └── workers    (background tasks)
    │     │
    │     └── Tenant: b2bs (separate Docker Compose stack)
    │           └── (same 8 containers, completely isolated)
    │
    └── 2nth.io Dashboard (Cloudflare Pages)
          ├── Hetzner API → server status, start/stop
          ├── Health API  → container status, system metrics
          └── Provision API → deploy/remove instances
Isolation

Every tenant gets their own Docker Compose stack. Separate database, separate cache, separate workers. One tenant can't see or affect another.

Efficiency

Multiple tenants share one VM. Docker images are cached — the second ERPNext tenant starts in seconds, not minutes. RAM usage is ~800MB per tenant.

Scalability

When a tenant outgrows shared compute, we move them to a dedicated VM. Same Docker stack, same data, just more resources. Zero downtime migration.

WHAT'S LIVE RIGHT NOW

Production Infrastructure
2nth-io-prod CX33 · 4 vCPU / 8GB / 80GB · Helsinki
204.168.227.81
Resource Usage (2 tenants)
17
Containers
1.7 GB
RAM Used
6 GB
RAM Free
~4
More Tenants Possible

COST BREAKDOWN

Infrastructure Costs (What 2nth.io Pays)
Hetzner CX33 (4 vCPU / 8GB / 80GB) ~€15/mo (~R280/mo)
Cloudflare Pro (WAF, CDN, SSL) $20/mo (~R370/mo)
Domain (2nth.io) ~$10/yr
Monitoring & backups Included in VM cost
Total (6 tenants on shared VM) ~R650/mo total → ~R108/tenant
Partner Economics
Partner charges client R2,500 – R5,000/mo
Partner pays 2nth.io (shared) R500 – R1,000/mo
Partner pays 2nth.io (dedicated) R2,500/mo
Partner margin (shared) R2,000 – R4,000/mo per client

THE ECOSYSTEM

2nth.io is one part of a three-platform ecosystem.

How They Connect

A client uses 2nth.ai for AI-powered engineering — design, software, hardware. They need an ERP to run their business. Their partner deploys ERPNext on 2nth.io. The AI agents on 2nth.ai can then integrate with the ERPNext instance — creating invoices, checking inventory, generating reports through natural language. The infrastructure and the AI layer work together.

READY TO TRY IT?

Sign in to the dashboard and deploy your first instance. See the full provisioning flow in action.