winboat
winboat copied to clipboard
Podman support
Fedora comes with podman. Can you also put podman support? It should work
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.
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.
Adding on here, running the "install.bat" script in the same folder does seem to complete, but similar results for me as noted above.
+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.
+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.
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?
+1 Can't wait for this to be honest! This is the only show stopper for me at the moment.
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.
+1 Podman gang
Came here for this. +1
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.
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.
Any update on this issue for the progress made so far?
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"
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 forwardingsecurity_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibility
Screenshot
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.
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 forwardingsecurity_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibilityScreenshot
### 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'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 forwardingsecurity_opt: ["label=disable"]: Disables SELinux labeling for KVM compatibilityScreenshot
### 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.
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!
Tried the fork and it doesn't let me get past this page, even though everything is a green check:
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.
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
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).
@TibixDev So, Windows images and apps will be available system-wide for all users if this container will be deployed "system-wide"?
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 :-).
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.
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.
#285 PR related to this issue.
I came here to +1 this request, but it seems that may not be necessary! Yay!
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.
+1 Bazzite user here. Was interested in this project after seeing twitter:@githubprojects post about this.
### 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.