Skip to main content

Oracle VirtualBox

VirtualBox imports the OVA as an appliance. It does not show the OVA's properties for an SSH key, so you give the machine your key on a seed ISO, attached before the first start.

Before you start​

  • VirtualBox 7.2 or later, on a host with an Intel or AMD processor. Apple Silicon Macs cannot run the amd64 image.
  • Room for the machine: 2 vCPU, 4 GB of memory or more, and 40 GB or more of disk, as Hardware describes. The OVA asks for 2 CPUs and 4096 MB.
  • A network the machine can reach the internet from: your LAN, with its DHCP.
  • Your SSH public key: the one line in the .pub file, such as ~/.ssh/id_ed25519.pub.
  • The file: the OVA, antelao-ohm-<version>-amd64.ova.

Download​

Download the OVA from the table on the overview page, then check it before you import it. Run this in the folder you downloaded it to:

curl -fsSLO https://packages.antelao.io/raw/cosign.pub
sha256sum cosign.pub
curl -fsSLO https://images.antelao.io/ohm/stable/0.23.0/SHA256SUMS
curl -fsSLO https://images.antelao.io/ohm/stable/0.23.0/SHA256SUMS.sig
cosign verify-blob --key cosign.pub --signature SHA256SUMS.sig \
--insecure-ignore-tlog=true SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS

Verify the download says what must come out right, and how to check on Windows or a Mac.

Import​

  1. File > Import Appliance. Source: Local File System, and choose the OVA.

  2. Open Settings to check what VirtualBox makes of it: the name antelao-ohm, the product, Debian (64-bit), 2 CPUs and 4096 MB of memory. Choose the Machine Base Folder the machine's files go to, and keep Import Hard Drives as VDI ticked.

  3. Click Finish. The import takes about a minute.

VirtualBox lists the OVA's product, vendor, version and URL as information and ignores the rest of its description:

  • The properties, such as the SSH key, are not shown or asked for. The seed ISO below takes their place.
  • The firmware. The OVA asks for UEFI, but VirtualBox creates the machine with BIOS. The image boots BIOS, so leave it.
  • The network adapter becomes an Intel PRO/1000 MT Desktop, Bridged to the host's first network interface.
  • The disk sits on a SCSI controller.

Give it your SSH key​

  1. Build seed.iso with the seed ISO builder on the overview page.

  2. Select the machine and open Settings > Storage. Select Controller: SCSI and click its Adds optical drive icon.

  3. In the Optical Disk Selector, click Add, choose seed.iso, and click Choose.

  4. The seed now sits on the SCSI controller beside the disk, on port 1.

  5. Click OK.

The settings window may say Invalid settings detected, about the graphics controller the OVA asks for not being the one VirtualBox recommends. It is a warning only: OK still saves, and the machine runs.

No seed? The machine's own screen shows the console address and a one-time sign-in code after the first boot.

The network​

Bridged, as imported, puts the machine on your LAN: it takes an address from your LAN's DHCP, and you reach it at that address. Keep it if you can.

Where bridging is not possible, use NAT with port forwarding. In Settings > Network > Adapter 1, set Attached to to NAT, then under Advanced > Port Forwarding add a rule from host port 2222 on 127.0.0.1 to guest port 22. You then reach the machine's SSH on your own computer's port 2222, and nothing else on your network can.

With VBoxManage​

The same from the command line:

VBoxManage import antelao-ohm-<version>-amd64.ova --vsys 0 --vmname odoo-1 --vsys 0 --cpus 2 --memory 4096
VBoxManage storageattach odoo-1 --storagectl SCSI --port 1 --device 0 --type dvddrive --medium seed.iso
VBoxManage startvm odoo-1 --type headless

For NAT with the SSH forward, run this before startvm:

VBoxManage modifyvm odoo-1 --nic1 nat --natpf1 "ssh,tcp,127.0.0.1,2222,,22"

Start it and wait for the first boot​

Click Start. The machine's window shows boot messages, then a login prompt with the machine's name, within about half a minute.

The login prompt appearing does not mean the work is done. The first boot installs the server in the background, which takes about 4 minutes, longer on a slow connection or slow disks. Sign in over SSH meanwhile and the login message says how far it is.

Kernel messages may print over the login prompt while the containers start. Nothing is wrong: press Enter for a fresh login: line.

Reach the console​

Sign in over SSH as debian with your key. Bridged, use the address your router gave the machine; with NAT, use the forwarded port:

ssh debian@192.0.2.50 # bridged
ssh -p 2222 debian@127.0.0.1 # NAT with the port forward

The login message is shown when you sign in over SSH, not on the machine's screen. Once the first boot is done, it shows the console's address. Read the administrator's first password:

sudo cat /root/antelao-ohm-handoff.json

Then open the console through an SSH tunnel from your own computer, which opens no port on the machine:

ssh -N -L 5322:127.0.0.1:5322 debian@192.0.2.50 # bridged
ssh -p 2222 -N -L 5322:127.0.0.1:5322 debian@127.0.0.1 # NAT

Browse to https://localhost:5322/ and accept the self-signed certificate once. From here, carry on with the installation page:

  1. Check the server
  2. Reach the console
  3. Sign in and finish the setup
  4. Create your first instance

Platform notes and troubleshooting​

  • SSH refuses the key. Sign in as debian, and check that the seed was attached before the first start. The seed is read at the first boot only, so import the OVA again, attach the seed, and start the new machine.
  • No address on a bridged adapter. Check under Settings > Network that Name is the host interface on your LAN, and that the LAN has DHCP. Or use NAT with the port forward.
  • Nothing reaches the server from outside your network. Ports 80 and 443 must reach the machine before Let's Encrypt can issue certificates for your instances. With NAT that means two more port forwards; a server meant for the internet is easier bridged. Keep the console's port 5322 closed.
  • The first boot failed. The login message says FAILED with the reason. See What the first boot does for how to run it again.