Skip to content

Troubleshooting & FAQ

The snags people actually hit, and straight answers to the questions buyers ask. If your issue isn’t here, docker compose logs -f web is almost always where the truth is.

Symptom Likely cause / fix
Browser warns about the certificate DNS wasn’t pointing at the box when Caddy started. Fix the A record, then docker compose restart caddy. See DNS & TLS.
curl: connection refused Ports blocked — check docker compose ps shows caddy Up, and no firewall blocks 80/443 (see Hardening; Hostinger’s hPanel / DO Cloud Firewall must also allow 80/443).
DisallowedHost error page Your domain isn’t in DJANGO_ALLOWED_HOSTS (it derives from DOMAIN) → fix .env and docker compose up -d web.
web container restarts repeatedly docker compose logs web — most often a missing/weak DJANGO_SECRET_KEY (production refuses keys under 50 chars) or a DB password mismatch after an earlier attempt (docker compose down -v wipes the old database volume — only safe before you have real data — then up -d).
A container was OOM-killed (2 GB box) Confirm swap is enabled (free -h) — it’s required at the floor. Check which container: docker inspect <name> --format '{{.State.OOMKilled}}'. With swap + stock settings this shouldn’t happen; if it persists, move to full.
Want a demo catalog to click around docker compose exec web python manage.py seed_client --profile belltex --demo

Can I run this on shared or cPanel hosting?

Section titled “Can I run this on shared or cPanel hosting?”

No. Nudova runs as Docker containers on a VPS you control (root SSH). If a plan talks about cPanel and mailboxes instead of RAM and SSH, it’s the wrong product. This is the single most important thing to get right — see Requirements.

A 2 GB VPS (~$12/mo on DigitalOcean) is the floor; the flagship 8 GB Hostinger KVM 2 is ~$7–9/mo. Both run the whole product. See Requirements.

Yes, with swap — and that’s a measured claim, not marketing. Under a realistic load the lite stack peaks around ~1 GB with zero OOM kills. See Architecture overview → the budget is measured.

Not on lite — background work runs inline with strict timeouts. Add them (the full profile) for higher volume or real-time admin feeds. It’s a one-flag change on the same image and data. See Architecture overview.

How do I change my domain, brand, logo or colours?

Section titled “How do I change my domain, brand, logo or colours?”

Edit .env or the tenant config and restart — never a rebuild. If a config change seems to need a rebuild, that’s a bug. See Store settings & branding.

How do upgrades work? Will I lose my customisations?

Section titled “How do upgrades work? Will I lose my customisations?”

You git pull (or unpack the new zip) and docker compose up -d; migrations run automatically. A store is never a patched copy of core — your brand, catalog, theme and provider choices are additive — so upgrades don’t conflict. See Upgrading.

The database is dumped nightly with 7-day rotation out of the box. Add an S3-compatible bucket for off-box copies, and do the restore drill once — a backup you’ve never restored is a hope, not a backup. See Backups.

Is the “no dark patterns” thing real, or marketing?

Section titled “Is the “no dark patterns” thing real, or marketing?”

Real, and structural. Real stock counts, prominent skip buttons, and no fake timers are defaults compiled into the product, not settings you could switch off to cheat. See The Nudge Framework.