Docker armbian focal ubuntu
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.