Image: Ubuntu (latest non-minimal)
Shape: VM.Standard.A1.Flex (or preferred configuration)
Network: Default VCN
Subnet: Default subnet
.pub
file)Name: [your-domain]-ip
Compartment: [your-compartment]
Step 1: Change to "No Public IP"
Step 2: Immediately edit again
Step 3: Select "Reserved Public IP"
Step 4: Choose your reserved IP
Configure both Network Security Group AND Security List:
Ingress Rules:
- Port 80 (HTTP)
- Port 443 (HTTPS)
Source CIDR: 0.0.0.0/0
Add DNS records at your domain registrar:
A Record:
Host: @ or domain
Value: [Your Reserved IP]
CNAME Record (optional):
Host: www
Value: [Your Domain]
# Connect to server
ssh ubuntu@[Your-IP]
# Update system
sudo apt update
sudo apt upgrade
# Create and configure directories
sudo mkdir /var/www
sudo chmod -R 775 /var/www
sudo chown -R ubuntu:ubuntu /var/www
sudo mkdir /etc/letsencrypt
sudo chmod -R 775 /etc/letsencrypt
sudo chown -R ubuntu:ubuntu /etc/letsencrypt
# Don installer requires unzip, and ubuntu no longer ships it
sudo apt install unzip
# Reload shell environment
source ~/.bashrc
# Install DohRuntime
curl -fsSL https://deploydoh.com/install | bash
# Reload shell environment to use Doh commands
source ~/.bashrc
doh install bun
# Reload shell environment to use Bun commands
source ~/.bashrc
cd /var/www
mkdir [example.com]
cd [example.com]
# Init a Doh webserver
doh init webserver
# Install global dependencies
bun install -g pm2 greenlock-cli
# Reload shell environment
source ~/.bashrc
cd /var/www/[example.com]
# Install Greenlock CLI Doh Module
doh install greenlockcli
# Update Doh again
doh update
Add the following to your pod.yaml:
letsencrypt:
email: [youremail@example.com]
subdomains:
- www
express_config:
port: 80
ssl_port: 443
hostname: [example.com]
# Configure firewall
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
# Set environment permissions
sudo setcap 'cap_net_bind_service=+ep' $(which node)
sudo setcap 'cap_net_bind_service=+ep' $(which bun)
sudo setcap 'cap_net_bind_service=+ep' $(which doh)
# Reload shell environment
source ~/.bashrc
# Update Doh configuration
doh update
# Force SSL certificate generation
doh force-greenlock
# Start Doh server
doh run
# Set up PM2 process management
doh pm2
# Follow PM2 startup configuration instructions
# This typically involves running the suggested pm2 startup command
Certificate Issues:
Permission Problems:
Network Issues: