An AWS alternative in Saudi Arabia — for the Linux app that only ever needed a server

If your architecture diagram is a couple of instances, a database and a DNS zone, this page shows what each piece becomes on a fixed-price server in Riyadh, what has no equivalent here, and the commands to move. If your diagram has forty boxes on it, we will tell you to stay.

Start your free 14-day trial — no credit card

Riyadh servers from 99 SAR a month, excluding VAT. Prepaid in riyals, ZATCA e-invoices.

Who this is written for

A Saudi startup or software house launched on AWS because everyone does. Two years on, the product is a Laravel, Django, Rails or Node application on one to four Linux instances with a relational database. It uses perhaps six AWS services out of the hundreds available. The monthly bill is usage-based, so it differs every month, and nobody on the team can say in advance what next month will cost.

Nothing is wrong with AWS in that picture. What is wrong is the fit: a platform designed for very large, elastic systems is being used as a place to rent a few servers. If that describes you, the alternative is not another hyperscaler. It is simply a server, in the country your customers are in, at a price you know in advance.

If instead you rely on managed databases, queues, serverless functions, multiple availability zones or fine-grained IAM, read the limits section first. You will save yourself an evening.

Service by service: what it becomes

What you use on AWSOn SkylineBe aware
EC2 or Lightsail Linux instanceA Riyadh cloud server, 1 to 8 vCPU and 4 to 32 GB memorySelf-managed, root SSH. Linux images only
Security groupsCloud firewall, inbound rules per serverRules are set in the console, not as code
AMIs and EBS snapshotsNo equivalent on Riyadh servers todayUse database dumps plus an off-server copy (Skyline Backup, 300 SAR per TB a month) and rehearse a restore
Basic CloudWatch instance metricsMonitoring tab with usage chartsNo log aggregation or alerting service; run your own
Route 53 hosted zoneDNS hosting in the same consoleNo latency-based or geo routing policies
Certificate ManagerFree SSL on web hosting; on a server, use Let's Encrypt yourself—
A small site on EC2 or AmplifyWeb hosting from 49 SAR with nightly backups kept 30 daysPHP and WordPress style hosting, not a Node runtime
WorkMail mailboxesBusiness mailboxes from 17 SARMailboxes for people, not a sending API
AWS Backup for files and foldersSkyline Backup, 300 SAR per TB a monthFile-level, not bare-metal images
RDS, Aurora, DynamoDBNone. Run the database on your serverYou own upgrades, tuning and backups
S3None todayKeep the bucket, or use the server disk
SES, SQS, SNS, Lambda, ELB, Auto Scaling, EKS, IAMNoneIf these are load-bearing, stay on AWS

The server plans and their prices are listed in full on the Riyadh VPS plans page.

Sizing: memory first

Do not translate instance names; translate measurements. Open the monitoring for each instance, look at a full month, and note peak memory and sustained CPU. Then:

If the current instance has aboutStart onSAR / month
1 to 2 vCPU and up to 4 GBRiyadh 1 — 1 vCPU, 4 GB, 50 GB disk99
2 vCPU and 8 GBRiyadh 2 — 2 vCPU, 8 GB, 80 GB disk189
4 vCPU and 16 GBRiyadh 3 — 4 vCPU, 16 GB, 160 GB disk379
Between 4 and 8 vCPU, 24 GBRiyadh 6-Core — 6 vCPU, 24 GB, 240 GB disk569
8 vCPU and 32 GBRiyadh 4 — 8 vCPU, 32 GB, 320 GB disk749

Prices exclude 15% VAT. If web and database currently live on separate instances, decide whether they still need to. On a 16 GB server many applications run comfortably with both on one machine, which removes a network hop and a bill line. Note that a new account can run up to 5 servers and 32 vCPU in total; ask support if your design needs more.

The move, as a runbook

  1. Inventory what the instance really does. Running services, cron jobs, environment variables, open ports, and anything that calls an AWS API using the instance role. That last list is your "stays on AWS or needs replacing" list.
  2. Create the server with the same distribution family, add your SSH key, and write firewall rules: 22 from your office address, 80 and 443 from anywhere, nothing else.
  3. Install the stack and deploy from Git, exactly as you would on a fresh instance. Do not copy the old disk; years of drift come with it.
  4. Copy uploads and static files while the old server is still live:
    rsync -az --info=progress2 /var/www/app/storage/ deploy@NEW_SERVER:/var/www/app/storage/
  5. Take a consistent database dump and restore it.
    mysqldump --single-transaction --routines appdb | gzip > appdb.sql.gz
    or pg_dump -Fc appdb > appdb.dump, then load it on the new server and point a staging hostname at it.
  6. Test on the staging hostname with real users for a few days. Check background jobs, outbound email, payment callbacks and anything that whitelists your old IP address — Saudi payment gateways and SMS providers often do.
  7. Lower the DNS TTL to 300 seconds a day before cutover.
  8. Cut over: put the old application in maintenance mode, take a final dump, restore it, run the last rsync, change the A record, and lift maintenance mode on the new server.
  9. Schedule database dumps on the new server and set up off-server backups the same day, because Riyadh servers have no image snapshots or platform-run server backups. Skyline Backup stores dated copies in the Kingdom; a nightly dump to your retained S3 bucket also works.
  10. Stop, do not terminate, the old instances for two weeks. Then terminate and check the next AWS invoice for orphaned volumes, addresses and snapshots.

Where AWS is the right answer, and we are not

What Skyline offers in exchange is narrow and concrete: a server in Riyadh, a known price in riyals from a prepaid wallet, ZATCA Phase 2 e-invoices with VAT shown, and platform support in Arabic and English. If your interest in a Saudi location is driven by a customer contract or a regulator, read our practical guide to Saudi data residency. If you are comparing us with Microsoft rather than Amazon, the page for companies with an Azure subscription takes a different route to the same question.

Frequently asked questions

Is there an S3-compatible object storage service on Skyline?

Not today. Skyline does not currently sell object storage. If your application depends on S3, keep the bucket where it is and point the application at it from the new server, or store files on the server disk if the volume is small. We would rather say so than let you discover it mid-migration.

Do you have a managed database like RDS?

No. On Skyline you install MySQL, MariaDB or PostgreSQL on your own server and you are responsible for tuning, upgrades and backups. If a managed database is what lets your team sleep, that is a good reason to stay on AWS for the data tier.

What replaces security groups?

The cloud firewall. Inbound rules are defined per server in the console and enforced outside the machine, which is the same idea as a security group. Translate each inbound rule you have today into one firewall rule, and leave everything else closed.

Can I use Terraform or an API to create servers?

Servers are created and managed from the web console. We do not publish a Terraform provider. For teams whose whole workflow is infrastructure-as-code across dozens of resources, that is a real limitation; for a team with three servers it rarely matters.

How do I size a Skyline server against my current instance?

Match memory first, then vCPU. Find the memory and vCPU count of the current instance and its real utilisation over the last month, then pick the smallest Riyadh plan that covers the peak: 4, 8, 16, 24 or 32 GB. You can resize upward later and pay only the pro-rated difference.

Can I run Docker and docker compose on the server?

Yes. It is a normal Linux virtual machine with root access, so Docker, docker compose, systemd services or a plain Nginx and PHP-FPM stack all work. There is no managed container or Kubernetes service.

Will my AWS bill really go to zero?

Only if everything moves. Most teams that move keep a small AWS footprint for the things with no equivalent here, typically an S3 bucket and transactional email sending, and that is a sensible outcome rather than a failed migration.

What happens to transactional email sent through SES?

Keep it. Skyline Mail is a mailbox service for people, not a bulk or transactional sending API. Applications that send receipts and password resets through SES or a similar service should continue to do so after the server moves.

Try the staging half of the runbook first

Open an account without a card, build the server, restore a copy of your database and point a test hostname at it. The code SKY30 adds 50 SAR of wallet credit toward the first server. If it does not fit, you have lost an evening and learned something about your own stack.

SAR 50 free credit with code SKY30

Start your free 14-day trial

No card to start. Your wallet opens with SAR 50 of credit using code SKY30.