Discourse Migration Guide: How to Move from Official Hosting to Your Own VPS (Zero Data Loss)
Direct Answer: Migrating a Discourse forum from official Discourse.org hosting to a self-hosted cloud VPS (such as Hetzner, AWS, or DigitalOcean) involves downloading a verified database backup from Discourse admin, provisioning a Docker container on Ubuntu, verifying data integrity on a staging URL, and performing a quick DNS cutover. When executed properly, the migration achieves zero data loss with a planned, read-only maintenance window under 30 minutes.
Many growing online communities find themselves paying $100 to $300+ each month for standard managed plans. Moving to client-owned cloud infrastructure reduces recurring hosting expenses by up to 70โ80% while granting full root access and plugin freedom.
Step 1: Generate & Download the Discourse Backup
Discourse includes built-in backup tools that bundle the PostgreSQL database, site settings, and local uploads into a single compressed tarball (.tar.gz):
- Log into your Discourse admin panel at
/admin/backups. - Enable "include uploads in backups" in site settings if your images are hosted locally.
- Trigger manual backup generation. For forums larger than 20GB, request an S3 export link from your host support.
- Download and calculate the SHA-256 checksum of the backup archive on your local terminal.
Step 2: Provision the Destination Cloud VPS
Discourse requires an official Docker container architecture (discourse_docker). Select a high-performance modern server:
- Small communities (<50k monthly page views): 2 vCPU, 4GB RAM (e.g., Hetzner CPX21 or DigitalOcean Droplet).
- Active communities (50kโ250k page views): 4 vCPU, 8GB RAM with dedicated NVMe storage.
- High traffic (250k+ page views): 4โ8 vCPU, 16GB RAM with separated Redis cache and external PostgreSQL.
Step 3: Staging Restoration & Parity Audit
Never point live DNS to a newly restored forum without staging verification. Restore the backup onto a temporary subdomain (e.g. staging.community.yourdomain.com) and verify:
- User avatars, custom emojis, and historical image attachments render without 404s.
- Third-party OAuth logins (Google, GitHub, Discord, SSO) function correctly.
- Custom theme CSS, badges, and plugins pass security and compatibility checks.
Step 4: The Planned Cutover & Rollback Protection
To ensure no community member posts are lost between your export and DNS propagation:
- 48 hours prior to cutover, lower your domain's DNS TTL to 300 seconds (5 minutes).
- Place the source forum into Read-Only Mode under
/admin/site_settings/category/all_results?filter=read_only. - Generate a final incremental database snapshot and restore it onto the destination server.
- Update your A/AAAA records to point to the new VPS IP address.
- Disable read-only mode once the SSL certificate validates via Let's Encrypt.
Want Zero-Risk Discourse Migration Done For You?
Our team provides complete, end-to-end managed Discourse hosting and migration services. We audit your plugins, clone staging environments, configure SMTP, and manage 24/7 operations.
Claim Your Free Forum Audit →Have questions about your software architecture?
Book a free 20-minute strategy call with our principal software architects. We will evaluate your prototype or workflow and provide a clear technical roadmap.