Windows Home Server — Part 25: The Ultimate Home Server Migration Checklist
You have configured a secure, high-performance web server, database engine, media transcoder, and continuous deployment pipeline—all running natively on bare-metal Windows.
The final step is migrating your active projects, databases, and assets off paid VPS platforms (like Heroku, DigitalOcean, or AWS) to your home server. This guide provides a step-by-step migration checklist, detailing how to safely export data, configure DNS records, and verify stability.
1. Step-by-Step Migration Playbook
Follow these steps sequentially to minimize downtime:
Phase A: Database Export & Restore
- Put Cloud App in Read-Only Mode: Stop writes to your cloud database (or temporarily shut down the dynamic web dynos).
- Export Database Schema & Data:
- For PostgreSQL:
pg_dump -h CLOUD_HOST -U USERNAME -d DBNAME -f cloud-export.sql - For MySQL/MariaDB:
mysqldump -h CLOUD_HOST -u USERNAME -p DBNAME > cloud-export.sql
- For PostgreSQL:
- Import to Home Server Database:
- For PostgreSQL:
# Create database locally "C:\Program Files\PostgreSQL\16\bin\createdb.exe" -U postgres -h localhost DBNAME # Import sql "C:\Program Files\PostgreSQL\16\bin\psql.exe" -U postgres -d DBNAME -f cloud-export.sql - For MariaDB:
mariadb -u root -p DBNAME < cloud-export.sql
- For PostgreSQL:
Phase B: File Asset & Secret Sync
- Sync S3 buckets: Download files from your paid S3 buckets and upload them to your local MinIO bucket or Cloudflare R2:
aws s3 sync s3://paid-cloud-bucket s3://local-minio-bucket --endpoint-url http://localhost:9000 - Transfer Environment Files: Copy your environment configurations (
.env) for each application into their respectiveC:\Server\apps\folders. Double-check database connection strings to ensure they point tolocalhost.
Phase C: Continuous Deployment Hook Setup
- Configure SSH Keys: Generate local SSH keys on the Windows server and register them on GitHub to allow passwordless git pulls.
- Activate Webhooks: Register the repository webhook URLs pointing to your local deployment handler (
https://deploy.yourdomain.com/deploy-bot) as configured in Part 9.
Phase D: DNS Cutover
- Go to your Cloudflare Dashboard → DNS settings.
- Identify subdomain records (like
api.yourdomain.comordashboard.yourdomain.com) that previously pointed to VPS IP addresses. - Remove those records.
- Route the subdomains to your home server's Cloudflare Tunnel (as set up in Part 2):
# Point subdomains to the tunnel C:\Server\bin\cloudflared.exe --origincert C:\Server\cloudflared\cert.pem tunnel route dns homeserver api.yourdomain.com
2. Server Stability & Maintenance Checklist
To ensure your server runs reliably without manual intervention:
- BIOS AC Recovery: Verify that the BIOS setting "AC Power Recovery" is set to On or Last State. (Test this by pulling the charger plug from the laptop and plugging it back in; the machine must boot to Windows automatically).
- Lid Close Sleep: Double-check that lid-close standby actions are set to "Do Nothing" for both AC and battery power profiles.
- Active Hours: Verify that Windows Update active hours cover your working day to block unexpected reboots.
- Logs Rotation: Ensure that Caddy, n8n, Uptime Kuma, and other NSSM services have log rotation enabled to prevent disk space exhaustion.
- Telegram Alerts: Trigger a test alert in your system monitor script to verify notifications are delivered correctly to your phone.
By completing this migration playbook, you transition your workloads to your bare-metal Windows home server, saving hundreds of dollars per year while running a highly responsive, secure, and zero-maintenance local platform.
Comments
Comments are powered by giscus. Set
PUBLIC_GISCUS_REPO_IDandPUBLIC_GISCUS_CATEGORY_IDin your environment to enable them.