← HomeLab Blog

HomeLab Blog: Ubuntu Server 26.04 LTS, Docker Engine, and Arcane Docker Manager

Published

Setting up an environment to run Docker services being managed by Arcane.

Table of Contents

  1. Overview
  2. Create Ubuntu Server VM in Proxmox (Docker Services VM)
    1. Step 1: Create Proxmox Resource Pool
    2. Step 2: Download Ubuntu Server 26.04 LTS ISO
    3. Step 3: Create the Ubuntu Server VM
    4. Step 4: Boot and Install Server
  3. Install Docker Engine on Ubuntu Server
    1. What is Docker Engine?
    2. Installing Docker Engine on Ubuntu Server
  4. Starting Arcane Docker Management Service
    1. What is Arcane?
    2. Create docker-compose.yml in arcane folder
    3. Install and Start the Arcane Container
  5. References

Overview

This writeup documents how I set up a dedicated Docker services environment on my Homelab Proxmox server. The goal is to have a single, well-organized virtual machine that runs Docker Engine for hosting containerized services, and Arcane (or something comparable) as a web-based Docker manager so I can deploy, monitor, and update those services from a browser instead of always SSHing into the host.

My Homelab theme is The Chocolate Factory and my Proxmox host is named wonka, and the VM that will run all the Docker containers is the Oompa Loompa Task Force (OLTF). The OLTF lead VM is oltf-hq, and the Proxmox Resource Pool that groups all OLTF-related VMs and containers is named oompa-loompa-task-force. This naming makes the relationship clear at a glance: Wonka provides the infrastructure and the task force (OLTF) does the actual work.

By the end of this writeup, I’ll have:

OLTF

Create Ubuntu Server VM in Proxmox (Docker Services VM)

Step 1: Create Proxmox Resource Pool

Proxmox Resource Pools are logical groupings of virtual machines (VMs) and containers (CTs) designed for organized management and delegated permissions, allowing administrators to manage multiple tenants or workloads efficiently. Created at the Datacenter level, they simplify access control by assigning user permissions to the entire pool. See Proxmox forum thread for more.

To create a new resource pool, follow these steps:

  1. In proxmox, click Datacenter in the left tree.
  2. Click Permissions -> Pools
  3. Click Create
  4. Name the pool. (I’ll be naming my pool the oompa-loompa-task-force)
  5. Add comments if you’d like, then click OK

Naming the resource pool name-create-pool

Step 2: Download Ubuntu Server 26.04 LTS ISO

NOTE: Proxmox can download ISOs directly to its local storage from a URL, which cuts out the middleman of saving the iso to your machine first, then uploading it to Proxmox.

To download the Ubuntu Server 26.04 LTS ISO from URL, follow these steps:

  1. In Proxmox, click you main node's local storage. (Mine is called wonka)
  2. Click ISO images
  3. Click `Download from URL
  4. Enter the following URL:
https://releases.ubuntu.com/26.04/ubuntu-26.04-live-server-amd64.iso
  1. Click Query URL (this will find and enter the image name), then Download

Preparing to download Ubuntu Server image from URL download-demo
Ubuntu Server image successfully downloaded from URL download-complete

Step 3: Create the Ubuntu Server VM

  1. Click Create VM at the top-right of the Proxmox UI.
  2. I applied the following settings (some are in the advanced menu):
General:
  - Node: `wonka`
  - VM ID: `100` (or accept the suggested next available)
  - Name: `oltf-hq`
  - Resource Pool: `oompa-loompa-task-force`
  - Start at boot: ✅
  - Click `Next`

OS tab
  - Use CD/DVD disc image (iso): ✅
  - Storage: iso-and-backups
  - ISO image: select the Ubuntu 26.04 ISO you downloaded
  - Type: Linux
  - Version: 6.x - 2.6 Kernel
  - Click Next

System tab
  - Machine: q35 (q35 is the modern chipset emulation)
  - BIOS: OVMF (UEFI)
  - Add EFI Disk: ✅
  - EFI Storage: vm-storage
  - Pre-Enroll keys: ❌
  - Qemu Agent: ✅
  - SCSI Controller: VirtIO SCSI single
  - Click Next

Disks tab
  - Bus/Device: SCSI, 0
  - Storage: vm-storage
  - Disk size (GiB): 64
  - SSD emulation: ✅
  - Discard: ✅
  - Click Next

CPU tab
  - Sockets: 1
  - Cores: 4
  - Type: host (passes through physical CPU's instruction set for max performance)
  - Click Next

Memory tab
  - Memory (MiB): 8192
  - Ballooning Device: ✅
  - Click Next

Network tab
  - Bridge: vmbr0
  - Model: VirtIO (paravirtualized)
  - Firewall: ✅
  - Click Next

Confirm tab
  - Review your settings.
  - Uncheck Start after created (if you want to watch it boot for the first time)
  - Click Finish

Step 4: Boot and Install Server

1. Select the new Ubuntu Server VM in the Proxmox tree.
2. Click `Start` at the top right.
3. Click `Console` to see the remote console.
4. At the GRUB boot menu, press `Enter` to select `Try or Install Ubuntu Server`
5. Go through the installer steps (I used the defaults throughout).
6. At storage configuration: Click `Done` and `Continue`
7. Setup profile (username and password)
8. Skip `Upgrade to Ubuntu Pro`
9. Install SSH Server (skipped linking to GitHub)
10. Skipped all Featured Snaps
11. Wait for installer to complete, then click `Reboot Now` and `Enter`
12. I had to "eject" the virtual CD after install to continue.
  - Click the VM tree in the proxmox web ui
  - Go to `Hardware`
  - Select `CD/DVD Drive (ide2)
  - Click `Edit`, change to `Do not use any media`
  - Cilck `OK`
# Successfully installed and accessed the Ubuntu Server 26.04 LTS
adminoompa@oltf-hq:~>

Install Docker Engine on Ubuntu Server

What is Docker Engine?

Docker Engine is the core open-source technology used to build, containerize, and run applications. It acts as a lightweight runtime that allows developers to package an application with all its dependencies into a single unit called a container, ensuring it runs consistently across different environments.

For more information, visit Docker Docs HERE

Installing Docker Engine on Ubuntu Server

  1. Download the Docker Engine installation script HERE or simply run the following command from your ubuntu server command line:
curl -fsSL https://get.docker.com -o install-docker.sh

Below is the Usage stated in the script:

# Usage
# ==============================================================================
#
# To install the latest stable versions of Docker CLI, Docker Engine, and their
# dependencies:
#
# 1. download the script
#
#   $ curl -fsSL https://get.docker.com -o install-docker.sh
#
# 2. verify the script's content
#
#   $ cat install-docker.sh
#
# 3. run the script with --dry-run to verify the steps it executes
#
#   $ sh install-docker.sh --dry-run
#
# 4. run the script either as root, or using sudo to perform the installation.
#
#   $ sudo sh install-docker.sh
  1. Run the Docker Engine Installation Script:
sudo sh install-docker.sh
  1. Once the script runs, you can update, upgrade, and reboot
sudo apt update && sudo apt upgrade -y
sudo reboot
  1. Verify Docker daemon is active and running
systemctl is-active docker
active

or 

systemctl status docker
 docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: >
     Active: active (running) since Fri 2026-05-15 23:34:21 UTC; 22h ago

This verifies the Docker daemon is installed and active.

Starting Arcane Docker Management Service

What is Arcane?

Arcane is a self-hosted web dashboard for Docker. You point it at the Docker socket on your host (or a remote Docker API endpoint over TLS), and it gives you a browser UI to manage containers, images, networks, volumes, and Compose stacks. It runs as a single container itself.

Create docker-compose.yml in arcane folder

  1. Make /opt/arcane folder
    mkdir -p ~/arcane && cd ~/arcane`
  2. Generate the two required secrets (save somewhere safe)
    echo "ENCRYPTION_KEY=$(openssl rand -hex 32)"
    echo "JWT_SECRET=$(openssl rand -hex 32)"
  3. Create docker-compose.yml
    services:
      arcane:
        image: ghcr.io/ofkm/arcane:latest
        container_name: oltf-arcane
        restart: unless-stopped
        ports:
          - "3552:3552"
        environment:
          APP_URL: "http://YOUR.SERVER.IP:3552"
          PUID: "1000"
          PGID: "1000"
          ENCRYPTION_KEY: "PASTE_KEY_HERE"
          JWT_SECRET:     "PASTE_KEY_HERE"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - ./data:/app/data

Install and Start the Arcane Container

adminoompa@oltf-hq:~/arcane$ sudo docker compose up -d
[sudo: authenticate] Password:
[+] up 11/11
 Image ghcr.io/ofkm/arcane:latest Pulled                                                   5.5s
 Network arcane_default           Created                                                  0.1s
 Container oltf-arcane            Started                                                  1.0s
adminoompa@oltf-hq:~/arcane$

Access Arcane From Your Browser

  1. Access your new Arcane UI from your browser: http://YOUR.SERVER.IP:3552
  2. First log on username: arcane
  3. First log on password: arcane-admin
  4. Update your password

That’s it!

Screenshot of first Arcane access arcane-logged-in

References

  1. Ubuntu Server 26.04 LTS Download Link
  2. Proxmox Resource Pool Info
  3. Docker Docs
  4. Docker Engine YouTube Reference
  5. Docker Engine Install from Docker Docs
  6. Arcane Documentation