
[{"content":"Platform Engineer at B\u0026amp;W Handelsgesellschaft mbH focusing on infrastructure management, container orchestration, and developer enablement. Mostly living in the terminal.\nTech stack: Ansible, Kubernetes, IaC, and CheckMK for observability.\n","date":"31 May 2025","externalUrl":null,"permalink":"/","section":"","summary":"","title":"","type":"page"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/authors/andreas-m%C3%BCller/","section":"Authors","summary":"","title":"Andreas Müller","type":"authors"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/tags/embedded/","section":"Tags","summary":"","title":"Embedded","type":"tags"},{"content":"Got a NanoPi R6S with FriendlyWRT and want OpenWRT on the eMMC? The OpenWRT sysupgrade images work but only use ~120MB of your 32GB eMMC. Here\u0026rsquo;s how to get the full space.\n⚠️ WARNING: This process involves writing directly to storage devices and modifying bootloaders. There is a risk of bricking your device. Proceed at your own risk - I am not responsible for any damage to your hardware.\n📝 NOTE: Commands shown are from macOS. Some syntax may differ on Linux (e.g., bs=1m vs bs=1M, device names).\nFlash to SD Card First # wget https://downloads.openwrt.org/releases/24.10.1/targets/rockchip/armv8/openwrt-24.10.1-rockchip-armv8-friendlyarm_nanopi-r6s-ext4-sysupgrade.img.gz gunzip -c openwrt-*.img.gz | sudo dd of=/dev/diskX bs=1m Boot from the SD card, SSH in.\nFlash to eMMC # Check which device is which:\nlsblk Usually mmcblk0 is SD card, mmcblk1 is eMMC. Download and flash:\nwget https://downloads.openwrt.org/releases/24.10.1/targets/rockchip/armv8/openwrt-24.10.1-rockchip-armv8-friendlyarm_nanopi-r6s-ext4-sysupgrade.img.gz gunzip -c openwrt-24.10.1-rockchip-armv8-friendlyarm_nanopi-r6s-ext4-sysupgrade.img.gz | dd of=/dev/mmcblk1 bs=1M Expand the Partition # parted /dev/mmcblk1 resizepart 2 100% Now the partition is big but the filesystem is still tiny:\ndf -h # Only shows ~122MB The Problem # Trying to resize while mounted fails:\nresize2fs /dev/mmcblk1p2 # resize2fs: Invalid argument While trying to add group #1 Online resizing doesn\u0026rsquo;t work when going from such a small to large size.\nThe Fix # Boot from SD card to resize the eMMC filesystem while unmounted.\n# Disable eMMC boot temporarily dd if=/dev/zero of=/dev/mmcblk1p1 bs=1M count=1 reboot Now you\u0026rsquo;ll boot from SD card. Resize the eMMC:\nresize2fs /dev/mmcblk1p2 Works perfectly:\nResizing the filesystem on /dev/mmcblk1p2 to 7561216 (4k) blocks. The filesystem on /dev/mmcblk1p2 is now 7561216 (4k) blocks long. Restore and Boot from eMMC # # Copy boot partition back dd if=/dev/mmcblk0p1 of=/dev/mmcblk1p1 bs=1M reboot Remove SD card. You now have OpenWRT using the full eMMC space.\n","date":"31 May 2025","externalUrl":null,"permalink":"/posts/2025-05-31_nanopi-r6s-openwrt-flash-resize/","section":"Posts","summary":"","title":"Flash OpenWRT to NanoPi R6S eMMC and Expand Filesystem","type":"posts"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/categories/linux/","section":"Categories","summary":"","title":"Linux","type":"categories"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/tags/nanopi/","section":"Tags","summary":"","title":"Nanopi","type":"tags"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/categories/networking/","section":"Categories","summary":"","title":"Networking","type":"categories"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/tags/openwrt/","section":"Tags","summary":"","title":"Openwrt","type":"tags"},{"content":"","date":"31 May 2025","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"24 March 2025","externalUrl":null,"permalink":"/categories/homelab/","section":"Categories","summary":"","title":"Homelab","type":"categories"},{"content":"","date":"24 March 2025","externalUrl":null,"permalink":"/tags/macos/","section":"Tags","summary":"","title":"Macos","type":"tags"},{"content":"","date":"24 March 2025","externalUrl":null,"permalink":"/tags/ollama/","section":"Tags","summary":"","title":"Ollama","type":"tags"},{"content":"If you lookup Open WebUI1 and Ollama2 on the internet, you\u0026rsquo;ll probably get examples that are all using Docker. What about Podman? Well, here you go!\nInstallation # We\u0026rsquo;re using homebrew, of course.\nbrew install ollama brew install podman-desktop I\u0026rsquo;ll not go into the details of setting up Podman Desktop3 and Ollama here because they both have pretty good online documention available (see resources at the bottom).\nConfiguration details # Ollama # By default, ollama will be listening on localhost:11434 - Make sure you start it before running the container, although, Open WebUI should pick it up afterwards anyway.\nOpen WebUI Container # The container will run in rootless mode under our user. We\u0026rsquo;ll use localhost:3000 in the browser and that is the port that\u0026rsquo;ll be forwarded internally to the container port 8080 To keep the configuration data e.g. User data and settings, we\u0026rsquo;ll create a directory in our User\u0026rsquo;s $HOME.\nSetup and Start # Pick an LLM that suits your needs - I\u0026rsquo;m going with Llama 3 8B\nollama run llama3:8b Start the podman service\npodman machine start Create the data directory\nmkdir ~/podman/open-webui Run the Open WebUI Container\npodman run -d --name open-webui -p 3000:8080 --add-host localhost:127.0.0.1 -v ~/podman/open-webui:/app/backend/data ghcr.io/open-webui/open-webui:main Upon accessing localhost:3000 you\u0026rsquo;ll be prompted to create an account.\nResources # Open WebUI\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nOllama\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPodman Desktop\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"24 March 2025","externalUrl":null,"permalink":"/posts/2025-03-24_open-webui-with-podman-on-macos/","section":"Posts","summary":"","title":"Open WebUI with Podman on macOS","type":"posts"},{"content":"","date":"24 March 2025","externalUrl":null,"permalink":"/tags/podman/","section":"Tags","summary":"","title":"Podman","type":"tags"},{"content":"","date":"16 March 2025","externalUrl":null,"permalink":"/tags/containers/","section":"Tags","summary":"","title":"Containers","type":"tags"},{"content":"","date":"16 March 2025","externalUrl":null,"permalink":"/categories/infrastructure/","section":"Categories","summary":"","title":"Infrastructure","type":"categories"},{"content":"","date":"16 March 2025","externalUrl":null,"permalink":"/tags/quadlets/","section":"Tags","summary":"","title":"Quadlets","type":"tags"},{"content":"If you wanted to run podman containers as a systemd service in the past, podman-generate-systemd was the way to go. Now in 2025, their Docs1 say this:\nDEPRECATED: Note: podman generate systemd is deprecated. We recommend using Quadlet files when running Podman containers or pods under systemd. There are no plans to remove the command. It will receive urgent bug fixes but no new features.\nLet\u0026rsquo;s see, how that works and convert a simple podman container to a quadlet.\nRegular (rootless) podman # We\u0026rsquo;re using Uptime Kuma to monitor Services and Websites. The command2 to create that container is this:\npodman run -d --name uptime-kuma --restart always -v /home/user/podman/uptime-kuma:/app/data --network=host docker.io/louislam/uptime-kuma:latest Details on some of the parameters:\nRestart the container in any circumstance.\n--restart always\nThe configuration data must be persistent after reboots or if the container is removed.\n-v /home/user/podman/uptime-kuma:/app/data\nTo reach other services, on the Host System as well as externally, we tell Podman to use the host network.\n--network=host\nQuadlet # Let\u0026rsquo;s first remove the container\npodman stop uptime-kuma podman rm uptime-kuma Now let\u0026rsquo;s create a Systemd Container File3 for the new Container.\n$EDITOR ~/.config/containers/systemd/uptime-kuma.container\n[Unit] Description=Uptime Kuma After=network.target [Container] Image=docker.io/louislam/uptime-kuma:latest AutoUpdate=registry Network=host Volume=/home/user/podman/uptime-kuma:/app/data [Service] Restart=always [Install] WantedBy=default.target Start the container\nsystemctl --user daemon-reload systemctl --user start uptime-kuma Autostart # Does it start automatically after reboot? Thank\u0026rsquo;s to this, it does!\n[Install] WantedBy=default.target Resources # podman-generate-systemd\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPodman run\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nContainer Units\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"16 March 2025","externalUrl":null,"permalink":"/posts/2025-03-16_quadlets/","section":"Posts","summary":"","title":"Switch to Podman Quadlets","type":"posts"},{"content":"","date":"16 March 2025","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"Platform Engineer at B\u0026amp;W Handelsgesellschaft mbH focusing on infrastructure management, container orchestration, and developer enablement. Mostly living in the terminal.\nTech stack: Ansible, Kubernetes, IaC, and CheckMK for observability.\nThis is my private blog, all opinions are my own.\n","externalUrl":null,"permalink":"/authors/andreas-mueller/","section":"Authors","summary":"","title":"Andreas Müller","type":"authors"},{"content":"A collection of useful resources and references.\nAnsible # Automation Good Practices - Red Hat Communities of Practice guide for Ansible automation ","externalUrl":null,"permalink":"/links/","section":"","summary":"","title":"Links","type":"page"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"A collection of tools and software I use daily.\nTerminal # Shell: TODO Editor: TODO Terminal emulator: TODO Infrastructure # IaC: Ansible Containers: Podman, Kubernetes Monitoring: CheckMK Development # TODO Hardware # TODO ","externalUrl":null,"permalink":"/tools/","section":"","summary":"","title":"Tools I Use","type":"page"}]