Deploy a Web Server on OCI
Deploy an Always Free Apache server on OCI and troubleshoot public HTTP access.
Introduction
30 Second Summary
A web page can work perfectly on its own server while every visitor still sees a timeout. Finding the blocked doorway turns a frustrating blank page into a useful clue.
In this project, you will deploy an Always Free Oracle Linux 8 web server on Oracle Cloud Infrastructure (OCI). You will trace a planned timeout across OCI networking plus a Linux firewall before publishing a status page that you can monitor.
What You'll Build
Your instance's public IP address opens a custom OCI Learning Lab page in Microsoft Edge once Apache traffic crosses both firewall layers.
By the end of this project, you'll have:
- A public status page that displays OCI Learning Lab is online after you resolve the planned timeout.
- A repeatable SSH administration workflow from Windows PowerShell for testing Apache directly on Oracle Linux.
- A monitoring view that connects browser requests to activity from your running instance.
- Secret Mission: Attach a separate 50 GB Block Volume and prove that Oracle Linux can see it as detachable storage.
Are there any prerequisites?
You need an OCI account with administrator access, a Windows computer, a browser, plus a phone for account authentication. Basic cloud knowledge is enough because Step 1 verifies Windows OpenSSH Client before the first connection.
Before We Start
This opening checkpoint locks in the public Oracle Cloud Infrastructure status page you are about to build with Apache HTTP Server. The planned HTTP block gives you a concrete connectivity failure to trace through each layer.
Set Up Your OCI Lab
Your web server needs clear boundaries before it is safe to launch. An isolated lab keeps later networking changes away from unrelated cloud resources.
Always Free compute resources must live in your tenancy home region. Reviewing the limits page first protects the project's cost boundary.
You will verify Windows OpenSSH Client before the server needs it. You will also create a compartment inside Oracle Cloud Infrastructure with its own internet-connected network.
In this step, get ready to:
- Confirm your tenancy home region and review your current service limits.
- Verify that Windows OpenSSH Client is installed.
- Create the `oci-web-lab` compartment and the `oci-web-vcn` network.
Confirm your home region and limits
Your tenancy home region determines where its Always Free regional resources are eligible. The limits page shows whether your tenancy has room for the compute and storage used later.
- Sign in to the OCI Console with your administrator account.
- Complete the phone authentication prompt if one appears.
- Open the Region menu in the Console header.
- Select Manage Regions.
- Identify the region carrying the home region label.
- Switch the Console to that region.
The Console header now shows your tenancy home region.
- Open the Console navigation menu.
- Select Governance & Administration.
- Select Limits, Quotas and Usage under Tenancy Management.
- Review your current Compute usage.
- Review your current Block Volume usage.
You should see enough available capacity for this lab's Always Free compute and storage resources.
Why does the home region matter?
Always Free compute instances and Block Volume resources must be created in the tenancy home region. Keeping the Console in this region prevents you from accidentally building the lab outside that eligibility boundary.
Verify Windows OpenSSH Client
Windows PowerShell runs the capability check for your computer. Windows OpenSSH Client later creates an encrypted SSH connection between PowerShell and the Oracle Linux server.
- Press the Windows key to open Windows search.
- Type Windows PowerShell.
- Press Enter to open Windows PowerShell.
- Check the available OpenSSH capabilities by running this command:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
What does this check show?
The command lists Windows OpenSSH capabilities with their current states. Find the line for OpenSSH.Client to decide which tab matches your computer.
✔️ OpenSSH.Client reports Installed
Windows OpenSSH Client is ready. Keep this PowerShell window available for the final check.
ⓧ OpenSSH.Client reports NotPresent
The client capability exists on your computer but still needs to be installed. This action requires an elevated PowerShell window.
- Press the Windows key to open Windows search.
- Type Windows PowerShell.
- Use the administrator option shown with Windows PowerShell.
- Approve the Windows permission prompt.
- Install Windows OpenSSH Client by running this command:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
What does this command do?
The command adds the in-box OpenSSH Client capability to Windows. Administrator access allows Windows to change this system feature.
- Repeat the capability check by running this command:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
What does the second check prove?
The repeated check confirms that the installation changed the client state. The OpenSSH.Client line should now report Installed.
You should now see OpenSSH.Client with the state Installed.
OpenSSH Client still not installed?
- Confirm that the installation command ran in a PowerShell window with administrator access.
- Check that your Windows installation supports the in-box OpenSSH feature.
- Use the exact capability name shown in the installation command.
- Help me troubleshoot Windows OpenSSH Client installation.
Create your compartment and VCN
A compartment gives the lab an isolated administrative boundary. A Virtual Cloud Network provides the network where your server will run.
- Switch back to the OCI Console in your tenancy home region.
- Open the Console navigation menu.
- Select Identity & Security.
- Select Compartments.
- Select Create Compartment.
- Enter oci-web-lab as the compartment name.
- Describe the compartment as the home for your OCI web server lab.
- Select Create Compartment.
Good progress. The oci-web-lab compartment now gives every resource in this project a clear home.
- Open the Console navigation menu.
- Open the Virtual Cloud Networks page.
- Select oci-web-lab in the compartment filter.
- Select Start VCN Wizard.
- Choose Create VCN with Internet Connectivity.
- Enter oci-web-vcn as the VCN name.
- Keep the wizard's default IPv4 CIDR values.
- Create the VCN from the wizard's review screen.
What did the wizard create?
- The VCN uses 10.0.0.0/16 as its default address range.
- The public subnet uses 10.0.0.0/24 for resources that can use internet routing.
- The private subnet uses 10.0.1.0/24 for resources without direct public access.
- An internet gateway provides a path between the VCN and the public internet.
- Route tables direct traffic through the correct gateway.
- Default security lists control traffic at the subnet layer.
Before you inspect the VCN details, which network components do you expect the wizard to have created?
- Open oci-web-vcn from the Virtual Cloud Networks page.
- Confirm that a public subnet is listed.
- Confirm that a private subnet is listed.
- Confirm that an internet gateway is listed.
- Confirm that route tables are listed.
- Confirm that default security lists are listed.
You should see both subnets with the wizard's default IPv4 CIDR values. You should also see the internet connectivity components created for oci-web-vcn.
- Switch back to Windows PowerShell.
Before you run the final capability check, what state do you expect Windows OpenSSH Client to report?
- Verify the Windows OpenSSH Client state by running this command:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
What does the final check confirm?
This check proves that Windows can provide the SSH client needed to administer the server in the next step. The OpenSSH.Client line should report Installed.
Your VCN details show the public and private subnets. Windows PowerShell confirms that OpenSSH Client is installed.
✔️ Awesome, I've got everything!
Your tenancy home region is selected. Your OCI network boundary and Windows SSH client are ready.
ⓧ I'd like to double check the setup
Compare your lab with these exact end states.
- Compartment: oci-web-lab. Created in the tenancy home region.
- VCN: oci-web-vcn. Created in compartment 'oci-web-lab' with default IPv4 CIDR values, public and private subnets, internet gateway, route tables, and default security lists from Create VCN with Internet Connectivity.
- Windows OpenSSH Client: Installed and verified from Windows PowerShell with Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'.
Your OCI boundaries and SSH access are ready. Next, you will launch the server and prove that Apache works from inside the instance.
Launch the Server and Find the Blocker
Your Oracle Cloud Infrastructure lab now has an isolated compartment and an internet-connected Virtual Cloud Network.
In this step, you launch an Oracle Linux server in the public subnet. You connect through SSH before installing Apache HTTP Server.
A local HTTP check proves that Apache works inside the instance. A browser check then reveals the remaining blocker on the public network path.
In this step, get ready to:
- Launch an Always Free Oracle Linux compute instance in the existing public subnet.
- Secure the generated private key before connecting from Windows PowerShell.
- Install Apache before comparing local access with public browser access.
Launch the Oracle Linux instance
A compute instance supplies the processor and memory that run your web server. Placing it in the existing public subnet gives it a route toward the internet.
- Return to the OCI Console from earlier.
- Open the navigation menu.
- Select Compute.
- Select Instances.
- Choose oci-web-lab in the compartment selector.
- Select Create instance.
What Does a Compute Shape Control?
A compute shape defines the processor architecture and available memory for an instance. A flexible shape also lets you choose the OCPU count and memory allocation.
- Enter oci-web-01 in the Name field.
- Confirm that the selected compartment is oci-web-lab.
- Select Change image in the image section.
- Choose Oracle Linux 8.
- Select Select image.
Why Oracle Linux 8?
Oracle Linux 8 provides the repository-supported httpd package used in this project. Its service tools also let you start Apache at boot.
- Select Change shape.
- Choose the Always Free Eligible VM.Standard.A1.Flex shape.
- Set the OCPU count to 1.
- Set the memory to 6 GB.
- Select oci-web-vcn as the virtual cloud network.
- Select the existing public subnet.
- Enable Assign a public IPv4 address.
Keep the Free Boundary
The shape must display Always Free Eligible before you continue. A shape without that label sits outside this project's cost boundary.
The private key controls administrative access to the server. You download it once before locking its Windows permissions to your account.
- Select Generate a key pair for me in the Add SSH keys section.
- Select Save Private Key.
- Select Save Public Key.
- Record the full path to the downloaded private key here: <private_key_file>.
- Select Create instance.
Provisioning often takes several minutes while OCI allocates the instance.
- Wait for the lifecycle state to show Running.
Seeing a Capacity Error?
- Choose another availability domain if OCI reports out of host capacity.
- Retry the Always Free Eligible VM.Standard.A1.Flex shape.
- Choose the Always Free Eligible VM.Standard.E2.1.Micro shape if A1 capacity remains unavailable.
- Wait before retrying if no Always Free shape currently has capacity.
- Do not substitute a shape that lacks the Always Free Eligible label.
- Ask for help with an unavailable Always Free shape.
- Locate Public access IP address on the instance details page.
- Record the assigned address here: <public-ip-address>.
Your first cloud server is running. Its public IPv4 address now gives you a stable target for SSH administration and browser testing.
Secure the key and connect with SSH
The private key proves that you are allowed to administer oci-web-01. Restricting its file permissions prevents other Windows accounts from using that credential.
- Press the Windows key to open the search bar.
- Type Windows Explorer and press Enter.
- Locate the downloaded private key in your Downloads folder.
- Right-click the private key file.
- Select Properties.
- Select the Security tab.
- Select Advanced.
Why Restrict the Key?
Windows OpenSSH checks whether other accounts can access a private key. Restrictive permissions protect the credential before the SSH client uses it.
- Confirm that your Windows account appears under Permission entries.
- Select Disable Inheritance.
- Select Convert inherited permissions into explicit permissions on this object.
- Remove every permission entry except your Windows account.
- Confirm that your Windows account has Full control.
- Save the permission changes.
The first SSH connection asks you to accept the server's host fingerprint. This saves the server identity so future connections can detect an unexpected change.
- Return to Windows PowerShell from earlier.
- Replace the private key placeholder in the command below with <private_key_file>.
- Replace the public IP placeholder with <public-ip-address>.
- Connect to the instance by running the completed command:
ssh -i <private_key_file> opc@<public-ip-address>
What Does This Command Do?
- The ssh command starts an encrypted remote shell.
- The -i option identifies the private key used for authentication.
- The opc username selects the default administrative account for Oracle Linux.
- The public IPv4 address identifies your compute instance on the internet.
- Type yes when PowerShell asks you to accept the host fingerprint.
- Press Enter.
You should see an Oracle Linux shell prompt for opc. That prompt proves the public SSH path and private key both work.
SSH Connection Not Opening?
- Check that the private key path points to the file you downloaded for oci-web-01.
- Confirm that only your Windows account remains in the private key permission entries.
- Confirm that the command uses the public IPv4 address from the instance details page.
- Ask for help with the SSH connection.
Install Apache and expose the blocker
Testing Apache from inside the instance isolates the web server from the public network path. A successful local response proves the application is ready before the browser tests external access.
- Install Apache from the Oracle Linux repository by running this command:
sudo dnf install httpd
What Does This Command Do?
The dnf package manager downloads the httpd package from the enabled Oracle Linux repositories. The package provides Apache and its required dependencies.
- Confirm the package changes if the installer asks for approval.
- Let the installation finish before entering another command.
The installation completes with Apache available on the instance.
Apache Installation Not Completing?
- Confirm that your prompt still belongs to the opc account on oci-web-01.
- Retry the command after confirming the instance still has internet connectivity through its public subnet.
- Ask for help with the Apache installation.
- Start Apache now and enable it after reboot by running this command:
sudo systemctl enable --now httpd.service
What Does This Command Do?
- The enable action configures httpd.service to start after a reboot.
- The --now option starts the service during the same command.
Apache is now enabled and running as httpd.service.
Apache Service Not Starting?
- Confirm that the Apache installation completed before you started the service.
- Check that the service name in your command is httpd.service.
- Ask for help with the Apache service.
Before you test locally, what response do you expect from a web request that never leaves the instance?
- Test Apache from inside the instance by running this command:
curl http://localhost/
What Does This Command Test?
The localhost address sends the request directly back to the same instance. This check reaches Apache without relying on the public browser path.
You should see the Apache test page returned in the SSH session. You have proved that the web server works inside oci-web-01.
Before you try the public address, do you think the browser request reaches the same working Apache service?
- Press the Windows key to open the search bar.
- Type Microsoft Edge and press Enter.
- Enter http://<public-ip-address> in the address bar.
- Press Enter.
Microsoft Edge does not load the Apache page. The local success proves Apache is healthy while the failed public request exposes a block elsewhere on the inbound path.
This Failure Is the Evidence
The browser request starts outside the instance and crosses more controls than the local request. Comparing the two results narrows the problem to traffic that has not reached Apache.
Your server is running and Apache responds locally. Next, you will trace the public request through both firewall layers until the same page loads in Microsoft Edge.
Open Both Firewall Layers
Your Apache HTTP Server already answers inside oci-web-01. The local result proves the web service is healthy.
The public request still crosses network controls before it reaches Apache. In this step, you will test each control separately until the page loads from Microsoft Edge.
In this step, get ready to:
- Add a stateful HTTP ingress rule to the public subnet.
- Retest the public page after the subnet change.
- Allow HTTP inside the instance so the Apache test page becomes public.
Allow HTTP at the subnet boundary
A security list in Oracle Cloud Infrastructure acts as a virtual firewall at the subnet boundary. Its ingress rules decide which new requests can enter the public subnet.
Opening a public rule can feel exposed. This rule limits the destination to HTTP on port 80.
The CIDR value 0.0.0.0/0 represents every IPv4 source address.
- Switch back to the OCI Console from earlier.
- In the Console, return to the oci-web-vcn details page in oci-web-lab.
- Select the public subnet created earlier.
- Open the public subnet's default security list.
You are now editing the network boundary used by oci-web-01.
- Create one stateful ingress rule.
- Set Source Type to CIDR.
- Enter 0.0.0.0/0 in Source CIDR.
The draft rule now accepts connection attempts from any IPv4 source.
- Select TCP for IP Protocol.
- Leave the source port range empty.
The draft now targets TCP without restricting the client's temporary source port.
- Enter 80 in Destination Port Range.
- Save the ingress rule.
You should see a new stateful TCP ingress rule with source 0.0.0.0/0 and destination port 80.
What Did This Rule Change?
- The security list filters traffic at the public subnet boundary.
- The 0.0.0.0/0 source allows any IPv4 address to attempt a connection.
- The TCP protocol with destination port 80 limits the rule to standard HTTP traffic.
Test the subnet change
Changing one boundary gives you a controlled test. The result shows whether the subnet rule was the only blocker.
Before you refresh the page, do you think the new subnet rule is enough for Apache to answer?
- Switch back to the Microsoft Edge tab that contains the instance URL from the previous step.
- Refresh the page.
The page still does not load. This is the intended result from testing only the OCI layer.
What Did This Failed Test Prove?
The security list now admits TCP requests for destination port 80. Oracle Linux still does not permit HTTP traffic through its host firewall.
Permit HTTP inside Oracle Linux
A host firewall filters traffic inside the operating system. Oracle Linux uses firewalld to decide which services the instance accepts after OCI lets packets reach it.
- Switch back to the Windows PowerShell SSH session from earlier.
- Apply a permanent HTTP allowance by running these commands:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
What Do These Commands Do?
- The sudo firewall-cmd --add-service=http --permanent command adds the http service to the permanent firewalld configuration.
- The sudo firewall-cmd --reload command activates the saved configuration.
Before you refresh again, do you expect the request to cross both controls now?
- Return to the Microsoft Edge tab from earlier.
- Refresh the instance URL.
You should see the Apache test page load from the public IPv4 address.
That is the hard part solved. Public requests now pass both firewall layers.
Page Still Timing Out?
- Confirm the security-list rule shows source 0.0.0.0/0.
- Confirm the same rule shows destination port 80.
- Run the two firewall commands above again if your SSH session reported a failure.
- Help me trace why my OCI Apache page still times out.
How Do the Layers Divide Responsibility?
The OCI security list controls traffic allowed to enter the public subnet.
The Oracle Linux host firewall controls traffic accepted by the instance. Apache can answer only after both layers permit HTTP.
Your Apache test page is publicly reachable through both firewall layers. Next, you will replace it with your own OCI learning status page.
Publish Your OCI Status Page
Your two firewall layers now pass public traffic to oci-web-01. The Apache HTTP Server test page proves the request path works.
The generic page cannot show what your lab has achieved. A custom Oracle Cloud Infrastructure status page turns the working infrastructure into something you can demonstrate.
In this step, get ready to:
- Replace the Apache test page with your custom status page.
- Restart Apache and prove the new page works locally.
- Confirm the status page is publicly reachable in your browser.
Replace the Apache test page
An HTML document provides the page content. Its embedded CSS turns that content into a centered status card.
Why this file location?
Apache serves website files from /var/www/html/ by default. The index.html file becomes the page returned from the instance's base URL.
- Switch back to the existing Windows PowerShell SSH session connected to oci-web-01.
- Use sudo with vi to open /var/www/html/index.html.
- Remove any existing content if the file contains text.
- Press i to enter insert mode.
- Replace the file contents with the complete code shown in the double-check tab below.
✔️ Awesome, I've got everything!
Your editor should now contain the complete status page shown in the comparison tab.
ⓧ I'd like to double check the full code
Compare every line in /var/www/html/index.html with this complete file.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OCI Learning Lab</title>
<style>
:root {
color-scheme: dark;
font-family: Arial, sans-serif;
background: #111827;
color: #f9fafb;
}
body {
min-height: 100vh;
margin: 0;
display: grid;
place-items: center;
background: linear-gradient(135deg, #111827, #312e81);
}
.card {
width: min(680px, calc(100% - 48px));
padding: 40px;
border: 1px solid #475569;
border-radius: 18px;
background: rgba(15, 23, 42, 0.92);
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
}
.eyebrow {
margin: 0 0 10px;
color: #f97316;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
h1 {
margin: 0 0 14px;
font-size: clamp(2rem, 6vw, 3.5rem);
}
.status {
display: inline-block;
margin: 10px 0 24px;
padding: 8px 12px;
border-radius: 999px;
background: #14532d;
color: #dcfce7;
font-weight: 700;
}
li {
margin: 10px 0;
}
</style>
</head>
<body>
<main class="card">
<p class="eyebrow">Oracle Cloud Infrastructure</p>
<h1>OCI Learning Lab is online</h1>
<p class="status">Status: HTTP requests are reaching Apache</p>
<p>This page proves that the lab's compute, networking, SSH access, and firewall layers are working together.</p>
<ul>
<li>Oracle Linux compute instance is running</li>
<li>Public subnet routing is active</li>
<li>OCI ingress permits HTTP</li>
<li>Oracle Linux permits the Apache service</li>
</ul>
</main>
</body>
</html>
How is the page structured?
- The page elements define the heading, status message, explanation, and infrastructure checklist.
- The :root and body selectors establish the page theme and centered layout.
- The .card, .eyebrow, and .status selectors create the visible status card.
- Press Esc to return to command mode.
- Enter :wq to save /var/www/html/index.html and exit vi.
Keep Track of vi Modes
Mode switching in vi is genuinely fiddly at first. The editor starts in command mode.
- Use i to enter insert mode.
- Use Esc to return to command mode.
- Use :wq to write the file and quit.
Prove Apache serves the new file
Saving the file changes the content on disk. Restarting Apache gives you a clean checkpoint before testing the public path.
Before you run the local check, do you expect curl to return the generic test page or your new heading?
- Restart Apache and test the local page by running these commands:
sudo systemctl restart httpd
curl http://localhost/
What Do These Commands Prove?
- The first command restarts the Apache service after your file change.
- The second command requests the page from inside oci-web-01.
- A response containing OCI Learning Lab is online proves Apache is serving your custom file.
You will see the page source in the terminal. Look for OCI Learning Lab is online and Status: HTTP requests are reaching Apache in the response.
You have cleared the local checkpoint: Apache now serves your status page from disk.
Still Seeing the Test Page?
- Confirm that you saved the file as /var/www/html/index.html.
- Check that the first line starts with <!doctype html>.
- Compare the file against the complete-code tab for missing closing tags.
- Help me troubleshoot why Apache still serves its test page.
Verify the public result
The local response proves the application layer works. A browser request proves the public networking path still reaches that same file.
Before you refresh, do you expect the new page to load without changing either firewall rule?
- Switch back to the existing Microsoft Edge tab at http://<public-ip-address>.
- Refresh the public page.
You will see the heading OCI Learning Lab is online. The green status message and four-item infrastructure checklist will also be visible.
The browser tab reads OCI Learning Lab.
That is the payoff: your own OCI status page is live from the instance's public IP address.
Public Page Not Updating?
- Confirm that the browser still uses the public IP address assigned to oci-web-01.
- Refresh the page again to replace any cached copy of the test page.
- Check the local curl response to confirm the custom file remains available on the instance.
- Help me troubleshoot why the custom page works locally but does not update publicly.
Your custom status page is now live through the same network path you troubleshot. Next up, you will generate activity and inspect the instance's monitoring data.
Observe the Running Workload
Your custom status page now responds through Oracle Cloud Infrastructure. Its successful HTTP response proves that requests can reach Apache through both firewall layers.
A live page confirms that the service works. Metrics reveal activity from the running workload.
You will inspect the instance charts after generating browser traffic. You will also confirm that the lab remains within its Always Free boundary.
In this step, get ready to:
- Generate activity by refreshing your public status page.
- Inspect the available metric charts for the running instance.
- Confirm that the lab remains within available Always Free resources.
Generate activity from the live page
Monitoring charts need recent workload activity. Each browser refresh sends another request to your running web server.
- Switch back to Microsoft Edge.
- Return to http://<public-ip-address>.
- Refresh the public status page several times.
Good, your public page is now generating the activity you are about to inspect.
- Switch back to the signed-in OCI Console from earlier.
- Open the oci-web-01 instance details page in compartment oci-web-lab.
The instance details page places operational information beside the compute configuration. This connects the server you launched with the activity it records.
Inspect the instance metrics
Instance metrics turn workload behavior into charted measurements. The recent browser requests give you activity to compare with those charts.
- Select the Monitoring tab on the instance details page.
- Select the Metrics view.
- Review the available charts for the running instance.
- Compare the recent chart timestamps with the page refreshes you generated.
You should see at least one metric chart for the running instance. This confirms that OCI provides an operational view of your workload.
The oci_computeagent namespace supplies instance activity and throughput metrics. These signals help you review workload behavior over time.
No Recent Data in the Charts?
- Load http://<public-ip-address> several more times in Microsoft Edge.
- Refresh the Metrics view.
- Confirm that oci-web-01 still shows a running state on its instance details page.
- Help me troubleshoot missing OCI instance metrics.
Confirm your Always Free usage
Always Free eligibility depends on the resource type plus the tenancy home region. The usage page shows whether your current allocations remain inside that boundary.
Before you open the usage page, do you expect the compute and boot-volume allocations to fit within the available Always Free resources?
- Open the OCI Console navigation menu.
- Select Governance & Administration.
- Find Tenancy Management.
- Select Limits, Quotas and Usage.
- Confirm that the page is showing your tenancy home region.
- Review the compute allocation against the available Always Free resources.
- Review the boot-volume allocation against the available Always Free resources.
You should see the compute allocation within the available Always Free resources. You should also see the boot-volume allocation within the available Always Free resources.
That's the operational loop complete. Your live workload has visible activity within its Always Free boundary.
Secret mission
Attach Detachable Block Storage
Create a separate 50 GB Block Volume for oci-web-01. Attach it as detachable storage. Prove Oracle Linux can see the untouched disk.
Clean Up Your Resources
Clean Up Your Resources
Choose whether to keep your lab available, pause its compute activity, or delete every cloud resource. This lab costs $0 only while its resources remain Always Free eligible in your tenancy home region.
Cost warning
Your Oracle Cloud Infrastructure resources stay at $0 only while they remain eligible for Always Free in the tenancy home region.
A stopped or terminated instance can still leave storage resources behind. Delete is the clearest option when you do not plan to return.
Resources you used:
- The oci-web-01 Compute instance with its boot volume, assigned public IPv4 address, Apache HTTP Server files, and Oracle Linux firewall configuration.
- The 50 GB Block Volume attached to oci-web-01.
- The oci-web-vcn Virtual Cloud Network with its public subnet, private subnet, internet gateway, route tables, security lists, and TCP port 80 ingress rule.
- The oci-web-lab compartment containing the lab resources.
Keep everything running
No action is needed. Choose this if you want your status page to remain available for demonstrations or further practice.
- Your custom status page remains available at http://<public-ip-address>.
- The oci-web-01 instance keeps its boot volume and attached 50 GB Block Volume.
- Oracle may reclaim an Always Free compute instance after an extended period of low activity.
- Return to Limits, Quotas and Usage periodically to confirm that the lab remains within your Always Free allowances.
Pause - I'll come back to this later
Stopping the instance pauses its compute activity. Your boot volume and 50 GB Block Volume remain in OCI for your return.
- Return to the oci-web-01 instance details page in oci-web-lab.
- Open the Actions menu.
- Select Stop.
- Approve the stop if the Console requests confirmation.
- Confirm that the instance no longer shows as running.
- Refresh http://<public-ip-address> to confirm that the paused server no longer serves the status page.
Delete - I don't want to use this again
Deleting a cloud lab can feel drastic. Your completed checks already prove that the setup works.
Remove the detachable Block Volume:
- Return to the Storage area for oci-web-01.
- Select the attachment for the 50 GB Block Volume.
- Choose Detach.
- Approve the detachment if the Console requests confirmation.
- Wait until the attachment no longer shows ATTACHED.
- Return to the 50 GB Block Volume details page in oci-web-lab.
- Open its Actions menu.
- Select Terminate.
- Approve the termination if the Console requests confirmation.
- Confirm that the 50 GB Block Volume no longer appears in the compartment.
Terminate the Compute instance:
- Return to the oci-web-01 instance details page.
- Open the Actions menu.
- Select Terminate.
- Select Permanently delete the attached boot volume.
- Approve the termination after confirming that the dialog names oci-web-01.
- Confirm that oci-web-01 has been terminated.
Remove the VCN and its network resources:
- Return to the oci-web-vcn details page.
- Open the VCN Actions menu.
- Select Terminate.
- Select Terminate All to remove the VCN resources.
- Wait for the Console to finish removing the underlying network resources.
- Confirm that oci-web-vcn no longer appears in oci-web-lab.
Delete the empty compartment:
- Select Identity & Security from the OCI navigation menu.
- Select Compartments.
- Open oci-web-lab.
- Select Delete Compartment.
- Approve the deletion after confirming that the compartment is empty.
Compartment Still Contains Resources?
A compartment must be empty before its deletion can complete.
- Return to oci-web-lab to identify any remaining Compute, Block Volume, or VCN resource.
Help me identify which OCI resource is preventing this compartment from being deleted.
Nice Work!
Nice Work!
Excellent work! You built a public status page on Oracle Cloud Infrastructure.
You've learned how to:
- Created an isolated compartment named oci-web-lab. Built the internet-connected Virtual Cloud Network named oci-web-vcn with public plus private subnets.
- Launched an Always Free Oracle Linux 8 compute instance. Managed the server from Windows PowerShell through SSH. Proved Apache HTTP Server worked locally. Traced a blocked public HTTP request through the OCI security list plus the host firewall.
- Published the custom status page at the instance's public IPv4 address. Connected browser requests to instance metrics. Confirmed the lab remained within its available Always Free resources.
- Secret Mission: Attached a separate 50 GB Block Volume to oci-web-01. Verified the additional disk from Oracle Linux without formatting it.
Ready to quiz yourself?