Skip to content

Migration Status & Audit


The Magic e-VERSE platform has been migrated from a legacy bare-metal server (Nginx + Docker Compose, 58 containers) to a new Contabo VPS running Coolify v4 (Traefik + automated Docker deployments, 101 running containers). The migration spans 10 phases, of which phases 1–9 are complete and phase 10 (DNS cutover) is planned.

MetricOld ServerNew Server
IP83.86.98.93 (SSH port 22022)159.195.68.41 (SSH port 22)
OSUbuntu 24.04 LTSDebian 13 (Trixie)
Hardware8 cores, 32 GB RAM, 1 TB12 cores, 32 GB RAM, 1 TB
Disk Usage87% (29 GB free)31% (669 GB free)
RAM Usage19 GB / 31 GB (no swap)
Reverse ProxyNginx (108 site configs)Traefik v3.6 (Docker labels, auto-SSL)
Container OrchestrationDocker Compose (manual)Coolify v4.0.0-beta.469 (Git-based deploys)
Domain*.magiceverse.online*.magicomniverse.online
Running Containers58101
PostgreSQL Databases5454
MySQL Databases99
SSLLet’s Encrypt via CertbotLet’s Encrypt via Traefik (automatic)
MonitoringGlances (port 61208)Netdata (monitor.magicomniverse.online)

PhaseDescriptionStatusDate
1Monorepo setup (midego1/Magic-e-VERSE) + GitHub AppDone2026-03-24
2Coolify install + Brinxx tenant (template)Done2026-03-24
2bMagic Access auth proxy + Netdata monitoringDone2026-03-24
3Feature flag integration (27 features, 21 API guards)Done2026-03-24
4N8N (4 instances), AI Agents (10), Redis, Supporting servicesDone2026-03-25
5aInternal commerce tenants (development, demo, default, master)Done2026-03-25
5bClient commerce tenants (bovisales, jodasign, logohorloge, spranz)Done2026-03-26
5cBackend-only tenants (desluis, toolvizion)Done2026-03-26
6PIM system migration (189 tables, 11,254 products)Done2026-03-26
7Portal + MySQL migrationDone2026-03-26
8Business services (Connector, Contact)Done2026-03-26
9Tools (Editor, 3D, Logo, Modal, Moodshot, Resize)Done2026-03-26
10DNS cutover + old server decommissionPlannedTBD

Every issue found and fixed during the migration audit:

#IssueSeverityRoot CauseFixStatus
R1Brinxx backend 500HIGHStale link_module_migrations rows + missing Traefik middleware magic-forward-auth@dockerTruncated migration table; created Docker helper container to register middlewareFixed
R2Default backend 500HIGHSame stale migration rowsTruncated link_module_migrationsFixed
R3Toolvizion SSL/503HIGHAlready resolved before auditN/AFixed
R4Portal 500 after loginCRITICALMySQL session store used 172.17.0.1 (Docker bridge gateway) — unreachable from Coolify network. Duplicate magic-portal container caused Traefik round-robinChanged MySQL host to mysql (Docker DNS); removed duplicate container; pushed fix to midego1/Magic-Portal repoFixed
R5Spranz storefront missing 14+ branded filesCRITICALTenant-specific files never committed to monorepoCreated tenants/spranz/storefront/ overlay (20 files) with custom Dockerfile; merged to main via PR #7Fixed
R618 missing Spranz productsMEDIUMProducts added after initial DB dumpExported 18 products + 225 related rows from old server, imported to newFixed
R7Missing user_rbac_role table (Spranz)MEDIUMTable not in original dumpCreated from old server schema + dataFixed
R8MySQL magic_doc — 59 empty tablesCRITICALOnly schema was migrated, not dataFull mysqldump from old server imported — 22 tables now have dataFixed
R9Missing user_rbac_role in 5 tenant DBs (bovisales, desluis, jodasign, logohorloge, toolvizion)MEDIUMTable not in original dumpCreated empty table with correct schema + indexes on all 5 DBsFixed
R10Jodasign missing 143 quotation headers + 410 quotation linesHIGHData added after initial DB dumpTruncated + reimported all APLT data (231 headers, 630 lines, 21 order headers, 92 order lines)Fixed
R1118 missing products in 6 tenant DBs (default, demo, bovisales, desluis, jodasign, development)MEDIUMProducts added after initial DB dumpExported missing products + all related rows (variants, options, images, prices, categories) per tenantFixed
R1252 missing products + 144 variants in BrinxxMEDIUMProducts added after initial DB dumpExported + imported with all related data (options, variants, prices, categories)Fixed
R13Magic Terminal not deployedLOWRepo not added to GitHub AppDeployed as Coolify appFixed
R14magic_agent_maw / mawordering DBs missingLOWLegacy/unused databasesIntentionally skippedWontfix
R15Flowbuilder 404 on rootLOWAPI-only service, no root route handlerExpected behavior — API endpoints work on /api/ pathsWontfix

┌──────────────────────────────────────────────────────────────────┐
│ Coolify v4.0.0-beta.469 — 159.195.68.41 (Debian 13) │
│ 12 cores | 32 GB RAM | 1 TB disk (31% used) │
│ 101 running containers | 0 exited containers │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ Traefik v3.6 (reverse proxy) │ │
│ │ - Docker provider (auto-discovers container labels) │ │
│ │ - Let's Encrypt auto-SSL (certresolver: letsencrypt) │ │
│ │ - HTTP→HTTPS redirect on all routes │ │
│ │ - gzip compression middleware │ │
│ └──────────────┬─────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────▼──────────────────────────────────────────────┐ │
│ │ Commerce Tenants (11 tenants × 1-3 containers each) │ │
│ │ │ │
│ │ brinxx │ backend + storefront + redis │ │
│ │ default │ backend + storefront + redis │ │
│ │ demo │ backend + storefront + redis │ │
│ │ bovisales │ backend + storefront + redis │ │
│ │ jodasign │ backend + storefront + redis │ │
│ │ logohorloge │ backend + storefront + redis │ │
│ │ spranz │ backend + storefront + redis │ │
│ │ development │ backend + storefront + redis │ │
│ │ desluis │ backend + redis (no storefront) │ │
│ │ toolvizion │ backend + redis (no storefront) │ │
│ │ master │ backend + redis (no storefront) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌────────────────────────┐ │
│ │ magic-postgres│ │ mysql │ │ Redis (13 instances) │ │
│ │ PostgreSQL 16│ │ MySQL 8 │ │ Only brinxx-redis │ │
│ │ 54 databases │ │ 9 databases│ │ has healthcheck │ │
│ └─────────────┘ └─────────────┘ └────────────────────────┘ │
│ │
│ ┌─────────────────────┐ ┌──────────────────────────────────┐ │
│ │ AI Agents (10) │ │ N8N Instances (4) │ │
│ │ + 2 Redis │ │ n8n-main, n8n-2, n8n-3, │ │
│ │ + flowbuilder │ │ n8n-clean │ │
│ │ + escalation │ │ │ │
│ │ + webhook-server │ └──────────────────────────────────┘ │
│ │ + widget-server │ │
│ └─────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Other Services │ │
│ │ Portal (:4096) | PIM (:9000) | Connector | Contact │ │
│ │ Editor | 3D | Logo | Modal | Moodshot | Resize │ │
│ │ Terminal (Sshwifty :8182) | Netdata (:19999) │ │
│ │ Dashboard | Magic Access (:3334) │ │
│ │ Nextcloud | OnlyOffice | Docker Registry (:5000) │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

Complete Container Inventory (101 running)

Section titled “Complete Container Inventory (101 running)”
#ContainerTenantFQDNStatus
1brinxx-backendbrinxxadmin-brinxx.magicomniverse.onlineRunning
2default-backenddefaultadmin-default.magicomniverse.onlineRunning
3demo-backenddemoadmin-demo.magicomniverse.onlineRunning
4development-backenddevelopmentadmin-development.magicomniverse.onlineRunning
5master-backendmasteradmin-master.magicomniverse.onlineRunning
6bovisales-backendbovisalesadmin-bovisales.magicomniverse.onlineRunning
7desluis-backenddesluisadmin-desluis.magicomniverse.onlineRunning
8jodasign-backendjodasignadmin-jodasign.magicomniverse.onlineRunning
9logohorloge-backendlogohorlogeadmin-logohorloge.magicomniverse.onlineRunning
10spranz-backendspranzadmin-spranz.magicomniverse.onlineRunning
11toolvizion-backendtoolvizionadmin-toolvizion.magicomniverse.onlineRunning
#ContainerTenantFQDNStatus
12brinxx-storefrontbrinxxbrinxx.magicomniverse.onlineRunning (307 → /nl)
13default-storefrontdefaultdefault.magicomniverse.onlineRunning (307 → /nl)
14demo-storefrontdemodemo.magicomniverse.onlineRunning (307 → /nl)
15development-storefrontdevelopmentdevelopment.magicomniverse.onlineRunning (307 → /nl)
16bovisales-storefrontbovisalesbovisales.magicomniverse.onlineRunning (307 → /nl)
17jodasign-storefrontjodasignjodasign.magicomniverse.onlineRunning (307 → /nl)
18logohorloge-storefrontlogohorlogelogohorloge.magicomniverse.onlineRunning (307 → /nl)
19spranz-storefrontspranzspranz.magicomniverse.onlineRunning (307 → /nl)
#ContainerProjectHealthcheck
20brinxx-redis (shared-redis)brinxxYes
21redis-defaultCommerce TenantsNo
22redis-demoCommerce TenantsNo
23redis-developmentCommerce TenantsNo
24redis-masterCommerce TenantsNo
25toolvizion-redisCommerce TenantsNo
26bovisales-redisbovisalesNo
27desluis-redisdesluisNo
28jodasign-redisjodasignNo
29logohorloge-redislogohorlogeNo
30spranz-redisspranzNo
31agent-redisagentsNo
32agent-spranz-redisagentsNo
#ContainerFQDNHealth
33agent-brinxxaicheck.magicomniverse.onlineHealthy (200)
34agent-spranzaicheck-spranz.magicomniverse.onlineHealthy (200)
35agent-jodasignagent-jodasign.magicomniverse.onlineHealthy (timeout!)
36agent-magiceverseagent-magiceverse.magicomniverse.onlineHealthy (200)
37agent-magic_dwfagent-dwf.magicomniverse.onlineHealthy (200)
38agent-support_agentagent-support.magicomniverse.onlineHealthy (200)
39agent-ollivandersagent-ollivanders.magicomniverse.onlineHealthy (200)
40agent-princessagent-princess.magicomniverse.onlineHealthy (200)
41agent-topgivingagent-topgiving.magicomniverse.onlineHealthy (200)
42agent-logohorlogeagent-logohorloge.magicomniverse.onlineHealthy (200)
#ContainerFQDNPortStatus
43flowbuilderflowbuilder.magicomniverse.online3003Running (404 at root = expected, API-only)
44escalation-serverescalation.magicomniverse.online11099Running (200)
45webhook-serverwebhook.magicomniverse.online11098Running (404 at root = expected, API-only)
46widget-serveragent.magicomniverse.online4061Running (404 at root = expected, API-only)
#ContainerFQDNStatus
47n8n-mainn8n.magicomniverse.onlineRunning (200)
48n8n-2n8n2.magicomniverse.onlineRunning (200)
49n8n-3n8n3.magicomniverse.onlineRunning (200)
50n8n-cleann8n-clean.magicomniverse.onlineRunning (200)
#ContainerTypePortStatus
51magic-postgresPostgreSQL 165432Running (healthy)
52mysqlMySQL 83306Running
53coolify-dbPostgreSQL (Coolify internal)Running (healthy)
54coolify-redisRedis (Coolify internal)Running (healthy)
#ContainerFQDNStatus
55magic-connectorconnector.magicomniverse.onlineRunning (200)
56magic-contactcontact.magicomniverse.onlineRunning (200)
#ContainerFQDNStatus
57magic-editoreditor.magicomniverse.onlineRunning (200)
58magic-3d3d.magicomniverse.onlineRunning (404 JSON — API-only)
59magic-logologo.magicomniverse.onlineRunning (200)
60magic-modalmodal.magicomniverse.onlineRunning (200)
61magic-moodshotmoodshot.magicomniverse.onlineRunning (200)
62magic-resizeresize.magicomniverse.onlineRunning (200)
63magic-terminalterminal.magicomniverse.onlineRunning (501 on curl — WebSocket service, works in browser)
#ContainerFQDNStatus
64portalportal.magicomniverse.onlineRunning (200)
65magic-accessaccess.magicomniverse.onlineRunning (200)
66magic-dashboarddashboard.magicomniverse.onlineRunning (200)
#ContainerFQDN / PortStatus
67coolifycoolify.magicomniverse.online (:8000)Running (healthy)
68coolify-proxy (Traefik)ports 80/443/8080Running (healthy)
69coolify-realtimeWebSocketRunning (healthy)
70coolify-sentinelmonitoringRunning (healthy)
71registryDocker registry (:5000)Running
72buildx_buildkit_turbo0build kitRunning
73magic-forward-auth-helperauth middlewareRunning
#ContainerFQDNStatus
74netdatamonitor.magicomniverse.onlineRunning (healthy)
#ContainerFQDNStatus
75nextcloud_appdocs.magicomniverse.onlineRunning (302)
76nextcloud_dbinternal MySQLRunning
77onlyoffice_docsoffice.magicomniverse.onlineRunning (302)

#ProjectUUIDContents
1Commerce Tenantsra5w4beuzwbsj39bxjtlp33adefault-backend, default-storefront, demo-backend, demo-storefront, development-backend, development-storefront, master-backend, redis-default, redis-demo, redis-development, redis-master, toolvizion-backend, toolvizion-redis
2agentsly8emm9hcayrv31odbrxy9tragent-brinxx, agent-spranz, agent-jodasign, agent-magiceverse, agent-magic_dwf, agent-support_agent, agent-ollivanders, agent-princess, agent-topgiving, agent-logohorloge, agent-redis, agent-spranz-redis, flowbuilder, escalation-server, webhook-server, widget-server
3bovisalesu60xain9eru7mq9oepq40jwfbovisales-backend, bovisales-storefront, bovisales-redis (+2 exited old deployments)
4brinxxp3a414nfh4c0woaz40g8mpvdbrinxx-backend, brinxx-storefront, shared-redis (brinxx-redis), magic-postgres
5business-servicesgwd6yqz3oat1ka9l9l9l9412magic-connector, magic-contact
6defaulty37xr5h1lvb9cabw3yrkf4i2default-backend, default-storefront
7demoqzphj6v118folh10zfostenkdemo-backend, demo-storefront
8desluiskekoexxuyou8j9w3n9bfywk6desluis-backend, desluis-redis, desluis-storefront (+1 exited old backend)
9developmentg12bzun1q64oqwljm1jyoxz1development-backend, development-storefront
10jodasignp124fkya1oj1j16gobrzom7zjodasign-backend, jodasign-storefront, jodasign-redis (+2 exited old deployments)
11logohorlogeo46mvqff13ukvhziaotcm1zrlogohorloge-backend, logohorloge-storefront, logohorloge-redis (+2 exited old deployments)
12n8nt10zqw5ff2czpvz0xl7akg6rn8n-main, n8n-2, n8n-3, n8n-clean
13pimvinrsqy0eqf0k38aepzr05vqpim-backend
14portalguiv6q9ktejyggk9rsbgldmcportal
15spranzmu2gbfvdliyucernkoa34z4ispranz-backend, spranz-storefront, spranz-redis (+2 exited old deployments)
16toolsa11xohldkir9aodr2ek0l6asmagic-editor, magic-3d, magic-logo, magic-modal, magic-moodshot, magic-resize, magic-terminal

Exited/Duplicate Coolify Apps (cleanup needed)

Section titled “Exited/Duplicate Coolify Apps (cleanup needed)”
#AppProjectFQDNStatus
X1toolvizion-backend (old)Commerce Tenantssslip.ioExited
X2bovisales-backend (old)bovisalessslip.ioExited
X3bovisales-storefront (old)bovisalessslip.ioExited
X4desluis-backend (old)desluissslip.ioExited
X5jodasign-backend (old)jodasignsslip.ioExited
X6jodasign-storefront (old)jodasignsslip.ioExited
X7logohorloge-backend (old)logohorlogesslip.ioExited
X8logohorloge-storefront (old)logohorlogesslip.ioExited
X9spranz-backend (old)spranzsslip.ioExited
X10spranz-storefront (old)spranzsslip.ioExited

TenantAdmin URLBackend UUIDDatabaseHTTP Status
brinxxadmin-brinxx.magicomniverse.online/apples7duuk6opipbl38vvq35ilmagic_b2b_brinxx404 (Medusa API-only, /app works in browser)
defaultadmin-default.magicomniverse.online/appbtey8640mz1v5gpdl19inw1imagic_b2b_default404 (same)
demoadmin-demo.magicomniverse.online/apphuplyx1ai5cktjfr50vj5779magic_b2b_demo404 (same)
bovisalesadmin-bovisales.magicomniverse.online/appmxhf9c78zb19yxyxsrxht03vmagic_b2b_bovisales404 (same)
desluisadmin-desluis.magicomniverse.online/applvk036c368yp507jb1ca96wymagic_b2b_desluis404 (same)
logohorlogeadmin-logohorloge.magicomniverse.online/appz4dxwwxb0mn21gst39580sgpmagic_b2b_logohorloge404 (same)
jodasignadmin-jodasign.magicomniverse.online/appl5bgqqg9l7yqq5p2qhfqadawmagic_b2b_jodasign404 (same)
spranzadmin-spranz.magicomniverse.online/appetk3fvct78myk44ccqdiu1m4magic_b2b_spranz404 (same)
developmentadmin-development.magicomniverse.online/apphhsn382kdreoti6qselx8pqvmagic_b2b_development404 (same)
toolvizionadmin-toolvizion.magicomniverse.online/appczb98ousqz6jgcw71aoxxixbmagic_b2b_toolvizion404 (same)
masteradmin-master.magicomniverse.online/appmaster_magic404 (same)
TenantStorefront URLStorefront UUIDHTTP StatusNotes
brinxxbrinxx.magicomniverse.onlinejkm70m01bv0uf9xqwa6leu8j307 → /nlWorking
defaultdefault.magicomniverse.onlinevaries307 → /nlWorking
demodemo.magicomniverse.onlinevaries307 → /nlWorking
bovisalesbovisales.magicomniverse.onlinevaries307 → /nlWorking
logohorlogelogohorloge.magicomniverse.onlinevaries307 → /nlUnique 2D mini modal for logo designer
jodasignjodasign.magicomniverse.onlinevaries307 → /nlExtra quotation features
spranzspranz.magicomniverse.onlinex1sprrwuqazwebvsihstpi9y307 → /nlTenant overlay build
developmentdevelopment.magicomniverse.onlinevaries307 → /nlInternal
desluisNo storefront (backend-only)
toolvizionNo storefront (backend-only)
masterNo storefront (backend-only)

#DatabaseTablesProductsVariantsStatus
1magic_b2b_brinxx20014,96655,159Synced
2magic_b2b_spranz19815,41065,719Synced
3magic_b2b_default18815,27465,583Synced
4magic_b2b_demo18816,73078,797Synced
5magic_b2b_bovisales18816,72978,795Synced
6magic_b2b_desluis18616,72978,795Synced
7magic_b2b_jodasign19417,77979,046Synced
8magic_b2b_logohorloge19346153Synced
9magic_b2b_development21711,24772,480Synced
10magic_b2b_toolvizion217757757Synced
#DatabaseTablesNotes
12magic_pim18911,254 products, 73,458 variants
13master_magic146Master commerce (0 products)
14magic_connector5Supplier data connector
15magic_contact1Contact management
16magic_access5Access management
#DatabaseTablesNotes
17magic_logo20Main logo DB
18magic_logo_default19Default logo config
19magic_logohorloge_logo11Logohorloge logo config
20magic_spranz_logo12Spranz logo config
#DatabaseTables
21magic_agent5
22magic_agent_brinxx45
23magic_agent_default_agent40
24magic_agent_jodasign49
25magic_agent_langenberg38
26magic_agent_logohorloge18
27magic_agent_magic_dwf49
28magic_agent_magiceverse49
29magic_agent_ollivanders49
30magic_agent_princess46
32magic_agent_spranz43
33magic_agent_support_agent49
34magic_agent_topgiving48
35magic_agent_wayne48
36magic_escalation7
#DatabaseTablesNotes
37magic_demokkenkoning_logo2Legacy
38magic_dwf0Empty shell
39magic_management1Legacy (replaced by portal)
40magiceverse0Empty shell
41magiceverse3_cms14Legacy CMS
42mailer5Legacy mailer
43maw_kalender18Legacy calendar
44moodshot_service1Moodshot
45ollivanders0Empty shell
46princess0Empty shell
47spranz1Legacy
48spranzpdf9Legacy PDF
49topgiving0Empty shell
50wireframes1Legacy
51workshopmw9Legacy workshop
52postgres0System default
53template0System
54template1System
DatabasePresentRows
magic_b2b_brinxxYes0
magic_b2b_spranzYes0
magic_b2b_defaultYes0
magic_b2b_demoYes0
magic_b2b_developmentYes0
magic_b2b_bovisalesYes (created 2026-03-26)0
magic_b2b_desluisYes (created 2026-03-26)0
magic_b2b_jodasignYes (created 2026-03-26)0
magic_b2b_logohorlogeYes (created 2026-03-26)0
magic_b2b_toolvizionYes (created 2026-03-26)0

magic_doc (60 tables) — IMPORTED 2026-03-26

Section titled “magic_doc (60 tables) — IMPORTED 2026-03-26”
TableRowsStatus
api_endpoints8Imported
asset_changelog0Empty (same as old server)
asset_containers0Empty
asset_credentials0Empty
asset_databases0Empty
asset_dependencies0Empty
asset_domains77Imported
asset_metrics0Empty
asset_overview0Empty
asset_pm2_services0Empty
asset_ports58Imported
asset_resources0Empty
asset_servers0Empty
assets78Imported
available_ports0Empty
categories23Imported
code_snippets18Imported
contacts0Empty
crm_lead_activities0Empty
crm_lead_tasks0Empty
crm_leads0Empty
diagrams0Empty
documents93Imported
ecommerce_project_access0Empty
ecommerce_uploads0Empty
endpoint_annotations0Empty
expiring_credentials0Empty
port_allocation_log0Empty
port_conflicts0Empty
port_ranges8Imported
port_registry84Imported
port_usage_by_category0Empty
portal_2fa_tokens7Imported
portal_clients9Imported
portal_invites0Empty
portal_notes0Empty
portal_project_access0Empty
portal_projects9Imported
portal_sections10Imported
portal_sessions22Active
portal_support_articles7Imported
portal_support_categories5Imported
portal_support_handlers0Empty
portal_support_reporters2Imported
portal_support_tickets37Imported
portal_tenant_deployments8Imported
portal_ticket_attachments0Empty
portal_ticket_comments36Imported
portal_ticket_history20Imported
portal_uploads2Imported
portal_user_permissions0Empty
project_uploads0Empty
service_health_dashboard0Empty
settings0Empty
system_updates0Empty
tenant_port_summary0Empty
tenants0Empty
user_project_access0Empty
user_sessions0Empty
users0Empty
#DatabaseTablesRowsNotes
2dartv2dev30All 0Legacy dart game
3uren148All 0Legacy hours tracking
4magic_promotionalz0Empty database
5portal_db0Empty database
6information_schemaSystem
7mysqlSystem
8performance_schemaSystem
9sysSystem

Product & Variant Counts — Final Comparison (After Sync)

Section titled “Product & Variant Counts — Final Comparison (After Sync)”
DatabaseOld ServerNew ServerProducts MatchVariants Match
magic_b2b_brinxx14,966 / 55,15914,966 / 55,159YesYes
magic_b2b_spranz15,410 / 65,71915,410 / 65,719YesYes
magic_b2b_default15,274 / 65,58315,274 / 65,583YesYes
magic_b2b_demo16,730 / 78,79716,730 / 78,797YesYes
magic_b2b_bovisales16,729 / 78,79516,729 / 78,795YesYes
magic_b2b_desluis16,729 / 78,79516,729 / 78,795YesYes
magic_b2b_jodasign17,779 / 79,04617,779 / 79,046YesYes
magic_b2b_logohorloge46 / 15346 / 153YesYes
magic_b2b_development11,247 / 72,48011,247 / 72,480YesYes
magic_b2b_toolvizion757 / 757757 / 757YesYes
magic_pim11,254 / 73,45811,254 / 73,458YesYes

Table Counts — Final Comparison (After Sync)

Section titled “Table Counts — Final Comparison (After Sync)”
DatabaseOld ServerNew ServerMatch
magic_b2b_brinxx200200Yes
magic_b2b_spranz198198Yes
magic_b2b_default188188Yes
magic_b2b_demo188188Yes
magic_b2b_bovisales188188Yes
magic_b2b_desluis186186Yes
magic_b2b_jodasign194194Yes
magic_b2b_logohorloge193193Yes
magic_b2b_development217217Yes
magic_b2b_toolvizion217217Yes
magic_pim189189Yes
magic_logo2020Yes
magic_connector55Yes
magic_contact11Yes
master_magic146146Yes

InstanceURLContainerStatus
n8n-mainn8n.magicomniverse.onlinen8n-mainRunning (200)
n8n-2n8n2.magicomniverse.onlinen8n-2Running (200)
n8n-3n8n3.magicomniverse.onlinen8n-3Running (200)
n8n-cleann8n-clean.magicomniverse.onlinen8n-cleanRunning (200)

AgentDomainContainerHealth
agent-brinxxaicheck.magicomniverse.onlineagent-brinxxHTTP 200
agent-spranzaicheck-spranz.magicomniverse.onlineagent-spranzHTTP 200
agent-jodasignagent-jodasign.magicomniverse.onlineagent-jodasignHTTP 000 (timeout)
agent-magiceverseagent-magiceverse.magicomniverse.onlineagent-magiceverseHTTP 200
agent-magic-dwfagent-dwf.magicomniverse.onlineagent-magic_dwfHTTP 200
agent-support-agentagent-support.magicomniverse.onlineagent-support_agentHTTP 200
agent-ollivandersagent-ollivanders.magicomniverse.onlineagent-ollivandersHTTP 200
agent-princessagent-princess.magicomniverse.onlineagent-princessHTTP 200
agent-topgivingagent-topgiving.magicomniverse.onlineagent-topgivingHTTP 200
agent-logohorlogeagent-logohorloge.magicomniverse.onlineagent-logohorlogeHTTP 200

Agent Infrastructure:

ServiceDomainContainerPortStatus
flowbuilderflowbuilder.magicomniverse.onlineflowbuilder3003Running (404 at root = expected, API-only)
escalation-serverescalation.magicomniverse.onlineescalation-server11099Running (200)
webhook-serverwebhook.magicomniverse.onlinewebhook-server11098Running (404 at root = expected, API-only)
widget-serveragent.magicomniverse.onlinewidget-server4061Running (404 at root = expected, API-only)

ServiceURLContainerHTTP StatusNotes
Portalportal.magicomniverse.onlineportal200MySQL session store fixed (was using Docker bridge IP)
PIMpim.magicomniverse.onlinepim-backend404API-only (11,254 products, 189 tables)
Connectorconnector.magicomniverse.onlinemagic-connector200Supplier data connector
Contactcontact.magicomniverse.onlinemagic-contact200Contact management
Editoreditor.magicomniverse.onlinemagic-editor200Product editor tool
3D3d.magicomniverse.onlinemagic-3d404API-only (3D product visualization)
Logologo.magicomniverse.onlinemagic-logo200Logo designer tool
Modalmodal.magicomniverse.onlinemagic-modal200Modal UI component
Moodshotmoodshot.magicomniverse.onlinemagic-moodshot200Moodshot image tool
Resizeresize.magicomniverse.onlinemagic-resize200Image resize service
Terminalterminal.magicomniverse.onlinemagic-terminal501Sshwifty (WebSocket — works in browser, curl returns 501)
Monitormonitor.magicomniverse.onlinenetdata200Netdata system monitoring
Dashboarddashboard.magicomniverse.onlinemagic-dashboard200Dev projects dashboard
Accessaccess.magicomniverse.onlinemagic-access200Access management
Coolifycoolify.magicomniverse.onlinecoolify302Coolify dashboard (redirect to login)
Nextclouddocs.magicomniverse.onlinenextcloud_app302Nextcloud (redirect to login)
OnlyOfficeoffice.magicomniverse.onlineonlyoffice_docs302OnlyOffice (redirect to login)

Domain ZoneTarget IPStatus
magicomniverse.online (apex)185.104.28.238 (registrar parking!)NOT pointing to new server
*.magicomniverse.online159.195.68.41 (new server)Active — all services running
*.magiceverse.online83.86.98.93 (old server)Active — NOT yet migrated
magiceverse.online (apex)84.25.156.251 (old server)Active — HTTPS connection refused

Both zones share the same nameservers: ns.zxcs.eu, ns.zxcs.be, ns.zxcs.nl.

Domain Health Check — Every Single Domain

Section titled “Domain Health Check — Every Single Domain”
DomainIPStatus
portal.magicomniverse.online159.195.68.41200
connector.magicomniverse.online159.195.68.41200
contact.magicomniverse.online159.195.68.41200
editor.magicomniverse.online159.195.68.41200
logo.magicomniverse.online159.195.68.41200
modal.magicomniverse.online159.195.68.41200
moodshot.magicomniverse.online159.195.68.41200
resize.magicomniverse.online159.195.68.41200
n8n.magicomniverse.online159.195.68.41200
n8n2.magicomniverse.online159.195.68.41200
n8n3.magicomniverse.online159.195.68.41200
n8n-clean.magicomniverse.online159.195.68.41200
dashboard.magicomniverse.online159.195.68.41200
access.magicomniverse.online159.195.68.41200
escalation.magicomniverse.online159.195.68.41200
aicheck.magicomniverse.online159.195.68.41200
aicheck-spranz.magicomniverse.online159.195.68.41200
agent-logohorloge.magicomniverse.online159.195.68.41200
agent-topgiving.magicomniverse.online159.195.68.41200
agent-princess.magicomniverse.online159.195.68.41200
agent-ollivanders.magicomniverse.online159.195.68.41200
agent-support.magicomniverse.online159.195.68.41200
agent-dwf.magicomniverse.online159.195.68.41200
agent-magiceverse.magicomniverse.online159.195.68.41200
devdocs.magiceverse.online83.86.98.93200 (on old server, nginx)
DomainIPStatusRedirect
coolify.magicomniverse.online159.195.68.41302→ login
docs.magicomniverse.online159.195.68.41302→ Nextcloud login
office.magicomniverse.online159.195.68.41302→ OnlyOffice login
brinxx.magicomniverse.online159.195.68.41307→ /nl
default.magicomniverse.online159.195.68.41307→ /nl
demo.magicomniverse.online159.195.68.41307→ /nl
development.magicomniverse.online159.195.68.41307→ /nl
bovisales.magicomniverse.online159.195.68.41307→ /nl
spranz.magicomniverse.online159.195.68.41307→ /nl
desluis.magicomniverse.online159.195.68.41307→ /nl
jodasign.magicomniverse.online159.195.68.41307→ /nl
logohorloge.magicomniverse.online159.195.68.41307→ /nl
DomainIPStatusReason
pim.magicomniverse.online159.195.68.41404Medusa API, no root handler
3d.magicomniverse.online159.195.68.41404API-only service
flowbuilder.magicomniverse.online159.195.68.41404API-only service
webhook.magicomniverse.online159.195.68.41404API-only service
agent.magicomniverse.online159.195.68.41404Widget API-only service
admin-brinxx.magicomniverse.online159.195.68.41404Medusa API (use /app for admin UI)
admin-default.magicomniverse.online159.195.68.41404Medusa API
admin-demo.magicomniverse.online159.195.68.41404Medusa API
admin-development.magicomniverse.online159.195.68.41404Medusa API
admin-master.magicomniverse.online159.195.68.41404Medusa API
admin-bovisales.magicomniverse.online159.195.68.41404Medusa API
admin-desluis.magicomniverse.online159.195.68.41404Medusa API
admin-jodasign.magicomniverse.online159.195.68.41404Medusa API
admin-logohorloge.magicomniverse.online159.195.68.41404Medusa API
admin-spranz.magicomniverse.online159.195.68.41404Medusa API
admin-toolvizion.magicomniverse.online159.195.68.41404Medusa API
DomainIPStatusNotes
terminal.magicomniverse.online159.195.68.41501Sshwifty WebSocket — works in browser
agent-jodasign.magicomniverse.online159.195.68.41000 (timeout)Container healthy but unreachable externally
DomainIPIssue
spranz-admin.magicomniverse.online159.195.68.41No Traefik router (use admin-spranz instead)
brinxx-admin.magicomniverse.online159.195.68.41No Traefik router (use admin-brinxx instead)
bovisales-admin.magicomniverse.online159.195.68.41No Traefik router
jodasign-admin.magicomniverse.online159.195.68.41No Traefik router
desluis-admin.magicomniverse.online159.195.68.41No Traefik router
logohorloge-admin.magicomniverse.online159.195.68.41No Traefik router
toolvizion-admin.magicomniverse.online159.195.68.41No Traefik router
midocean.magicomniverse.online159.195.68.41Tenant not deployed
midocean-admin.magicomniverse.online159.195.68.41Tenant not deployed
xdconnects.magicomniverse.online159.195.68.41Tenant not deployed
xdconnects-admin.magicomniverse.online159.195.68.41Tenant not deployed
pfconcept.magicomniverse.online159.195.68.41Tenant not deployed
pfconcept-admin.magicomniverse.online159.195.68.41Tenant not deployed
newwave.magicomniverse.online159.195.68.41Tenant not deployed
newwave-admin.magicomniverse.online159.195.68.41Tenant not deployed
toolvizion.magicomniverse.online159.195.68.41Backend-only tenant, no storefront
n8n-spranz.magicomniverse.online159.195.68.41N8N instance not deployed
DomainIPStatus
magiceverse.nl216.198.79.1 (Vercel)Separate project
www.magiceverse.nlVercel DNSSeparate project
pim.magiceverse.nl84.25.156.251HTTPS refused
portal.magiceverse.nlNo DNS recordAlready cleaned up
api.magiceverse.nlNo DNS recordAlready cleaned up

All subdomains with active Traefik routers have valid Let’s Encrypt certificates, auto-provisioned by Traefik. Expiry dates range from June 18 to June 24, 2026 (~3 months from now). No manual certificate management required.

Domains showing “self-signed cert” in the “Not Deployed” section above do not have Traefik routers — Traefik serves its default self-signed cert when no matching router exists.


  • MySQL magic_doc data imported (fixed 2026-03-26)
  • Product/variant counts match between old and new server (synced 2026-03-26)
  • Table counts match for all tenant databases (fixed 2026-03-26)
  • Jodasign quotation data restored (231 headers, 630 lines — 2026-03-26)
  • user_rbac_role table created in all 11 tenant databases
  • Portal login works with session persistence
  • All storefronts render correctly with tenant branding (visual check needed)
  • Spranz homepage has all branded components (hero, nav, categories) — build still in queue
  • magicomniverse.online apex domain A record updated to 159.195.68.41
  • Coolify API token regenerated (current token expired)
  • agent-jodasign.magicomniverse.online timeout resolved
  • Old server containers still running as fallback
WaveServicesRisk Level
1development, demo, defaultZero customer impact
2desluis, toolvizionBackend-only, no storefronts
3connector, contactBusiness services
4editor, 3d, logo, modal, moodshot, resizeTools
5bovisales, jodasign, logohorlogeClient tenants
6spranz, brinxxHigh-value client tenants
7pim, portal, dashboardCore infrastructure
8monitoring, agents, n8nInfrastructure services
  • Monitor Netdata for error spikes (first 2 hours)
  • SSL certificates will auto-provision for *.magiceverse.online domains via Traefik
  • Keep old server running 2 weeks as fallback
  • If no issues: stop old server containers, take final backup, decommission

  1. magicomniverse.online apex domain — Points to 185.104.28.238 (registrar parking page), NOT to 159.195.68.41. The A record was never updated.
  2. Coolify API token expired — Bearer token gcs_FSBBk... returns “Unauthenticated”. Must generate a new token from Coolify settings.
  1. agent-jodasign.magicomniverse.online — Connection timeout (HTTP 000). Container reports healthy but is unreachable externally. May be a Traefik routing issue.
  2. *-admin.magicomniverse.online domains (11) — These DNS records exist but have no Traefik router. The actual admin panels use admin-*.magicomniverse.online (note the prefix vs suffix pattern). Consider removing the -admin DNS records or adding redirects.
  3. Undeployed tenant domainsmidocean, xdconnects, pfconcept, newwave storefronts and admins resolve to the server but have no Coolify apps. Either deploy these tenants or remove the DNS records.
  4. n8n-spranz.magicomniverse.online — DNS resolves but no N8N instance deployed. Remove DNS or deploy.
  1. 10 exited/duplicate Coolify apps — Old sslip.io deployments: toolvizion-backend (old), bovisales-backend (old), bovisales-storefront (old), desluis-backend (old), jodasign-backend (old), jodasign-storefront (old), logohorloge-backend (old), logohorloge-storefront (old), spranz-backend (old), spranz-storefront (old). Should be deleted from Coolify.
  2. 12 of 13 Redis instances lack healthchecks — Only brinxx-redis (shared-redis) has Docker healthchecks. Missing on: redis-default, redis-demo, redis-development, redis-master, toolvizion-redis, bovisales-redis, desluis-redis, jodasign-redis, logohorloge-redis, spranz-redis, agent-redis, agent-spranz-redis.
  3. 15 legacy/empty PostgreSQL databases — magic_dwf (0 tables), magiceverse (0 tables), ollivanders (0 tables), princess (0 tables), topgiving (0 tables), magic_management (1 table), magiceverse3_cms (14 tables), magic_demokkenkoning_logo (2 tables), maw_kalender (18 tables), workshopmw (9 tables), spranzpdf (9 tables), wireframes (1 table), mailer (5 tables), spranz (1 table), moodshot_service (1 table).
  4. 4 legacy/empty MySQL databases — dartv2dev (30 empty tables), uren (148 empty tables), magic_promotionalz (0 tables), portal_db (0 tables).
  5. magic_n8n_clean crash-looping on old server — Works fine on new server.
  6. Old server disk at 87% — Root filesystem only has 29 GB free. Not a new-server issue but worth monitoring during transition.
MetricValueAction
RAM19 GB / 31 GB (61%), no swapConsider adding swap
Docker images145.1 GB total, 130.8 GB reclaimabledocker image prune would free 130 GB
Docker build cache69.28 GB, 69.01 GB reclaimabledocker builder prune would free 69 GB
Disk298 GB / 1007 GB (31%)OK, but ~200 GB reclaimable

RepoContentsDeploy TargetBranch
midego1/Magic-e-VERSEMonorepo: backend, storefront, tenantsAll commerce backends + storefrontsmain (protected)
midego1/Magic-PortalPortal (Express.js + Vite/React)Portal appmain
midego1/Magic-TerminalSshwifty web SSH clientTerminal servicemain
midego1/magic-agent-brinxxAI agent for Brinxxagent-brinxxmain
midego1/magic-agent-spranzAI agent for Spranzagent-spranzmain
midego1/magic-agent-jodasignAI agent for Jodasignagent-jodasignmain
midego1/magic-agent-magiceverseAI agent for MagicEverseagent-magiceversemain
midego1/magic-agent-dwfAI agent for DWFagent-magic_dwfmain
midego1/magic-agent-supportAI support agentagent-support_agentmain
midego1/magic-agent-ollivandersAI agent for Ollivandersagent-ollivandersmain
midego1/magic-agent-princessAI agent for Princessagent-princessmain
midego1/magic-agent-topgivingAI agent for Topgivingagent-topgivingmain
midego1/magic-agent-logohorlogeAI agent for Logohorlogeagent-logohorlogemain
  • main — production branch (Coolify deploys from this)
  • development — used only by development-backend and development-storefront
  • main is protected on Magic-e-VERSE — changes require PRs

For tenants that need custom storefront code (e.g., Spranz), files are placed in tenants/{tenant}/storefront/src/ and a custom Dockerfile.storefront copies the base storefront first, then overlays tenant-specific files.

Magic-e-VERSE/
├── backend/ # Shared Medusa v2 backend
├── storefront/ # Shared Next.js 15 storefront
│ ├── Dockerfile # Default storefront Dockerfile
│ └── src/ # Base storefront code
└── tenants/
└── spranz/
├── Dockerfile.storefront # Custom build: base + overlay
└── storefront/
└── src/ # 20 Spranz-specific files
├── app/layout.tsx
├── app/[countryCode]/(main)/page.tsx
├── modules/home/components/spranz-*/
├── modules/layout/components/spranz-nav/
└── ...

The old server at 83.86.98.93 (SSH port 22022, user adminmichiel1) runs:

  • 58 running containers (Docker Compose, manually managed)
  • Nginx reverse proxy with 108 site configs (~75 unique domains)
  • 54 PostgreSQL databases in magic_pim_postgres_dev
  • 9 MySQL databases in mysql container
  • PM2 installed but no active processes
  • Ubuntu 24.04 LTS, hostname: magic-server
  • Disk: 87% full (29 GB free)

Services on Old Server NOT Migrated (Intentional)

Section titled “Services on Old Server NOT Migrated (Intentional)”
ServiceReason
Nextcloud + OnlyOfficeNow on new server (migrated separately)
Omada ControllerNetwork management, stays on local network
VaultwardenCritical — migrate separately or keep on old server
rembg-serviceBackground removal AI — migrate when needed
Crypto Monitor (crypto.magiceverse.online)Bitvavo trading bot — separate concern
Glances (glances.magiceverse.online)Replaced by Netdata on new server
magiceverse3Legacy CMS, no longer active
demokkenkoningLegacy service, no longer active
brandwizardLegacy service, no longer active

  1. Push to main branch of midego1/Magic-e-VERSE
  2. Coolify auto-detects the push and queues builds for all apps using the repo
  3. Monitor at coolify.magicomniverse.online
  4. Alternatively, trigger a specific app deploy via API:
    Terminal window
    curl -X GET -H "Authorization: Bearer $COOLIFY_TOKEN" \
    "https://coolify.magicomniverse.online/api/v1/applications/{uuid}/restart"
Terminal window
ssh root@159.195.68.41
docker ps --format "table {{.Names}}\t{{.Status}}" | sort
Terminal window
docker logs <container-name> --tail=50 -f
Terminal window
# PostgreSQL
docker exec -it magic-postgres psql -U postgres -d <database_name>
# MySQL
docker exec -it mysql mysql -uroot -p<password> <database_name>

If a service breaks after DNS cutover:

  1. Change DNS A record back to 83.86.98.93 (old server)
  2. Old server containers should still be running
  3. DNS propagation takes 5-30 minutes depending on TTL

If a Medusa backend container hangs during startup with “Select tables to DELETE” prompt:

Terminal window
# Connect to the tenant database
docker exec magic-postgres psql -U postgres -d <tenant_db>
# Truncate the problematic table
TRUNCATE link_module_migrations;
# Restart the container
docker restart <container-name>
Terminal window
# Remove unused images (frees ~130 GB)
docker image prune -a
# Remove build cache (frees ~69 GB)
docker builder prune -a