[{"data":1,"prerenderedAt":201},["ShallowReactive",2],{"seo-verification":3,"blog-migrating-from-oracle-always-free-arm-to-a-vps-complete-guide-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":23,"featuredImage":25,"bgImage":26,"posterImage":27,"relatedSolution":28,"intro":30,"sections":31,"ctaTitle":150,"ctaBody":151,"ctaButton":152,"ctaUrl":153,"relatedPosts":154},260,"migrating-from-oracle-always-free-arm-to-a-vps-complete-guide",{"fr":10,"en":8,"ar":11},"migrer-oracle-free-arm-vps","الهجرة-من-oracle-always-free-arm-إلى-vps-دليل-شامل","Migrating from Oracle Always Free ARM to a VPS: complete guide","Oracle cuts its Always Free ARM from 4 to 2 vCPU and 24 to 12 GB on August 18, 2026. Migrate your Docker, Coolify, n8n or Nextcloud stack to a VPS with no imposed quota.",9,0,false,"2026-08-14T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},3,"Deployment","deploiement","bg-success\u002F10 text-success",[24],{"id":19,"name":20,"slug":21,"color":22,"icon":21},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-oracle-free-arm-vps-poster.svg",{"categorySlug":29,"appSlug":25},"application-deployment-devops","On August 18, 2026, Oracle halves the resources of its Always Free ARM offer: from 4 vCPU and 24 GB of RAM to 2 vCPU and 12 GB. If you host Coolify, n8n, Nextcloud, Immich or any other self-hosted service on this infrastructure, your stack falls below the minimum requirements recommended by the vendors on that date. This guide walks you through planning and executing the migration to a VPS with guaranteed resources, step by step, with no service interruption.",[32,36,47,50,53,81,102,105,108,111],{"type":33,"title":34,"body":35},"h2","Why Oracle Always Free is no longer a reliable foundation","Oracle announced the reduction of its Always Free ARM offer for August 18, 2026: 4 vCPU and 24 GB of RAM give way to 2 vCPU and 12 GB. Beyond this cut, the free Oracle offer has always carried structural risks its users know well: unplanned instance reboots, interruptions during regional maintenance windows, and no SLA on allocated resources. Oracle can reclaim underused capacity without notice. For a production service — whether a n8n dashboard, a family-shared Nextcloud instance, or a Coolify panel managing your deployments — this uncertainty is a real operational risk. A monthly-billed VPS offers a predictable flat rate, a dedicated IPv4, full root access, and resources that are not redistributed to another tenant. The cost is not zero, but it is known in advance and does not depend on a policy a vendor can revise unilaterally.",{"type":37,"title":38,"items":39},"ul","What a paid VPS brings compared to a free tier",[40,41,42,43,44,45,46],"**Guaranteed resources** — vCPU and RAM reserved for your instance, not shared with other tenants or recoupable by the provider.","**Dedicated IPv4** — a fixed public address, without shared NAT, essential for stable DNS records and incoming webhooks.","**Unrestricted root access** — you install and configure whatever you need, with no port whitelist or protocol limitations imposed.","**Predictable bandwidth** — a clearly stated monthly volume included, with no surprise billing per gigabyte beyond a hidden threshold.","**SLA and support** — in case of hardware failure, a service level agreement commits the provider to restore the service within a contractual timeframe.","**Flat monthly cost** — from 99 DH\u002Fmonth per month, the budget is known upfront and does not vary with actual resource usage.","**No long-term commitment** — you do not sign an annual contract: Cloud VPS offers can be cancelled at any time.",{"type":33,"title":48,"body":49},"Which apps are affected by the resource reduction","With 2 vCPU and 12 GB of RAM after August 18, 2026, the new Oracle limits may look comfortable on paper. In practice, the most common self-hosted applications have minimum requirements that stack up as soon as you combine several of them. Coolify requires at least 2 vCPU and 2 GB of RAM for its own build and deployment process — it consumes resources on top of the services it manages. n8n recommends 2 vCPU and 2 GB to run stably under load. Nextcloud gets by with 2 GB for fewer than 50 users, but its file sync processes are I\u002FO and CPU hungry as the number of active clients grows. Immich, the photo manager, recommends 4 GB of RAM for its machine learning image recognition pipeline alone — below that, ML workers stop or crash silently. If you run two or three of these services on the same Oracle instance, the margin becomes zero, and the slightest spike (nightly Nextcloud indexing, triggered n8n workflow, Coolify build) causes OOM kills or freezes. The timing is therefore right to migrate to properly sized infrastructure.",{"type":33,"title":51,"body":52},"Prerequisites before migrating","A successful migration is prepared before touching DNS configuration or shutting anything down. Start by making an exact list of the services running on your Oracle instance: service name, listening port, associated Docker volume, domain or subdomain used. Take a full snapshot of the instance via the Oracle Cloud console — this is your safety net in case of unexpected issues. Also export all your Docker volumes to tar archives, which you can transfer independently. Lower the DNS TTL of your A records to 300 seconds at least 24 hours before the migration: this limits propagation time during the final cutover. Identify cron jobs, incoming webhooks and third-party services that use the current Oracle IP — tools like Stripe, GitHub or Slack send events to a fixed URL that you will need to update. Finally, verify that your TLS certificates are managed via Let's Encrypt with automatic renewal, as they will need to be regenerated on the new IP.",{"type":54,"title":55,"steps":56},"steps","Export and recreate your Docker stack",[57,60,63,66,69,72,75,78],{"title":58,"body":59},"List active containers and volumes","On the Oracle instance, list all containers: `docker ps -a --format 'table {{.Names}}\\t{{.Image}}\\t{{.Mounts}}'`. List volumes: `docker volume ls`. Note the container\u002Fvolume name associations to ensure nothing is missed.",{"title":61,"body":62},"Back up each volume to a tar archive","For each critical volume (e.g. `n8n_data`, `nextcloud_data`, `coolify_db`), export with: `docker run --rm -v n8n_data:\u002Fdata -v $(pwd):\u002Fbackup alpine tar czf \u002Fbackup\u002Fn8n_data.tar.gz -C \u002Fdata .`. Repeat for each volume. You get portable archives independent of the host file system.",{"title":64,"body":65},"Save custom images","If you have locally built images (e.g. via Coolify), export them: `docker save image-name:tag | gzip > image-name.tar.gz`. For public images (n8n, Nextcloud, Immich), a simple list is enough — they re-download from the registry.",{"title":67,"body":68},"Transfer archives to the new VPS","From your local machine or directly between the two servers (if the Oracle IP is still active): `rsync -avz --progress *.tar.gz root@vps-ip:\u002Fopt\u002Frestore\u002F`. Verify checksums: `sha256sum *.tar.gz > checksums.txt && rsync checksums.txt root@vps-ip:\u002Fopt\u002Frestore\u002F`.",{"title":70,"body":71},"Install Docker on the new VPS","On the VPS, via SSH: `curl -fsSL https:\u002F\u002Fget.docker.com | sh && systemctl enable --now docker`. Verify: `docker compose version`. Create the folder structure: `mkdir -p \u002Fopt\u002F{coolify,n8n,nextcloud,immich}`.",{"title":73,"body":74},"Restore Docker volumes","For each backed-up volume: `docker volume create n8n_data && docker run --rm -v n8n_data:\u002Fdata -v \u002Fopt\u002Frestore:\u002Fbackup alpine tar xzf \u002Fbackup\u002Fn8n_data.tar.gz -C \u002Fdata`. Verify contents: `docker run --rm -v n8n_data:\u002Fdata alpine ls -la \u002Fdata`.",{"title":76,"body":77},"Recreate docker-compose.yml files","Copy your `docker-compose.yml` files from Oracle or retrieve them from your Git repository if you version them. Adjust volume paths if needed. Launch each stack with `docker compose up -d` and check logs: `docker compose logs -f --tail=50`.",{"title":79,"body":80},"Verify everything works before DNS cutover","Test each service via the VPS IP directly (by adding a temporary entry in `\u002Fetc\u002Fhosts` on your machine): `curl -H 'Host: n8n.your-domain.com' http:\u002F\u002Fvps-ip\u002Fhealthz`. Confirm that data is present (login, workflow list, Nextcloud files, Immich albums) before touching DNS.",{"type":54,"title":82,"steps":83},"Redeploy Coolify on the new VPS",[84,87,90,93,96,99],{"title":85,"body":86},"Install Coolify","On the new VPS via SSH: `curl -fsSL https:\u002F\u002Fcdn.coollabs.io\u002Fcoolify\u002Finstall.sh | bash`. The script installs Docker, system dependencies and starts the Coolify containers. Wait for it to complete fully (around 2-3 minutes), then access `http:\u002F\u002Fvps-ip:8000`.",{"title":88,"body":89},"Create the administrator account","On first access, Coolify prompts you to create an administrator account with an email and password. This account is local and does not depend on your old instance. Use a strong password — it is the only barrier before you enable an HTTPS domain.",{"title":91,"body":92},"Configure the domain and certificates","In Coolify settings (Settings → Instance), enter your Coolify domain (e.g. `coolify.your-domain.com`) and enable automatic Let's Encrypt certificate generation. Coolify manages the Traefik proxy internally — you do not need to configure Nginx or Caddy separately.",{"title":94,"body":95},"Reconnect Git sources","Under Sources, reconnect your GitHub, GitLab or Gitea account. If you used GitHub Apps or deploy keys on the old instance, recreate them — they are tied to the Coolify instance, not the repository. Coolify shows a setup guide for each source type.",{"title":97,"body":98},"Import projects and services","Recreate your projects (Projects → New Project) and add existing services. For databases (PostgreSQL, MySQL, Redis), recreate them in Coolify and restore dumps: `docker exec -i \u003Cpostgres_container> psql -U user db \u003C dump.sql`. For applications, re-trigger a build from Git.",{"title":100,"body":101},"Check environment variables","Each migrated service needs its environment variables. In Coolify, open each service → Environment Variables and compare with your `.env` files exported from Oracle. Pay attention to hardcoded URLs that still point to the old domain or IP.",{"type":33,"title":103,"body":104},"Post-migration checkpoints","Once services are running on the VPS, the DNS cutover is the most visible step. Update the A records (and AAAA if you have IPv6) for each subdomain in your DNS zone, pointing to the new VPS IP. Thanks to the TTL reduced to 300 seconds in advance, propagation is generally effective in under ten minutes with most resolvers. Monitor the Traefik or Caddy logs for the first few hours to catch any requests still arriving at the old Oracle IP. Let's Encrypt certificates must be regenerated on the new IP: Coolify does this automatically on first start with the correct domain; for services managed manually with Caddy or Certbot, verify that the HTTP-01 challenge responds from the VPS before deleting the old instance. n8n or Nextcloud internal cron jobs survive the migration (they are in the database or configuration), but Oracle instance system crons (in `\u002Fetc\u002Fcron.d` or the root crontab) must be manually recreated on the VPS. Finally, notify third-party services that used your old Oracle IP in their allowed IP lists (Stripe webhooks, client firewall whitelists).",{"type":106,"body":107},"tip","Set up automatic Docker volume backups from day one on the new VPS. A daily cron script that exports each critical volume to object storage (Backblaze B2, S3-compatible) protects you from disk failures and accidental deletions. On a ServOrbit instance, `restic` or `borgbackup` install in a few minutes and provide encrypted incremental backups with configurable retention.",{"type":33,"title":109,"body":110},"Troubleshooting common errors","During a Docker migration, a few errors come up consistently. The first is a permission issue on restored volumes: if your container starts with a different UID than the one that created the files on Oracle, you get `permission denied` errors in the logs. Fix with `docker run --rm -v volume:\u002Fdata alpine chown -R uid:gid \u002Fdata`, replacing `uid:gid` with the one expected by the image (readable in the official Dockerfile or documentation). The second frequent error is a container that starts then stops immediately with exit code 137: that is an OOM kill. Check `dmesg | grep -i oom` and increase the RAM allocated to the service or reduce the number of workers. The third issue concerns Let's Encrypt: if the certificate does not generate, verify that port 80 is open (`ufw allow 80`) and that DNS already points to the new IP with `dig +short your-domain.com`. An A record still pointing to Oracle blocks HTTP-01 validation. Finally, if Coolify shows services as offline despite Docker containers running, check that the `coolify` Docker network is attached to each container with `docker network inspect coolify`.",{"type":112,"title":113,"headers":114,"rows":117},"comparison","Oracle Always Free ARM vs paid VPS: comparison",[5,115,116],"Oracle Always Free ARM (after 18\u002F08\u002F2026)","ServOrbit Cloud VPS",[118,122,126,130,134,138,142,146],[119,120,121],"vCPU","2 (shared, reclaimable)","Dedicated, contractually guaranteed",[123,124,125],"RAM","12 GB (reduced from 24 GB)","From 2 GB, scalable to 32+ GB",[127,128,129],"IPv4","1 public address (may be reassigned)","1 fixed dedicated IPv4 included",[131,132,133],"Bandwidth","10 TB\u002Fmonth outbound (shared regional quota)","Included monthly volume, predictable",[135,136,137],"Root access","Yes, but ports and protocols filtered","Full root, no restrictions",[139,140,141],"SLA","None on the free tier","Network availability SLA included",[143,144,145],"Unplanned reboots","Yes (Oracle maintenance, capacity reclamation)","No (live migrations, no forced shutdown)",[147,148,149],"Monthly cost","€0 (but risk of cutoff or billing if exceeded)","From 99 DH\u002Fmonth\u002Fmonth, fixed rate","Migrate your self-hosted stack to a ServOrbit Cloud VPS","A VPS starting at 99 DH\u002Fmonth\u002Fmonth with full root access, dedicated IPv4 and guaranteed resources. No third-party quota, no surprise cuts. Spin up your Docker stack, Coolify or n8n in minutes.","See Cloud VPS plans","\u002Fvps-cloud",[155,171,185],{"id":156,"slug":157,"slugs":158,"title":161,"excerpt":162,"readTime":163,"views":15,"isPinned":16,"publishedAt":164,"category":165,"categories":166,"featuredImage":25,"bgImage":26,"posterImage":168,"relatedSolution":169},41,"deploy-your-applications-with-coolify-on-a-vps",{"fr":159,"en":157,"ar":160},"deployer-avec-coolify","نشر-تطبيقاتك-باستخدام-coolify-على-vps","Deploy Your Applications with Coolify on a VPS","Deploy Coolify on a VPS: installation, HTTPS configuration, Git connection, deploying your first application, databases, backups, and troubleshooting.",10,"2026-05-10T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[167],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-coolify-poster.svg",{"categorySlug":29,"appSlug":170},"coolify",{"id":172,"slug":173,"slugs":174,"title":177,"excerpt":178,"readTime":179,"views":15,"isPinned":16,"publishedAt":180,"category":181,"categories":182,"featuredImage":25,"bgImage":26,"posterImage":184,"relatedSolution":25},229,"docker-compose-in-production-10-point-checklist",{"fr":175,"en":173,"ar":176},"docker-compose-production-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose in Production: 10-Point Checklist","10 Docker Compose settings to verify before any production deployment: restart, healthchecks, limits, secrets and logs.",14,"2026-08-06T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[183],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":186,"slug":187,"slugs":188,"title":191,"excerpt":192,"readTime":163,"views":15,"isPinned":16,"publishedAt":180,"category":193,"categories":198,"featuredImage":25,"bgImage":26,"posterImage":200,"relatedSolution":25},227,"caddy-traefik-or-nginx-proxy-manager-which-to-choose",{"fr":189,"en":187,"ar":190},"choisir-reverse-proxy-vps-caddy-traefik-nginx","caddy-أم-traefik-أم-nginx-proxy-manager-أيهما-تختار","Caddy, Traefik or Nginx Proxy Manager: which to choose?","Caddy, Traefik or Nginx Proxy Manager for your VPS? A practical comparison to choose the right reverse proxy for your Docker stack.",{"id":194,"name":195,"slug":196,"color":197,"icon":196},5,"Comparison","comparatif","bg-info\u002F10 text-info",[199],{"id":194,"name":195,"slug":196,"color":197,"icon":196},"\u002Fblog\u002Fcovers\u002Fchoisir-reverse-proxy-vps-caddy-traefik-nginx-poster.svg",1787581007979]