Local Hosting for Testing and Homelabs

Use a Fedora Silverblue virtual machine to test your changes locally or host your own.

On local host

  1. Create /etc/containers/registries.conf.d/local.conf with:

    [[registry]]
    location = "localhost:5000"
    insecure = true
    
  2. Run a local registry

    podman run -d -p 5000:5000 --restart=always --name registry registry:2
    
  3. Build

    podman build . -t <name>
    

    For startingpoint forks:

    podman build . --build-arg=FEDORA_MAJOR_VERSION=<fedora-version> --build-arg=BASE_IMAGE_URL=<base-image> --build-arg=RECIPE=./recipe.yml -t <name>
    

    Fill the build-args from your recipe, e.g. fedora-version = latest, base-image = Package silverblue-main · GitHub.

  4. Push image

    podman push localhost/<name>:latest localhost:5000/<name>:latest
    

Running off a local tarball

podman build -t oci-archive:/var/home/$USER/container.tar.gz .
rpm-ostree rebase ostree-unverified-image:oci-archive:/var/home/$USER/container.tar.gz

In VM

  1. Create /etc/containers/registries.conf.d/local.conf with:

    [[registry]]
    location = "<host IP>:5000"
    insecure = true
    
  2. Rebase

    rpm-ostree rebase --reboot ostree-unverified-registry:<host IP>:5000/<name>:latest
    
  3. Upgrade

    After rebasing once, just upgrade after pushing a new version with the same image name:

    rpm-ostree upgrade --reboot
    

Host Your Own

Help wanted! We have a dormant set up for hosting your own on-prem ublue called Forge. We’re looking for volunteers to help revive it.

If you have any good setups for transparent registries or any other associated tooling please consider contributing them!

til: podman can build to a local oci-archive tar ball! :magic_wand:

As mentioned in Self hosters, the forge needs your eyes and hands! the forge was heated up again after a longer break.

Here an example screen-cast on how to clone and build bluefin in the forge:
forge_clone-project

And build the image:
Start building process
forge_build-project
During building process


End of building process

In this case the build failed because of

    error: Could not depsolve transaction; 1 problem detected:
     Problem: package kernel-uki-virt-6.8.8-300.fc40.x86_64 from updates-archive requires kernel-modules-core-uname-r = 6.8.8-300.fc40.x86_64, but none of the providers can be installed
      - package kmod-evdi-6.8.8-300.fc40.x86_64-1.14.4-1.fc40.x86_64 from @commandline requires kernel-uname-r = 6.8.8-300.fc40.x86_64, but none of the providers can be installed
      - cannot install both kernel-modules-core-6.8.8-300.fc40.x86_64 from updates-archive and kernel-modules-core-6.8.7-300.fc40.x86_64 from @System
      - cannot install both kernel-core-6.8.8-300.fc40.x86_64 from updates-archive and kernel-core-6.8.7-300.fc40.x86_64 from @System
      - conflicting requests
    Error: building at STEP "RUN rpm-ostree cliwrap install-to-root / &&     mkdir -p /tmp/mediatek-firmware &&     curl -Lo /tmp/mediatek-firmware/WIFI_MT7922_patch_mcu_1_1_hdr.bin https://gitlab.com/kernel-firmware/linux-firmware/-/raw/8f08053b2a7474e210b03dbc2b4ba59afbe98802/mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin?inline=false &&     curl -Lo /tmp/mediatek-firmware/WIFI_RAM_CODE_MT7922_1.bin https://gitlab.com/kernel-firmware/linux-firmware/-/raw/8f08053b2a7474e210b03dbc2b4ba59afbe98802/mediatek/WIFI_RAM_CODE_MT7922_1.bin?inline=false &&     xz --check=crc32 /tmp/mediatek-firmware/WIFI_MT7922_patch_mcu_1_1_hdr.bin &&     xz --check=crc32 /tmp/mediatek-firmware/WIFI_RAM_CODE_MT7922_1.bin &&     mv -vf /tmp/mediatek-firmware/* /usr/lib/firmware/mediatek/ &&     rm -rf /tmp/mediatek-firmware &&     bash -c ". /tmp/build/build-base.sh"  &&     rm -rf /tmp/* /var/* &&     mkdir -p /var/tmp &&     chmod -R 1777 /var/tmp &&     ostree container commit": while running runtime: exit status 1

So I have to investigate that. But I think it’s enough to showcase how one could use the forge at the moment.

When the image builds successfully it will be available at: registry.ublue.local:bluefin:latest

1 Like