winboat icon indicating copy to clipboard operation
winboat copied to clipboard

Podman support

Open tazihad opened this issue 2 months ago • 36 comments
trafficstars

Fedora comes with podman. Can you also put podman support? It should work

tazihad avatar Aug 30 '25 15:08 tazihad

Podman support is planned. I tried working on it, some contributors also tried working on it, but there's issues with networking (specifically the guest server being unreachable) that prevent it from being functional for now. There's also a branch for developing with Podman support where you can experiment.

TibixDev avatar Aug 30 '25 18:08 TibixDev

On Archlinux I used winboat-git and::

packages satisfied the initial wizard.

Install went fine, the localhost VNC took some time to spin up during install, but the wizard kept waiting for installation to be done, while the Windows instance was doing its thing, probably it tried to install the ~/.winboat/oem/winboat_guest_server.exe ? And since the guest server was unreachable, that didn't work, I guess. The \host.lan\Data\ is accessible from my home, though. But if it's not critical for you, it's usable.

There is no output device in VNC tab, which is fine since you can just connect to RDP via Remmina default RDP port localhost:3389 and enable Local Audio Output in Advanced settings.

I retried with podman removed and docker only, and the Guest API works fine.

Pulecz avatar Aug 31 '25 08:08 Pulecz

Adding on here, running the "install.bat" script in the same folder does seem to complete, but similar results for me as noted above.

AyoungDukie avatar Sep 05 '25 02:09 AyoungDukie

+1 to this. Fedora Atomic distros simply ignore the Docker user group due to a combo of SELinux policies and immutability of the root filesystem, which is solved by using Podman since it doesn't store any container files in root-owned directories.

psygreg avatar Sep 06 '25 23:09 psygreg

+1 I use podman on a daily basis so I would love to see this working with some level of persistance on podman without root.

Edit: I would also love to see some sort of official documentation explaining this and also a easy copy paste command with quadlets to stop start windows container though systemd for people that don't have knowledge of podman but still want to use it.

Arthur-Stuhl avatar Sep 08 '25 21:09 Arthur-Stuhl

Podman support is planned. I tried working on it, some contributors also tried working on it, but there's issues with networking (specifically the guest server being unreachable) that prevent it from being functional for now. There's also a branch for developing with Podman support where you can experiment.

If the issue is networking has anyone tried using --network slirp4netns:allow_host_loopback=true flag and mapping the ports from the container to host in podman?

Arthur-Stuhl avatar Sep 08 '25 21:09 Arthur-Stuhl

+1 Can't wait for this to be honest! This is the only show stopper for me at the moment.

mdx0111 avatar Sep 10 '25 13:09 mdx0111

Yep, cam here for this. Looking forward to testing when it is ready. Few of my team members have an unfortunate need for Microsoft apps due to our clients. This would simplify the setup. But we only use Podman internally.

clintre avatar Sep 22 '25 16:09 clintre

+1 Podman gang

donCESAR12345 avatar Sep 25 '25 01:09 donCESAR12345

Came here for this. +1

TRClint avatar Oct 01 '25 03:10 TRClint

Hey @TibixDev, Maybe this could help speeding up the Podman support? https://github.com/dockur/windows

It allows spinning up an instance of Windows using Podman.

mdx0111 avatar Oct 01 '25 22:10 mdx0111

Hanging out for this too. I run Bazzite as my daily driver and love it but really want to use winboat for MS Office.

A flatpak would be ideal but I’d settle for layering it in via rpm-tree or appimage if podman support was available.

regalen avatar Oct 01 '25 22:10 regalen

Any update on this issue for the progress made so far?

Arthur-Stuhl avatar Oct 03 '25 22:10 Arthur-Stuhl

Podman support is planned. I tried working on it, some contributors also tried working on it, but there's issues with networking (specifically the guest server being unreachable) that prevent it from being functional for now. There's also a branch for developing with Podman support where you can experiment.

If the issue is networking has anyone tried using --network slirp4netns:allow_host_loopback=true flag and mapping the ports from the container to host in podman?

I've tried this, with a few additional options and it seems to work. I'm not sure if the other options have any effect, but this is what I've added in the compose file in ~/.winboat:

network_mode: "slirp4netns:port_handler=slirp4netns,enable_ipv6=true,allow_host_loopback=true"

proatgram avatar Oct 06 '25 16:10 proatgram

I've successfully created a Podman-compatible fork that works from installation through regular use.

Key Changes

  • Runtime Detection: Automatically detects Docker or Podman and applies appropriate configurations
  • Setup UI Enhancement: Skips the "add user to docker group" requirement when Podman is detected
  • Podman-Specific Configuration: Added necessary security options and network configuration for Podman compatibility

Environment

  • OS: Arch Linux
  • Packages: podman, podman-compose, podman-docker
  • Fork: Thoxy67/winboat

Working Configuration

Complete docker-compose.yml for Podman:

name: "winboat"
volumes:
  data:
services:
  windows:
    image: "ghcr.io/dockur/windows:5.03"
    container_name: "WinBoat"
    environment:
      VERSION: "11"
      RAM_SIZE: "8G"
      CPU_CORES: "4"
      DISK_SIZE: "40G"
      USERNAME: "redacted"
      PASSWORD: "redacted"
      HOME: "${HOME}"
      LANGUAGE: "French"
      HOST_PORTS: "7149"
      USER_PORTS: "7148"
      ARGUMENTS: "-qmp tcp:0.0.0.0:7149,server,wait=off -device e1000,netdev=network0 -netdev user,id=network0,hostfwd=tcp::7148-:7148,hostfwd=tcp::3389-:3389,hostfwd=udp::3389-:3389"
    cap_add:
      - "NET_ADMIN"
    privileged: true
    ports:
      - "7148:7148"
      - "8006:8006"
      - "7149:7149"
      - "3389:3389/tcp"
      - "3389:3389/udp"
    stop_grace_period: "120s"
    restart: "on-failure"
    volumes:
      - "data:/storage"
      - "${HOME}:/shared"
      - "/dev/bus/usb:/dev/bus/usb"
      - "./oem:/oem"
    devices:
      - "/dev/kvm"
    security_opt:
      - "label=disable"  # Required for Podman + KVM compatibility

Key Podman-specific settings:

  • ARGUMENTS: Custom network configuration using QEMU user networking with port forwarding
  • security_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibility

Screenshot

WinBoat running with Podman

Note

I'm sharing this proof-of-concept to help others working on Podman support. While I won't be submitting a PR due to time constraints due to my job, the implementation in my fork may be useful for anyone interested in adding official Podman compatibility.

Thoxy67 avatar Oct 07 '25 08:10 Thoxy67

I've successfully created a Podman-compatible fork that works from installation through regular use.

Key Changes

  • Runtime Detection: Automatically detects Docker or Podman and applies appropriate configurations
  • Setup UI Enhancement: Skips the "add user to docker group" requirement when Podman is detected
  • Podman-Specific Configuration: Added necessary security options and network configuration for Podman compatibility

Environment

  • OS: Arch Linux
  • Packages: podman, podman-compose, podman-docker
  • Fork: Thoxy67/winboat

Working Configuration

Complete docker-compose.yml for Podman:

name: "winboat" volumes: data: services: windows: image: "ghcr.io/dockur/windows:5.03" container_name: "WinBoat" environment: VERSION: "11" RAM_SIZE: "8G" CPU_CORES: "4" DISK_SIZE: "40G" USERNAME: "redacted" PASSWORD: "redacted" HOME: "${HOME}" LANGUAGE: "French" HOST_PORTS: "7149" USER_PORTS: "7148" ARGUMENTS: "-qmp tcp:0.0.0.0:7149,server,wait=off -device e1000,netdev=network0 -netdev user,id=network0,hostfwd=tcp::7148-:7148,hostfwd=tcp::3389-:3389,hostfwd=udp::3389-:3389" cap_add: - "NET_ADMIN" privileged: true ports: - "7148:7148" - "8006:8006" - "7149:7149" - "3389:3389/tcp" - "3389:3389/udp" stop_grace_period: "120s" restart: "on-failure" volumes: - "data:/storage" - "${HOME}:/shared" - "/dev/bus/usb:/dev/bus/usb" - "./oem:/oem" devices: - "/dev/kvm" security_opt: - "label=disable" # Required for Podman + KVM compatibility Key Podman-specific settings:

  • ARGUMENTS: Custom network configuration using QEMU user networking with port forwarding
  • security_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibility

Screenshot

WinBoat running with Podman ### Note I'm sharing this proof-of-concept to help others working on Podman support. While I won't be submitting a PR due to time constraints due to my job, the implementation in my fork may be useful for anyone interested in adding official Podman compatibility.

Is it okay if I make a pull request for you? I can specify your repository in the pull request.

Barrettloganj13 avatar Oct 07 '25 23:10 Barrettloganj13

I've successfully created a Podman-compatible fork that works from installation through regular use.

Key Changes

  • Runtime Detection: Automatically detects Docker or Podman and applies appropriate configurations
  • Setup UI Enhancement: Skips the "add user to docker group" requirement when Podman is detected
  • Podman-Specific Configuration: Added necessary security options and network configuration for Podman compatibility

Environment

  • OS: Arch Linux
  • Packages: podman, podman-compose, podman-docker
  • Fork: Thoxy67/winboat

Working Configuration

Complete docker-compose.yml for Podman: name: "winboat" volumes: data: services: windows: image: "ghcr.io/dockur/windows:5.03" container_name: "WinBoat" environment: VERSION: "11" RAM_SIZE: "8G" CPU_CORES: "4" DISK_SIZE: "40G" USERNAME: "redacted" PASSWORD: "redacted" HOME: "${HOME}" LANGUAGE: "French" HOST_PORTS: "7149" USER_PORTS: "7148" ARGUMENTS: "-qmp tcp:0.0.0.0:7149,server,wait=off -device e1000,netdev=network0 -netdev user,id=network0,hostfwd=tcp::7148-:7148,hostfwd=tcp::3389-:3389,hostfwd=udp::3389-:3389" cap_add:

  • "NET_ADMIN" privileged: true ports:
  • "7148:7148"
  • "8006:8006"
  • "7149:7149"
  • "3389:3389/tcp"
  • "3389:3389/udp" stop_grace_period: "120s" restart: "on-failure" volumes:
  • "data:/storage"
  • "${HOME}:/shared"
  • "/dev/bus/usb:/dev/bus/usb"
  • "./oem:/oem" devices:
  • "/dev/kvm" security_opt:
  • "label=disable" # Required for Podman + KVM compatibility Key Podman-specific settings:
  • ARGUMENTS: Custom network configuration using QEMU user networking with port forwarding
  • security_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibility

Screenshot

WinBoat running with Podman ### Note I'm sharing this proof-of-concept to help others working on Podman support. While I won't be submitting a PR due to time constraints due to my job, the implementation in my fork may be useful for anyone interested in adding official Podman compatibility.

Is it okay if I make a pull request for you? I can specify your repository in the pull request.

I'm sure he doesn't mind.

mdx0111 avatar Oct 08 '25 05:10 mdx0111

Started working on this, though the USB passthrough side of things is a bit complicated, as accessing /dev/bus/usb isn't possible from a rootless environment.

One approach I've successfully tested is adding passed through devices to a udev rule, which'd make them readable to podman. I'm not sure if this is the right approach as this requires the user to grant sudo permissions whenever the passthrough list is changed (we could use https://www.npmjs.com/package/@vscode/sudo-prompt for this).

If someone has some ideas as to how WinBoat could address this please do chime in!

Levev avatar Oct 08 '25 22:10 Levev

Tried the fork and it doesn't let me get past this page, even though everything is a green check:

Image

mfkp avatar Oct 08 '25 22:10 mfkp

I was able to fix the above in the fork (gpuThreads and diskSpaceGB are not available so I removed those checks) https://github.com/TibixDev/winboat/compare/main...Thoxy67:winboat:main#diff-dbf089af4589a036709b2f5e23ddfd95fdcad170be56c7e17460970073b73aa2R701

But, another issue is that if you have both docker and podman installed, it will still default to docker. I swapped the podman check to be above the docker check here:

https://github.com/TibixDev/winboat/compare/main...Thoxy67:winboat:main#diff-ffbee42d94ee9bc071e526b3cd61428411a9a2d3bc554259cf95ec16d82a5fe0R32

And it works... but we should probably have some sort of option to select which runtime you prefer if both are installed.

mfkp avatar Oct 09 '25 04:10 mfkp

I feel like this is a high priority issue because as of right now people are in search for alternatives of win11 for their win10 migration. Seeing this issue through would allow fedora based distros like Bazzite that had a huge spike in population in the last few months to become even more of a turnkey solution for people to be able to not only play their games out of the box (Proton) but also run apps like Office or Creative Cloud(WinBoat)! This alone would allow a huge population of people to move safely to linux without the fear that they will lose access to their favorite apps while at the same time they can try alternatives that will become available on linux as the population grows. Devs you are creating a huge push for linux right now. Amazing job!

Edit: clarity

Xarishark avatar Oct 09 '25 14:10 Xarishark

I second @Xarishark sentiment, as well as having access to Office and Creative Cloud would be a great way to bring the folks who haven't quite figured out #NoTuxNoBux is a viable strategy. Such as hiring managers who require people to have O365 apps in order to be considered. Or certifications that require one to use Excel-based addons that only work on Excel (glares at QI Macros Lean Six Sigma certifications).

ClariNerd617 avatar Oct 09 '25 17:10 ClariNerd617

@TibixDev So, Windows images and apps will be available system-wide for all users if this container will be deployed "system-wide"?

tsilvs avatar Oct 09 '25 17:10 tsilvs

Started working on this, though the USB passthrough side of things is a bit complicated, as accessing /dev/bus/usb isn't possible from a rootless environment.

One approach I've successfully tested is adding passed through devices to a udev rule, which'd make them readable to podman. I'm not sure if this is the right approach as this requires the user to grant sudo permissions whenever the passthrough list is changed (we could use https://www.npmjs.com/package/@vscode/sudo-prompt for this).

If someone has some ideas as to how WinBoat could address this please do chime in!

@Levev I am not a programmer, so I can not help you directly, but Gnome Boxes is able to connect USB devices to VMs rootless. Maybe it can help you, they even do it through flatpak, which should be harder then Podman :-).

ALsbraun avatar Oct 10 '25 09:10 ALsbraun

Started working on this, though the USB passthrough side of things is a bit complicated, as accessing /dev/bus/usb isn't possible from a rootless environment.

One approach I've successfully tested is adding passed through devices to a udev rule, which'd make them readable to podman. I'm not sure if this is the right approach as this requires the user to grant sudo permissions whenever the passthrough list is changed (we could use https://www.npmjs.com/package/@vscode/sudo-prompt for this).

If someone has some ideas as to how WinBoat could address this please do chime in!

I suggest getting the feature working without the USB passthrough initially and mention it as a work in progress. Many of the users might not need the USB passthrough to begin with. Many can accept it as a coming feature and many more don't even notice as they might never come across the need of it.

mdx0111 avatar Oct 10 '25 10:10 mdx0111

I suggest getting the feature working without the USB passthrough initially and mention it as a work in progress. Many of the users might not need the USB passthrough to begin with. Many can accept it as a coming feature and many more don't even notice as they might never come across the need of it.

99% of people just want access to MS Office for proper excel usage because they hate the online version. Other than the Native window popout of the app they also need to auto-mount their home folder to the windows desktop and pin it to the left on the windows explorer for quick access (like parallels does). As I said timing is everything with what its going on right now. Device passthrough is totally fine to come later IMHO.

Xarishark avatar Oct 10 '25 13:10 Xarishark

#285 PR related to this issue.

AeroBliss avatar Oct 10 '25 17:10 AeroBliss

I came here to +1 this request, but it seems that may not be necessary! Yay!

gangrif avatar Oct 10 '25 20:10 gangrif

I feel like this is a high priority issue because as of right now people are in search for alternatives of win11 for their win10 migration. Seeing this issue through would allow fedora based distros like Bazzite that had a huge spike in population in the last few months to become even more of a turnkey solution for people to be able to not only play their games out of the box (Proton) but also run apps like Office or Creative Cloud(WinBoat)! This alone would allow a huge population of people to move safely to linux without the fear that they will lose access to their favorite apps while at the same time they can try alternatives that will become available on linux as the population grows. Devs you are creating a huge push for linux right now. Amazing job!

Edit: clarity

Agreed. Just wanted to add that 99% of immutable/atomic distributions are working fine only with Flatpak and AppImage applications (yes, you can layer everything, but if you do, then why chose atomic distro in the first place?), so I really wish WinBoat would have a Flatpak frontend app. There is already an issue request for it.

Danik1601 avatar Oct 12 '25 00:10 Danik1601

+1 Bazzite user here. Was interested in this project after seeing twitter:@githubprojects post about this.

jaherron avatar Oct 12 '25 06:10 jaherron