---
id: TASK-51
title: Consolidate standalone r*.online domains → rspace.online
status: Done
assignee: []
created_date: '2026-02-25 07:46'
updated_date: '2026-03-14 21:55'
labels:
  - infrastructure
  - domains
  - migration
dependencies: []
priority: high
status_history:
  - status: Done
    timestamp: '2026-03-14 21:55'
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
Migrate ~20 standalone domains (rbooks.online, rmaps.online, rfunds.online, etc.) into path-based routing under rspace.online. Currently these domains are silently rewritten to /:space/:moduleId internally — this migration makes rspace.online the canonical URL, adds 301 redirects, removes dead infrastructure, and lets domains expire.

Execution order: Phase 2 → 1 → 3 → 4 → 5 → 6 (fix external service URLs before enabling redirects).

Key risks:
- rnetwork.online is dual-purpose (module alias AND TWENTY_API_URL) — must decouple before redirects
- sync.rmaps.online is a separate WebSocket service, not the rmaps module
- PWA/service worker caches on old domains may need self-unregistering workers
- keepStandalone domains (rcart.online, rfiles.online, swag.mycofi.earth, providers.mycofi.earth) need separate evaluation
<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 All standalone domain hits return 301 → rspace.online/demo/{moduleId}/...
- [ ] #2 No hardcoded references to r*.online domains remain in codebase
- [ ] #3 WebAuthn/EncryptID auth works solely on rspace.online
- [ ] #4 Standalone Traefik labels and docker-compose.standalone.yml removed
- [ ] #5 Standalone .ts entry points deleted
- [ ] #6 Domain registrations allowed to expire
<!-- AC:END -->

## Implementation Notes

<!-- SECTION:NOTES:BEGIN -->
Domain consolidation complete. All standalone domains 301 → rspace.online
<!-- SECTION:NOTES:END -->
