Practical and cost-effective setup with Oracle Cloud / HEXACATS Lab
Introduction
Publishing a domain can be straightforward, but there are important details to consider. To build a website that performs well and remains online, you need to plan ahead: how will it scale if necessary? How do you ensure security from the start?
This guide demonstrates how to create a functional environment for your domain with minimal costs. The setup is based on a personal lab environment, suitable for small projects or learning. If your site has specific objectives or expects higher traffic, you will need to scale and monitor accordingly.
๐ Want every command and screenshot? This post is a summary. The complete step-by-step guide lives on Sudo Docs: How to Publish Your Own Domain. Each step below links to its full chapter.
Cost Comparison – Hosting and Load Balancer
| Provider | Description | VM Shape | Load Balancer | DNS Service | Estimated Cost |
|---|---|---|---|---|---|
| DuckDNS | Always Free with DuckDNS + OCI | VM.Standard.E2.1.Micro(1 OCPU, 1GB RAM) |
Network Load Balancer (Free) | Oracle DNS (Paid) + DuckDNS (Free) | ~1.85 USD/month + Oracle DNS |
| Hostinger | Hosting with manual DNS | VM.Standard.A1.Flex |
Network LB (Free) | Oracle DNS (Paid) + Hostinger (Paid) | ~1.85 USD/month + costs |
| GoDaddy | External custom DNS | VM.Standard.A1.Flex |
Network LB (Free) | Oracle DNS (Paid) + GoDaddy (Paid) | ~1.85 USD/month + costs |
Important Notes
- Network Load Balancer: Always free
- Flexible Load Balancer: Free up to 744 hours/month with 10 Mbps bandwidth
- VM.Standard.E2.1.Micro: Part of Always Free tier, but boot volume (approximately 1.85 USD per month) has associated costs
- Oracle DNS: Cost per managed DNS zone
- DuckDNS: Free dynamic DNS, suitable for personal use
Prerequisites
- A registered domain (Cloudflare, Namecheap, GoDaddy, etc.)
- A server or hosting service
- Basic understanding of DNS concepts
๐ Full chapter: Chapter 3: Requirements
DNS: Essential Concepts
The Domain Name System (DNS) functions as the internet’s directory. It translates domain names like yourdomain.com into IP addresses like 203.0.113.42.
- A Record: Points your domain directly to an IP address. Essential for any setup.
- CNAME Record: Points your domain to another domain name. Useful for platforms like GitHub Pages.
- AAAA Record: Similar to A Record, but for IPv6 addresses. Important for future compatibility.
Important: Always configure at least one A Record, even if you also use CNAMEs.
Step by Step: Publishing Your Domain
1. Choosing Your Provider
Go to where you registered your domain and look for DNS Settings or Manage DNS.
๐ Full chapters:
- Chapter 2: Choosing Your Domain Provider
- Chapter 5 Example: Using a Domain from GoDaddy
- Chapter 6 Example: Using a Domain from DuckDNS (Free)
- Chapter 7 Example: Using a Domain from Hostinger
2. Creating a DNS Zone in Oracle OCI
Configure a DNS zone in Oracle Cloud to manage your DNS records.
๐ Full chapter: Chapter 4: Creating a DNS Zone in Oracle OCI
3. DNS Propagation
Wait for DNS record propagation, which can take between 24 to 48 hours.
๐ Full chapter: Chapter 8: Waiting for DNS Propagation
4. Creating a Debian Image on Oracle Cloud
For those who prefer Debian, create a custom image on OCI with your preferred operating system.
๐ Full chapter: Chapter 9: Creating a Debian Image on Oracle Cloud (OCI)
5. Free Tier Instance (AMD Shape)
Use Oracle Cloud’s always-free instances with AMD processors to reduce costs.
๐ Full chapter: Chapter 10: Launch a Free Tier Instance (AMD Shape, Always Free)
6. Free Tier Instance (ARM Shape)
Alternative using ARM processors, more economical for light workloads.
๐ Full chapter: Chapter 11: Launch a Free Tier Instance (ARM Shape, Always Free)
7. Installing Certbot and Generating SSL Certificate
Install an SSL certificate to secure your website communications.
Important: HTTPS is essential for security. Certbot automates the renewal of Let’s Encrypt certificates.
๐ Full chapter: Chapter 12: Installing Certbot & Generating SSL Certificate
8. Installing Docker and MariaDB
Configure Docker to manage containers and MariaDB for your database.
๐ Full chapter: Chapter 13: Installing Docker and MariaDB
9. Deploying Ghost (Blogging Platform)
Configure Ghost using Docker Compose to manage your blogging platform.
๐ Full chapters:
- Chapter 14: Installing Docker & Deploying Ghost (AMD, Debian)
- Chapter 15: Creating the Ghost Project with Docker Compose
10. Choosing the Right Load Balancer
Oracle Cloud offers two main types:
- Load Balancer (LB): Layer 7 (application), with SSL termination and URL-based routing
- Network Load Balancer (NLB): Layer 4 (transport), high performance, low latency
Recommendation: For simple websites, Network Load Balancer is sufficient and offers simpler configuration with better performance.
๐ Full chapters:
- Chapter 16: Publishing Through Oracle Cloud Load Balancer
- Chapter 17: Publishing Through Oracle Cloud Network Load Balancer
11. Nginx Proxy Manager with Network Load Balancer
Configure Nginx Proxy Manager to manage multiple domains and SSL certificates.
๐ Full chapter: Chapter 18: Using Nginx Proxy Manager with a Network Load Balancer
About the Authors
Manolo: Contributor to the development of this documentation and quality testing.
Josi: Responsible for implementation and practical validation of all procedures.
Domain Publishing Guide v1.0 ยท HEXACATS Lab / Documentation and Deployment Guide ยท Oracle Cloud Infrastructure / Linux / Docker / Database
