LinkedIn Sourceforge

Vincent's Blog

Pleasure in the job puts perfection in the work (Aristote)

Install immich on Docker, on RockyLinux, on Bhyve, on FreeBSD on Odroid ;)

Posted on 2025-06-17 20:57:00 from Vincent in FreeBSD

I would show how easy it is to install a docker app on a FreeBSD host. I've taken the choice of the Image viewer called Immich which is not available on BSD systems.


Introduction

immich is a photo and video which is mainly running inside a docker container.
This post will mainly show how simple it is to install it on a FreeBSD host.

It's not possible to execute Docker directly on the Linux emulation present on FreeBSD because this emulator does not provide all features Docker needs to have. So, to have a docker ecosystem, we must have a complete Linux distro running on inside a Bhyve VM

In this blog post, I'll show how to install RockyLinux, but we could use several other Linux distro compliant with Docker.

Finally, I will show how to install Immich on this docker environment.

Create a RocklyLinux VM

I suppose you already know how to build a Bhyve ecosystem based on vm utilities which are now part of the FreeBSD repository.

In very short, you have to do:

# pkg install vm-bhyve
in /etc/loader.conf:
vm_enable="YES"
vm_dir="/vm"
# zfs create -o mountpoint=/vm zroot/vm 
# vm init

Now we can start specific tasks for this setup:

# vm iso https://download.rockylinux.org/pub/rocky/10/isos/x86_64/Rocky-10.0-x86_64-minimal.iso

(This is the last version available at this date)

Build a config file which look like this:

# cat .templates/rockylinux.conf 
loader="uefi"
cpu=2
memory=4G
graphics="yes"
xhci_mouse="yes"
graphics_listen="192.168.1.51"  #put here the IP of hour FreeBSD host
graphics_port="5900"
network0_type="virtio-net"
network0_switch="public"
disk0_type="virtio-blk"
disk0_name="disk0.img"

loader, graphics and mouse parameters are require for the VNC viewer. Please adapt the "listen" and "port" to your specific needs.

Then we can create the VM:

#vm create -t rockylinux -s 80G immich

Now, if it does not exist, we must create the Network bridge:

# vm switch create public
# vm switch add public em0   # Replace em0 with your real NIC

Now, we can install RockyLinux:

# VM install rockylinux Rocky-10.0-x86_64-minimal.iso

Now the rest must be done via the VNC viewer on 192.168.1.51 port 5900
On my FreeBSD laptop, I'm using Tiger VNC

During this install, be careful to:
- select the correct default keyboard
- select the virtual disk
- define a root password
- define a standard user

This VM must have his own fixed IP address. As root on the VM, we must execute the following commands:

# nmcli connection modify enp0s5 ipv4.addresses 192.168.1.52/24
# nmcli connection modify enp0s5 ipv4.gateway 192.168.1.1
# nmcli connection modify enp0s5 ipv4.dns "8.8.8.8"
# nmcli connection modify enp0s5 ipv4.method manual
# nmcli connection down enp0s5
# nmcli connection up enp0s5

We can reboot the VM and check that everything is working as it should.

Install docker

To have docker on a RockyLinux, we have to add docker as valid repo, then we can install it.
As root on the VM, perform this:

# dnf -y install dnf-utils
# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# dnf install -y docker-ce docker-ce-cli containerd.io

Install Immich

With our standard user, we can do this:

$  mkdir immich
$  cd immich/
$  sudo dnf install wget
$  wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
$  wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
$  sudo docker compose up -d

Details and specific parameters are available on the immich website.

Now you should see your immich website on http://192.168.1.52:2283 (IP of your VM)

Personnal remarks

Filesystem allocation, like organized by install of RockyLinux is not optimum for the usage of Immich. Indeed, for a virtual disk of 100GB, the installer has given 56GB to / and 30GB to /home.
Small investigation are required to put maximum storage to either / or either /home, the place where we will store pictures and video.

Conclusion

It's amazing the few commands we need to have access to a totally different world as BSD.

This setup is running fine since several days. Combined with a simple WireGard VPN running inside my home (on OpenBSD), I can upload photos and video from my phone to my home's immich repository.

I hope you can see that it's not that complex to keep control of your own data when you use the good tools ;)

If after this blog, I've convinced you to give a try to bhyve, thanks to let me know it ;)



0, 0
displayed: 455
Comments:

1. From VoilĂ  on Mon Jun 23 19:22:30 2025

Thanks for the guide, but you should have used podman instead of docker...

2. From Vincent on Mon Jun 23 21:55:38 2025

Thanks VoilĂ . Podman... maybe for another blog's post ;)




What is the last letter of the word Python?