A complete step-by-step guide to migrating your Contabo VPS to RamNode Cloud using file-level migration techniques.
This guide provides step-by-step instructions for migrating your infrastructure from Contabo to RamNode. Whether you're moving a single VPS or multiple servers, following this structured approach will ensure minimal downtime and a smooth transition.
RamNode offers modern cloud infrastructure with high-performance NVMe storage, private networking capabilities, and flexible scaling options that make it an excellent choice for developers, businesses, and self-hosting enthusiasts.
Important: Unlike cloud providers that use OpenStack or offer image export functionality, Contabo runs a proprietary virtualization platform that does not support disk image exports.
Contabo's infrastructure limitations include:
This guide focuses on file-level migration using standard Linux tools such as rsync, tar, mysqldump, and pg_dump. While this approach requires more steps than an image-based migration, it offers several advantages: you can selectively migrate only what you need, clean up legacy configurations, and optimize your setup for RamNode's NVMe-based infrastructure.
Before beginning the migration, document everything running on your Contabo server(s):
Compare your current Contabo resource usage with RamNode's offerings:
| Resource | Contabo (Current) | RamNode (Target) |
|---|---|---|
| CPU Cores | Document current allocation | Match or exceed based on load |
| RAM | Check actual usage with free -h | Size appropriately for workload |
| Storage | Use df -h to check usage | NVMe SSD (high IOPS) |
| Bandwidth | Review monthly transfer | Generous allocations available |
| Network | Note IP addresses in use | Private networking available |
From the RamNode dashboard:
Once your RamNode VPS is deployed, perform initial setup:
# Update system packages
apt update && apt upgrade -y # Debian/Ubuntu
# or
dnf update -y # RHEL/Rocky/Alma
# Set timezone
timedatectl set-timezone America/Chicago
# Configure hostname
hostnamectl set-hostname your-server.example.comIf you're migrating multiple servers, RamNode's private networking allows secure inter-server communication:
# Enable private network interface
# Network details available in RamNode dashboard
ip addr add 10.x.x.x/24 dev eth1
ip link set eth1 upCreate a comprehensive backup of your Contabo server before migration:
Using rsync (Recommended):
# From your RamNode server, pull data from Contabo
rsync -avzP --progress root@contabo-ip:/var/www/ /var/www/
rsync -avzP --progress root@contabo-ip:/etc/ /home/backup/etc/
rsync -avzP --progress root@contabo-ip:/home/ /home/backup/home/Using tar for Compressed Archives:
# On Contabo server, create archives
tar -czvf /tmp/www-backup.tar.gz /var/www/
tar -czvf /tmp/etc-backup.tar.gz /etc/
# Transfer to RamNode
scp /tmp/*-backup.tar.gz root@ramnode-ip:/home/backup/MySQL/MariaDB:
# Export all databases
mysqldump --all-databases --single-transaction \
--routines --triggers --events > all-databases.sql
# Or export specific database
mysqldump -u root -p database_name > database_name.sql
# Transfer to RamNode
scp all-databases.sql root@ramnode-ip:/home/backup/PostgreSQL:
# Export all databases
pg_dumpall > all-postgres.sql
# Or specific database
pg_dump database_name > database_name.sqlMongoDB:
# Full backup
mongodump --out /tmp/mongodb-backup/
# Compress and transfer
tar -czvf /tmp/mongodb-backup.tar.gz /tmp/mongodb-backup/
scp /tmp/mongodb-backup.tar.gz root@ramnode-ip:/home/backup/If running a mail server:
# Backup mail data
tar -czvf /tmp/mail-backup.tar.gz /var/mail/ /var/vmail/
# Backup mail configuration
tar -czvf /tmp/mail-config.tar.gz /etc/postfix/ /etc/dovecot/# Let's Encrypt certificates
tar -czvf /tmp/letsencrypt-backup.tar.gz /etc/letsencrypt/
# Or copy specific certificates
rsync -avz /etc/ssl/certs/ root@ramnode-ip:/etc/ssl/certs/
rsync -avz /etc/ssl/private/ root@ramnode-ip:/etc/ssl/private/Nginx:
# Install Nginx on RamNode
apt install nginx -y
# Copy configuration files
rsync -avz root@contabo-ip:/etc/nginx/ /etc/nginx/
# Test configuration
nginx -t
# Restart service
systemctl restart nginxApache:
# Install Apache
apt install apache2 -y
# Copy configurations
rsync -avz root@contabo-ip:/etc/apache2/ /etc/apache2/
# Enable required modules
a2enmod rewrite ssl headers proxy proxy_http
# Test and restart
apachectl configtest
systemctl restart apache2MySQL/MariaDB:
# Install MariaDB
apt install mariadb-server -y
# Secure installation
mysql_secure_installation
# Import databases
mysql < /home/backup/all-databases.sql
# Recreate users if needed
mysql -e "CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';"
mysql -e "GRANT ALL ON database.* TO 'user'@'localhost';"PostgreSQL:
# Install PostgreSQL
apt install postgresql postgresql-contrib -y
# Import databases
sudo -u postgres psql < /home/backup/all-postgres.sqlIf using a control panel, follow the panel-specific migration process:
cPanel:
# On Contabo (source), create full backup via WHM
# WHM > Backup > Full Backup
# Or use command line
/scripts/pkgacct username /home/backup/
# On RamNode, restore
/scripts/restorepkg /home/backup/cpmove-username.tar.gzPlesk:
# Export via Plesk Migrator or command line
plesk bin pleskbackup domains-only -v
# Transfer and restore on RamNode
plesk bin pleskrestore --restore domains-only backup.xml# Export container images
docker save -o myapp.tar myapp:latest
# Export volumes
docker run --rm -v myvolume:/data -v $(pwd):/backup \
alpine tar -czvf /backup/volume-backup.tar.gz /data
# On RamNode, load images
docker load -i myapp.tar
# Restore volumes
docker run --rm -v myvolume:/data -v $(pwd):/backup \
alpine tar -xzvf /backup/volume-backup.tar.gz -C /Reduce TTL values 24-48 hours before migration to ensure faster propagation:
example.com. 300 IN A current-ipwww.example.com. 300 IN A current-ipAfter verifying your RamNode server is functioning correctly:
# Check DNS propagation
dig example.com +short
dig @8.8.8.8 example.com +shortOr use online tools like whatsmydns.net or dnschecker.org
Configure rDNS for your RamNode IP through the control panel for proper email deliverability and server identification.
Take advantage of RamNode's NVMe storage and optimize your applications:
# Enable opcache for PHP
# /etc/php/8.x/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
# Optimize MySQL/MariaDB
# /etc/mysql/conf.d/optimization.cnf
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT# Configure firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow http
ufw allow https
ufw enable
# Install and configure fail2ban
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2banEstablish a backup strategy for your RamNode server:
# Install restic for efficient backups
apt install restic -y
# Initialize backup repository (RamNode S3 or external)
restic init -r s3:s3.us-east-1.amazonaws.com/bucket-name
# Create backup script
#!/bin/bash
restic backup /var/www /etc --exclude-caches
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6
# Add to cron for daily backups
0 2 * * * /root/backup.shAfter confirming everything works on RamNode (recommend waiting 7-14 days):
# Check if service is running
systemctl status nginx
systemctl status apache2
# Check if port is open
ss -tlnp | grep :80
ss -tlnp | grep :443
# Check firewall
ufw status# Check MySQL/MariaDB is running
systemctl status mariadb
# Verify user permissions
mysql -e "SELECT user, host FROM mysql.user;"
# Check bind address
grep bind-address /etc/mysql/mariadb.conf.d/*.cnf# Re-issue Let's Encrypt certificate
certbot certonly --nginx -d example.com -d www.example.com
# Check certificate validity
openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -text -noout# Check mail queue
mailq
# Verify MX records
dig MX example.com
# Test SMTP
swaks --to test@example.com --server localhostIf you encounter issues during your migration:
Congratulations on successfully migrating from Contabo to RamNode! You now have access to high-performance NVMe storage, flexible scaling options, and excellent support.