OpenStack Is Not as Scary as You Think
If you’re already comfortable with KVM or Proxmox, managing a handful of virtual machines (VMs) is probably second nature. But when your setup scales to dozens of VMs with complex networking (SDN) and storage requirements, you need a real orchestration platform. That’s exactly where OpenStack comes in.
A lot of people give up when they see the sprawling list of services — Nova, Keystone, Neutron. I personally run a Homelab with 12 VMs on Proxmox, but I still keep a dedicated corner for OpenStack. It’s not just a tool; it’s a completely different way of thinking about cloud infrastructure. And if you want to get started without a beefy server, DevStack is the number one choice.
Which OpenStack Deployment Method Should You Choose?
Before you type a single command, you need to pick the right path for your goals:
- Kolla-Ansible: Packages all services into Docker containers. Very powerful for production environments, but extremely RAM-hungry and difficult to debug if you’re not fluent in Ansible.
- MicroStack (Snap): Installs with a single command. However, it operates like a “black box” — deep configuration changes for learning purposes are very difficult to make.
- DevStack: The official community script suite. It installs directly onto the OS, letting you inspect every config file and view logs in real time with ease.
Why Is DevStack the Best Option for Learning?
Its biggest advantage is transparency. Want to understand how Keystone works? Just browse /etc/keystone. Want to tweak Nova’s source code? Edit it directly under /opt/stack and restart the service — done. The only real downside is that it’s ephemeral. After a reboot, some services may not come back up as smoothly as they would in a commercial deployment.
Hardware Requirements: Don’t Let Your Machine “Gasp for Air”
OpenStack is a resource-hungry beast. Don’t try to install it on a 2GB RAM VPS — the script will keep crashing.
- OS: Ubuntu 22.04 LTS (the most stable option right now).
- CPU: Minimum 2 cores. Enable Nested Virtualization if you’re installing DevStack inside another virtual machine.
- RAM: Minimum 8GB. If you want smooth operation and the ability to spin up nested VMs, aim for 16GB.
- Disk: SSD with 40GB or more to avoid I/O bottlenecks during installation.
Deploying OpenStack All-in-One: Step by Step
Step 1: Set Up the ‘stack’ User
DevStack refuses to run as root for security reasons. You need to create a dedicated user with passwordless sudo access.
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod 755 /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i
Step 2: Download the Source Code
We’ll use the stable/2023.1 branch (Antelope). This version strikes the best balance between features and stability.
git clone https://opendev.org/openstack/devstack -b stable/2023.1
cd devstack
Step 3: Configure the local.conf File
This file is the heart of the installation. local.conf defines which services will run. Don’t use the default configuration — it installs far too many components and will bog down your machine.
Create a new file:
nano local.conf
Paste the following minimal configuration (remember to change the IP address and password):
[[local|localrc]]
ADMIN_PASSWORD=YourPassword123
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
# IP address of your Ubuntu machine
HOST_IP=192.168.1.50
# Install core services only
enable_service rabbit mysql key glance horizon
enable_service n-api n-cpu n-cond n-sch n-novnc n-cauth
enable_service neutron q-svc q-agt q-dhcp q-l3 q-meta
enable_service cinder c-api c-vol c-sch
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
Step 4: Run the Installation Script
Now kick off the installation. The process typically takes 20–30 minutes depending on your SSD speed and internet connection.
./stack.sh
Note: Run this inside screen or tmux to prevent a dropped SSH connection from corrupting the entire installation.
Verifying the Result
Once complete, the terminal will display the Dashboard URL — usually http://<your-IP>/dashboard.
- Username: admin
- Password: The password you set in the config file.
Try creating a Flavor (hardware profile) and launching a CirrOS instance. The feeling of running your own Cloud cluster right at home is genuinely exciting.
Hard-Won Lessons from Using DevStack
After crashing my lab more times than I’d like to admit, here’s what I’ve learned:
1. Snapshots Are Your Safety Net
Always take a snapshot of your Ubuntu VM right before running ./stack.sh. DevStack makes deep changes to iptables and network bridges. If the installation fails, cleaning up with ./unstack.sh often doesn’t fully restore the original state.
2. Out-of-Memory Errors
If the n-cpu service reports a “failed” error, immediately check how much free RAM you have. OpenStack will automatically stop services when available memory drops below 500MB to prevent the system from hanging.
3. Managing via CLI
To use the openstack command in your terminal, you must source the environment variables first:
source openrc admin admin
openstack compute service list
Wrapping Up
DevStack is the perfect stepping stone for mastering Cloud Computing architecture. Don’t get discouraged by errors — they’re actually your best opportunity to dig into the logs under /opt/stack/logs and build a deeper understanding of the system. If you’ve experimented with virt-manager in my previous posts, OpenStack is the natural next level to sharpen your infrastructure skills.

