{"slug": "show-hn-1-click-migration-solution", "title": "Show HN: 1-Click Migration Solution", "summary": "Flareover, an open-source migration tool, reads existing edge configurations from providers like Cloudflare and rebuilds them faithfully on EU-based servers using self-hosted software such as Caddy and PowerDNS. The tool never guesses on config mappings, flags ambiguities for user decisions, and includes a parity gate that blocks cutover unless behavior is identical. This provides a lock-in-free, deterministic migration path with no egress fees.", "body_md": "**flareover** reads your existing edge setup — DNS, TLS certificates, redirects,\nWAF rules, caching — and rebuilds it faithfully on your own EU servers (open-source,\nself-hosted). It never emits config that silently changes how your site behaves: what it can't\nmap exactly, it asks about or flags — **it never guesses**.\n\n● AGPL-3.0 · self-hostable · no lock-in\n\nEvery element of your edge gets exactly one verdict. Behavior-changing config is emitted only when equivalence is proven or you answer a bounded yes/no. That honesty is the product.\n\nA provably-equivalent target mapping exists. Config is generated.\n\nA faithful mapping exists with one enumerable ambiguity. A single yes/no resolves it — cached, reviewable.\n\nNo faithful mapping (arbitrary edge code, ML bot-scoring). Surfaced with a reason, **never guessed**.\n\nRead-only extraction to a gated, reversible cutover. Every step is deterministic; the parity gate blocks the flip unless the new edge behaves identically.\n\nThe engine tells you exactly what carries, what needs a decision, and what it won't touch — before anything changes.\n\n``` bash\n$ flareover assess zone.snapshot.json\n\n╭─ flareover · assessment · example.com ─────────────╮\n│ 43 elements   ● 31 AUTO   ● 11 ASK   ● 1 MANUAL\n╰────────────────────────────────────────────────────╯\n\n MANUAL  (1)\n  ● config-rule  tweak features on /api  → —\n     Provider-only edge feature (email obfuscation): no Caddy equivalent.\n\n ASK  (11)\n  ● dns  A app.example.com  → powerdns\n     ? Real origin (host:port) behind the orange cloud?\n\n AUTO  (31)\n  ● tls  hsts  → caddy\n  ● waf-custom  block bad UA  → caddy-waf\n  ● redirect  apex → www  → caddy\n```\n\nA real zone was migrated and cut over off its old managed edge, then verified\nend-to-end. The parity gate **first blocked** a divergence, and only passed once the new edge\nbehaved identically — these are the checks it ran:\n\nGATE: PASS no behavior-changing divergence — cutover permitted.\n\nNo traffic or egress fees. No exposure to a future price or policy change. Every target is tagged with its jurisdiction, so the migration provably stays EU-scoped.\n\n| Concern | Tool | where |\n|---|---|---|\n| Authoritative DNS | PowerDNS | EU |\n| Reverse proxy · TLS · HTTP/3 | Caddy | free |\n| WAF | caddy-waf | free |\n| Edge cache | souin | free |\n| Certificates | CertMate · Let's Encrypt / Actalis | EU CA option |\n| Object storage (S3-compatible →) | MinIO | no egress fee |\n| Landing zone | refurbished bare metal → Proxmox → LXC | EU |\n\nThe same 0% FP discipline migrates S3-compatible object storage (R2, S3, …) onto sovereign MinIO. The engine maps the configuration; rclone copies the data — into the EU, with no egress fee. A public bucket is never made public without your explicit yes; an IAM policy is flagged, never guessed.", "url": "https://wpnews.pro/news/show-hn-1-click-migration-solution", "canonical_source": "https://www.flareover.com", "published_at": "2026-07-08 11:53:56+00:00", "updated_at": "2026-07-08 11:59:53.182515+00:00", "lang": "en", "topics": ["developer-tools", "ai-safety"], "entities": ["flareover", "Cloudflare", "Caddy", "PowerDNS", "Let's Encrypt", "MinIO", "Souin", "CertMate"], "alternates": {"html": "https://wpnews.pro/news/show-hn-1-click-migration-solution", "markdown": "https://wpnews.pro/news/show-hn-1-click-migration-solution.md", "text": "https://wpnews.pro/news/show-hn-1-click-migration-solution.txt", "jsonld": "https://wpnews.pro/news/show-hn-1-click-migration-solution.jsonld"}}