Docker armbian focal ubuntu

docker Jun 30, 2025

I had an impulsive idea to build an ARM server from an Android TV box provided by my local ISP. I purchased two HG680P ARM-based Android boxes and installed Armbian Ubuntu Focal on them. However, before doing that, I first had to install a custom Android OS to unlock root access. Initially, I used the server to back up my photos or as a NAS. Later, I decided to host my blog using Ghost, so I installed Ghost via Docker, and then I found another use for it: monitoring activity across all my servers.

The first challenge I faced was with the OS version's included Wi-Fi driver. After trying Ubuntu 22.04 or Debian, neither could detect the Wi-Fi. However, once I reinstalled using Ubuntu Focal Fossa (20.04 LTS), the Wi-Fi was enabled and connected successfully.

My second challenge was figuring out how to access my home server from the internet. I initially attempted to use Cloudflare, but my payment was declined. So, I opted for Tailscale, a solution I was already familiar with, to connect my home server to the world without the fear of being constantly scanned by hackers.

The third challenge I encountered was with Docker's installation itself. I couldn't simply install it manually from the standard Ubuntu Focal repositories because Armbian offers its own Docker version, which is much better suited for the ARM architecture. To overcome this, I found a solution and proceeded with the installation using armbian-config and choose software then softy and find docker.

After the installation, the first crucial step is to enable Docker so it can run. Before doing that, need to add current user to the docker group. Once added, it can then test the installation by running docker run hello-world.

For easier deployment, I decided to use the docker-compose.yml file provided in the image description on Ghost's official Docker Hub page. However, since docker compose is not included when Docker is installed via armbian-config, I had to follow the official Docker documentation to install the docker compose plugin separately.

`compose.yaml`

ghost:
    image: ghost:5
    restart: always
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__database: ghost
      database__connection__user: ghost
      database__connection__password: "${MYSQL_PASSWORD}"
      url: www.example.com
      mail__transport: "${MAIL_TRANSPORT}"
      mail__options__host: "${MAIL_HOST}"
      mail__options__port: "${MAIL_PORT}"
      mail__options__secureConnection: "${MAIL_SECURE_CONNECTION}"
      mail__options__auth__user: "${MAIL_USER}"
      mail__options__auth__pass: "${MAIL_PASSWORD}"
    volumes:
      - ghost-data:/var/lib/ghost/content
    links:
      - db

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    cap_add:
      - SYS_NICE
    volumes:
      - ghost-db:/var/lib/mysql

volumes: 
  ghost-data:
  ghost-db:
  caddy-data:

then docker-compose -f compose.yaml up -d after that setup Nginx for reverse proxy. Then access ghost using domain.

Tags