Code Monkey home page Code Monkey logo

zwift's Introduction

Zwift

Zwift updater image-href image-href image-href

Hello fellow zwifters, here is a docker image for running zwift on linux. It uses the companion app by zwift for linking up smart trainers and other bluetooth devices (ant devices are not supported via the companion app). The reason why I made this solution was so i could run multiple zwift instances on one machine at the same time.

The container comes pre-installed with zwift, so no setup is required, simply pull and run. It should also now support all manner of graphics cards that has gl rendering.

If you find this image useful, then feel free add me on zwift and give me a ride on from time to time.

example.gif

Prerequisites

Install

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/netbrain/zwift/master/bin/install.sh)"

This will put the zwift.sh script on your $PATH

RUN

After installation, simply run:

zwift

Note you might want to disable video screenshots (#75)

If dbus is available through a unix socket, the screensaver will be inhibited every 30 seconds to prevent xscreensaver or other programs listening on the bus from inhibiting the screen.

Configuration options

Key Default Description
USER $USER Used in creating the zwift volume zwift-$USER
IMAGE docker.io/netbrain/zwift The image to use
VERSION latest The image version/tag to use
DONT_CHECK If set, don't check for updated zwift.sh
DONT_PULL If set, don't pull for new image version
CONTAINER_TOOL Defaults to podman if installed, else docker
ZWIFT_USERNAME If set, try to login to zwift automatically
ZWIFT_PASSWORD "
WINE_EXPERIMENTAL_WAYLAND If set, try to use experimental wayland support in wine 9
NETWORKING bridge Sets the type of container networking to use.
ZWIFT_UID current users id Sets the UID that Zwift will run as (docker only)
ZWIFT_GID current users group id Sets the GID that Zwift will run as (docker only)

These environment variables can be used to alter the execution of the zwift bash script.

Examples:

DONT_PULL=1 zwift will prevent docker/podman pull before launch

CONTAINER_TOOL=docker zwift will launch zwift with docker even if podman is installed

USER=Fred zwift perfect if your neighbor fred want's to try zwift, and you don't want to mess up your zwift config.

NETWORKING=host zwift will use host networking which may be needed to have Zwift talk to WiFi enabled trainers.

ZWIFT_UID=123 ZWIFT_GID=123 zwift will run Zwift as the given uid and gid. By default Zwift runs with the uid and gid of the user that started the container. You should not need to change this except in rare cases. NOTE: This does not work in wayland only X11.

You can also set these in ~/.config/zwift/config to be sourced by the zwift.sh script on execution.

How can I persist my login information so i don't need to login on every startup?

To authenticate through Zwift automatically simply add the following file ~/.config/zwift/config:

ZWIFT_USERNAME=username
ZWIFT_PASSWORD=password

where username is your Zwift account email, and password your Zwift account password, respectively.

The credentials will be used to authenticate before launching the Zwift app, and the user should be logged in automatically in the game.

Note: This will be loaded by zwift.sh in cleartext as environment variables into the container.

Where are the saves and why do I get a popup can't write to Document Folder?

This is a hang up from previous versions, mainly with podman. delete the volumes and after re-creation it should work fine.

podman volume rm zwift-xxxxx

or

docker volume rm zwift-xxxxx

NOTE: if you see a weird volume e.g. zwift-naeva it is a hang up from the past, delete it.

I sometimes get a popup Not responding why?

For Gnome it is just timing out before zwift responds, just extend the timeout.

gsettings set org.gnome.mutter check-alive-timeout 60000

How do I connect my trainer, heart rate monitor, etc?

You can use your phone as a bridge.

For example, your Wahoo Kickr and Apple Watch conect to the Zwift Companion app on your iPhone; then the Companion app connects over wifi to your PC running Zwift.

How can I add custom .zwo files?

The folder's name that receives .zwo files is dynamic based on your user's numeric ID. This example works considering you have a single user in the same docker volume. After you've downloaded/created your .zwo files use the following script to copy it to the correct folder:

# docker
docker run -v zwift-$USER:/data --name zwift-copy-op busybox ls /data/Workouts | xargs -I {} docker cp my-workouts-file.zwo zwift-copy-op:/data/Workouts/{}
docker rm zwift-copy-op

#podman
@TBD

If you have multiple users at the same volume you might want to find out which IDs exist in your setup and map the ID for each user to copy correctly to the corresponding user. An example of this would be:

# docker
docker run -v zwift-$USER:/data --name zwift-copy-op busybox true
docker cp my-workouts-file.zwo zwift-copy-op:/data/Workouts/1234
docker rm zwift-copy-op

#podman
@TBD

How can I build the image myself?

./bin/build-image.sh

How can I fetch the image from docker hub?

https://hub.docker.com/r/netbrain/zwift

docker pull netbrain/zwift:$VERSION # or simply latest

How can I update Zwift?

The zwift.sh script will update zwift by checking for new image versions on every launch, however if you are not using this then you will have to pull netbrain/zwift:latest from time to time in order to be on the latest version.

There is a github action in place that will update zwift on a scheduled basis and publish new versions to docker hub.

Contibute

If you would like to contribute, then please by all means I'll accept PR's. A good starting point would be to see if there's any open issues that you feel capable of doing. Let me know if I can help with anything.

Show and tell ๐Ÿ™Œ

Check out our Show and tell category in discussions and see how other people are using this solution, feel free to contribute your own tips and tricks :)

Alternative's to this repository

zwift's People

Contributors

borislassort avatar carlohamalainen avatar december-soul avatar fandan avatar gallais avatar hobeone avatar jonathanglima avatar netbrain avatar perrin4869 avatar quietvoid avatar shedc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zwift's Issues

Missing documents folder

Hi!

Ive tried to get this started and all seems well. But when zwift is about to start it complains about missing Documents folder.

I have tried a newly installed Ubuntu 22.04 both with english and swedish language. I thought it might be looking for "Documents" and in swedish the name is "Dokument". I tried creating Documents folders everywhere to solve this and also create a zwift folder on Desktop just in case.

20221111_181957

Refactor github action "Zwift script files updater"

Today the script files updater changes the current container image upon changes to the entrypoint script (aswell as maybe som other ones)

We should probably refactor this to trigger on changes to entrypoint and other scripts as well as the Dockerfile, where last mentioned will have to run a build from scratch instead of a simple commit.

[HELP] Zwift does not have write access to Download and Documents folder

Host information

i.e รนname -a`

Linux myubuntu 5.15.0-94-generic #104~20.04.1-Ubuntu SMP Tue Jan 16 13:34:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

Container information

i.e docker --version

Docker version 25.0.3, build 4debf41

Hardware information

i.e lspci | egrep -i "(vga|3d)"

00:17.0 SATA controller: Intel Corporation Device 43d3 (rev 11)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1fbc (rev a1)

Issue details

Fresh docker installation. When running zwift with no further configuration (no custom volume etc.) I get a wine popup saying:
image

Nothing further happens, the container keeps on running, but without any graphical output.

Output of zwift command:

+ IMAGE=docker.io/netbrain/zwift
+ VERSION=latest
+ [[ ! -n '' ]]
++ command -v podman
+ [[ -x '' ]]
+ CONTAINER_TOOL=docker
+ [[ ! -n '' ]]
+ docker pull docker.io/netbrain/zwift:latest
latest: Pulling from netbrain/zwift
Digest: sha256:cf86bf96337b9d43e97c47bef19128801e45c2d9c47753fc8e370718343f9ad3
Status: Image is up to date for netbrain/zwift:latest
docker.io/netbrain/zwift:latest
+ [[ -f /proc/driver/nvidia/version ]]
+ VGA_DEVICE_FLAG='--gpus all'
+++ '[' docker = podman ']'
++ docker run -d --rm --privileged -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/785946/pulse:/run/user/1000/pulse -v zwift-user:/home/user/Zwift --gpus all docker.io/netbrain/zwift:latest
+ CONTAINER=403591d99c0118f1650e3e478554356ab6747956e3134ae63ed1dcb2d5fe6e46
+ [[ -z '' ]]
++ docker inspect '--format={{ .Config.Hostname  }}' 403591d99c0118f1650e3e478554356ab6747956e3134ae63ed1dcb2d5fe6e46
+ xhost +local:403591d99c01
non-network local connections being added to access control list

[HELP] Can not run swifter after install "The path /tmp/.X11-unix is not shared from the host and is not known to Docker."

Container information
Docker version 25.0.2, build 29cf629

Issue details

i.e Having issues with launching zwift, tried running the gl example (#54 (comment))

Command response after "install" and try to run with "zwift" command

  • IMAGE=docker.io/netbrain/zwift
  • VERSION=latest
  • [[ ! -n '' ]]
    ++ command -v podman
  • [[ -x '' ]]
  • CONTAINER_TOOL=docker
  • [[ ! -n '' ]]
  • docker pull docker.io/netbrain/zwift:latest
    latest: Pulling from netbrain/zwift
    Digest: sha256:2cf704530cacef40d130f6f0841e9bda0b1d8815d4e5c4cbf7f2533bc88d520a
    Status: Image is up to date for netbrain/zwift:latest
    docker.io/netbrain/zwift:latest

What's Next?

  1. Sign in to your Docker account โ†’ docker login
  2. View a summary of image vulnerabilities and recommendations โ†’ docker scout quickview docker.io/netbrain/zwift:latest
  • [[ -f /proc/driver/nvidia/version ]]
  • VGA_DEVICE_FLAG='--gpus all'
    +++ '[' docker = podman ']'
    ++ docker run -d --rm --privileged -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pulse:/run/user/1000/pulse -v zwift-florian:/home/user/Zwift --gpus all docker.io/netbrain/zwift:latest
    docker: Error response from daemon: Mounts denied:
    The path /tmp/.X11-unix is not shared from the host and is not known to Docker.
    You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing.
    See https://docs.docker.com/ for more info.
    Preferences

Nvidia Cards / Arch Linux - CPU is used

Hi,

I had the issue that my NVIDIA GeForce RTX 4060 Ti with installed proprietary dirver was detected but the CPU was still used.
So I searched for a solution.
Adding the -e NVIDIA_DRIVER_CAPABILITIES=all to the docker run command solved the issue on my machine.
Maybe this could also help other Linux Zwifters :-)

Zwift prohibitively slow.

After starting, Zwift runs at most with 1 fps.

6.1.71-1-MANJARO
Nvidia driver 545.29.06
RTX 2060 6GB

Output of docker logs:

  • ZWIFT_HOME='/home/user/.wine/drive_c/Program Files (x86)/Zwift'
  • mkdir -p '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
  • cd '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
  • '[' '' = update ']'
    ++ ls -A .
  • '[' '!' 'ANT_DLL.dll
    APR2007_xinput_x64.cab
    APR2007_xinput_x86.cab
    BleWin10Lib.dll
    BleWin10Lib_V2.dll
    CloseLauncher.exe
    DSETUP.dll
    DXSETUP.exe
    Feb2010_X3DAudio_x64.cab
    starting zwift...
    Feb2010_X3DAudio_x86.cab
    Jun2010_XAudio_x64.cab
    Jun2010_XAudio_x86.cab
    Launcher_ver_cur.xml
    Patcher.dll
    VC_redist.x64.exe
    WebView2Loader.dll
    Webview2Setup.exe
    Windows ANT Dongle Driver
    ZwiftApp.exe
    ZwiftHelper.exe
    ZwiftLauncher.exe
    ZwiftLauncher.exe.config
    ZwiftSetup.exe
    ZwiftWindowsCrashHandler.exe
    Zwift_1.0.124332_93535116_manifest.xml
    Zwift_ver_cur.124332.xml
    Zwift_ver_cur_filename.txt
    assets
    bink2w64.dll
    data
    dotnet-v4.7.2-installer.exe
    dsetup32.dll
    dxupdate.cab
    unins000.dat
    unins000.exe' ']'
  • echo 'starting zwift...'
  • wine64 start ZwiftLauncher.exe SilentLaunch
    0050:err:vulkan:wine_vk_init Failed to load libvulkan.so.1.
    ++ winedbg --command 'info proc'
    ++ grep -P ZwiftLauncher.exe
    ++ grep -oP '^\s\K.+?(?=\s)'
    0148:err:ole:CoGetContextToken apartment not initialised
  • LAUNCHER_PID_HEX=00000134
  • LAUNCHER_PID=308
  • [[ -f /home/user/Zwift/.zwift-credentials ]]
  • wine64 start /exec /bin/runfromprocess-rs.exe 308 ZwiftApp.exe
    0138:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Foundation.Diagnostics.AsyncCausalityTracer"
  • sleep 3
    01e8:err:vulkan:wine_vk_init Failed to load libvulkan.so.1.
  • pgrep -f ZwiftApp.exe
  • echo 'Killing uneccesary applications'
    Killing uneccesary applications
  • pkill ZwiftLauncher
  • pkill ZwiftWindowsCra
  • wineserver -w

Any advice appreciated, thanks a lot.

Container exits with errors

I'm getting the following output logs when running the container manually, not sure how to troubleshoot ๐Ÿ‘

$ docker run               --rm    --privileged    -e DISPLAY=$DISPLAY     -v /tmp/.X11-unix:/tmp/.X11-unix        -v /run/user/$UID/pulse:/run/user/1000/pulse    -v $ZWIFT_HOME:/home/user/Zwift         $VGA_DEVICE_FLAG      $IMAGE:$VERSION

...

+ echo 'starting zwift...'
+ wine64 start ZwiftLauncher.exe
0050:err:ole:start_rpcss Failed to start RpcSs service
+ wine64 start RunFromProcess-x64.exe ZwiftLauncher.exe ZwiftApp.exe
+ pgrep ZwiftApp.exe
Waiting for zwift to start ...
+ echo 'Waiting for zwift to start ...'
+ sleep 1
0184:err:ole:CoGetContextToken apartment not initialised
+ pgrep ZwiftApp.exe
+ echo 'Killing uneccesary applications'
+ pkill ZwiftLauncher
Killing uneccesary applications
+ pkill MicrosoftEdgeUp
+ pkill ZwiftWindowsCra

Any idea in which direction I should look for help?

Update from 1.47.0 to 1.48.0 failing

The reason is due to how zwift has changed the way they set the current version number.

Pre 1.48.0 there was a file Zwift_ver_cur.xml where we could fetch the version number, now however they have two files.

Zwift_ver_cur_filename.txt which points to the actual version file.
Zwift_ver_cur.120544.xml which seems to contain somewhat the same format as Zwift_ver_cur.xml used to contain. The difference being that they now include which seems to be a git hash in the version number. Not sure if we need to handle this, so ignoring for now.

This will however mean that we need to build zwift from scratch again as we need to update the entrypoint script.

A better option would be for the zwift update github action to include the latest entrypoint script if it's different.

nor the container nor the application starts

Fedora installation when executing the image via docker desktop it dies
[vassily@fedora ~]$ inxi -G
Graphics:
Device-1: Intel WhiskeyLake-U GT2 [UHD Graphics 620] driver: i915 v: kernel
Device-2: Chicony Integrated Camera driver: uvcvideo type: USB
Display: wayland server: X.org v: 1.20.14 with: Xwayland v: 22.1.9
compositor: kwin_wayland driver: N/A resolution: 1536x864
API: EGL v: 1.5 drivers: iris,swrast
platforms: wayland,x11,surfaceless,device
API: OpenGL v: 4.6 vendor: intel mesa v: 23.1.8 renderer: Mesa Intel UHD
Graphics 620 (WHL GT2)
API: Vulkan v: 1.3.243 drivers: intel,llvmpipe surfaces: xcb,xlib,wayland

Docker log:
2023-10-22 23:46:28 + ZWIFT_HOME='/home/user/.wine/drive_c/Program Files (x86)/Zwift'
2023-10-22 23:46:28 + mkdir -p '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
2023-10-22 23:46:28 + cd '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
2023-10-22 23:46:28 + '[' '' = update ']'
2023-10-22 23:46:28 ++ ls -A .
2023-10-22 23:46:28 + '[' '!' 'ANT_DLL.dll
2023-10-22 23:46:28 APR2007_xinput_x64.cab
2023-10-22 23:46:28 APR2007_xinput_x86.cab
2023-10-22 23:46:28 BleWin10Lib.dll
2023-10-22 23:46:28 BleWin10Lib_V2.dll
2023-10-22 23:46:28 CloseLauncher.exe
2023-10-22 23:46:28 DSETUP.dll
2023-10-22 23:46:28 DXSETUP.exe
2023-10-22 23:46:28 Feb2010_X3DAudio_x64.cab
2023-10-22 23:46:28 Feb2010_X3DAudio_x86.cab
2023-10-22 23:46:28 Jun2010_XAudio_x64.cab
2023-10-22 23:46:28 Jun2010_XAudio_x86.cab
2023-10-22 23:46:28 Launcher_ver_cur.xml
2023-10-22 23:46:28 Patcher.dll
2023-10-22 23:46:28 VC_redist.x64.exe
2023-10-22 23:46:28 WebView2Loader.dll
2023-10-22 23:46:28 Webview2Setup.exe
2023-10-22 23:46:28 Windows ANT Dongle Driver
2023-10-22 23:46:28 ZwiftApp.exe
2023-10-22 23:46:28 ZwiftHelper.exe
2023-10-22 23:46:28 ZwiftLauncher.exe
2023-10-22 23:46:28 ZwiftLauncher.exe.config
2023-10-22 23:46:28 ZwiftSetup.exe
2023-10-22 23:46:28 ZwiftWindowsCrashHandler.exe
2023-10-22 23:46:28 Zwift_1.0.122008_7f860a4e_manifest.xml
2023-10-22 23:46:28 Zwift_ver_cur.xml
2023-10-22 23:46:28 Zwift_ver_cur_filename.txt
2023-10-22 23:46:28 assets
2023-10-22 23:46:28 bink2w64.dll
2023-10-22 23:46:28 data
2023-10-22 23:46:28 dotnet-v4.7.2-installer.exe
2023-10-22 23:46:28 dsetup32.dll
2023-10-22 23:46:28 dxupdate.cab
2023-10-22 23:46:28 unins000.dat
2023-10-22 23:46:28 unins000.exe' ']'
2023-10-22 23:46:28 + echo 'starting zwift...'
2023-10-22 23:46:28 + wine64 start ZwiftLauncher.exe SilentLaunch
2023-10-22 23:46:28 starting zwift...
2023-10-22 23:46:29 0050:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
2023-10-22 23:46:29 0050:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
2023-10-22 23:46:29 0050:err:systray:initialize_systray Could not create tray window
2023-10-22 23:46:30 ++ winedbg --command 'info proc'
2023-10-22 23:46:30 ++ grep -P ZwiftLauncher.exe
2023-10-22 23:46:30 ++ grep -oP '^\s\K.+?(?=\s)'
2023-10-22 23:46:30 0148:err:ole:CoGetContextToken apartment not initialised
2023-10-22 23:46:30 + LAUNCHER_PID_HEX=00000134
2023-10-22 23:46:30 + LAUNCHER_PID=308
2023-10-22 23:46:30 + [[ -f /home/user/Zwift/.zwift-credentials ]]
2023-10-22 23:46:30 + wine64 start /exec /bin/runfromprocess-rs.exe 308 ZwiftApp.exe
2023-10-22 23:46:31 0138:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Foundation.Diagnostics.AsyncCausalityTracer"
2023-10-22 23:46:31 + sleep 3
2023-10-22 23:46:31 0198:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
2023-10-22 23:46:31 0198:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
2023-10-22 23:46:32 0138:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
2023-10-22 23:46:32 0138:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.
2023-10-22 23:46:33 ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
2023-10-22 23:46:33 ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
2023-10-22 23:46:33 ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
2023-10-22 23:46:33 ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
2023-10-22 23:46:33 ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
2023-10-22 23:46:33 ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
2023-10-22 23:46:34 + pgrep ZwiftApp.exe
2023-10-22 23:46:34 + echo 'Killing uneccesary applications'
2023-10-22 23:46:34 + pkill ZwiftLauncher
2023-10-22 23:46:34 Killing uneccesary applications

alternatively when executing "zwift" command nothing happens:

vassily@fedora ~]$ CONTAINER_TOOL=docker zwift

  • IMAGE=docker.io/netbrain/zwift
  • VERSION=latest
  • [[ ! -n docker ]]
  • [[ ! -n '' ]]
  • docker pull docker.io/netbrain/zwift:latest
    latest: Pulling from netbrain/zwift
    Digest: sha256:2b27e9bedc11f189b7237cba6a5c15e805ab958e9b62ce949f07c1237dc8a62e
    Status: Image is up to date for netbrain/zwift:latest
    docker.io/netbrain/zwift:latest

What's Next?
View a summary of image vulnerabilities and recommendations โ†’ docker scout quickview docker.io/netbrain/zwift:latest

  • [[ -f /proc/driver/nvidia/version ]]
  • VGA_DEVICE_FLAG='--device /dev/dri:/dev/dri'
    +++ '[' docker = podman ']'
    ++ docker run -d --rm --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pulse:/run/user/1000/pulse -v zwift-vassily:/home/user/Zwift --device /dev/dri:/dev/dri docker.io/netbrain/zwift:latest
  • CONTAINER=673aef20c7119041f49ac72ac50eb08e64a3260d807cde41d49b3c65bfdd0412
  • [[ -z wayland-0 ]]
    [vassily@fedora ~]$

I dont understand what is missing.

Full Screen

First, thank you very much for this great easy way to run Zwift on Linux! Really appreciate the work!

In your screen cast it looks like you have Zwift running full screen. I've installed on my Ubuntu 22.04 laptop and also my Ubuntu 18.04 desktop and both come up windowed (taking up the the screen other than the title bar on the window and my Ubuntu dock). Is there a command I need to pass when launching docker to get it to go full screen?

Podman + PRIME (dual gpu intel + nvidia) not working

When using PRIME the following command works for offloading zwift onto the nvidia gpu in docker.

docker run  -d \
  -e __NV_PRIME_RENDER_OFFLOAD=1 \
  -e __GLX_VENDOR_LIBRARY_NAME=nvidia \
  --rm \
  --privileged \
  -e DISPLAY=:0 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v /run/user/1000/pulse:/run/user/1000/pulse \
  -v zwift-netbrain:/home/user/Zwift \
  --gpus device=GPU-f9b76734-5873-5957-26f3-99604ac5f15a docker.io/netbrain/zwift:latest

However the equivalent command for podman launches the zwift instance on the intel graphics card.

Should probably look into the following resources in order to determine how this can be solved for podman.

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/cdi-support.html

List of versions known to build succesfully using debian bookworm

wine, winetricks, wine-mono
zwift_build (8.0.2~bookworm-1, 20210206, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20210206, 7.4.0)
zwift_build (8.0.0.0~bookworm-1, 20210206, 7.4.0)
zwift_build (7.0.2~bookworm-1, 20210206, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20210206, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20210206, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20210825, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20220328, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20220331, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20220411, 7.0.0)
zwift_build (7.0.0.0~bookworm-1, 20220521, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20210825, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20220328, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20220331, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20220411, 7.0.0)
zwift_build (7.0.1~bookworm-1, 20220521, 7.0.0)
zwift_build (7.0.2~bookworm-1, 20210825, 7.0.0)
zwift_build (7.0.2~bookworm-1, 20220328, 7.0.0)
zwift_build (7.0.2~bookworm-1, 20220331, 7.0.0)
zwift_build (7.0.2~bookworm-1, 20220411, 7.0.0)
zwift_build (7.0.2~bookworm-1, 20220521, 7.0.0)
zwift_build (8.0.0.0~bookworm-1, 20210825, 7.4.0)
zwift_build (8.0.0.0~bookworm-1, 20220328, 7.4.0)
zwift_build (8.0.0.0~bookworm-1, 20220331, 7.4.0)
zwift_build (8.0.0.0~bookworm-1, 20220411, 7.4.0)
zwift_build (8.0.0.0~bookworm-1, 20220521, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20210825, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20220328, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20220331, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20220411, 7.4.0)
zwift_build (8.0.1~bookworm-1, 20220521, 7.4.0)
zwift_build (8.0.2~bookworm-1, 20210825, 7.4.0)
zwift_build (8.0.2~bookworm-1, 20220328, 7.4.0)
zwift_build (8.0.2~bookworm-1, 20220331, 7.4.0)
zwift_build (8.0.2~bookworm-1, 20220411, 7.4.0)
zwift_build (8.0.2~bookworm-1, 20220521, 7.4.0)

[HELP]issue installing using podman

hello,

i was digging around and i see in zwift.sh you recomand to use podman.
is i install zwift with sudo than i can't launch it becouse permmisions issues becouse podman should be run as normal user.
But when i to install as user after he pulls the files from server it eats up all the space on the disk (around 30 GB)
is there a way to use in coretly with podman or just i should try to use docker?

Thank you

Nix flake

Would be nice to have a nix flake that could build several variants of Zwift.

  • A variant that would build a container as today
  • A variant that would build a minimal container that uses a volume for Zwift and on first run it will simply start the Zwift download silently
  • A variant that would install wine binary and install Zwift and it's dependencies and launch Zwift on host machine instead of a container
  • A variant that would compile wine (statically if possible) and launch Zwift on host instead of container

Could then have a GitHub action with matrices build that would compile/install wine for different architectures, both for containers but also native builds.

Volume suddenly very high and a bit distorted

Hi!

Not sure what is causing this but everything seems to work fine when logging in to Zwift but sometimes when I start an workout and that screen appear the sound switches to 100%. My volume in the game is set very low (near the bottom). When this happens and I go to settings in zwift the volume is still set to near the bottom, If I then restart zwift it solves itself. It happens very often, about 30-40% of all the workouts.

Can it be something with wine and zwift ?

I am running newest Ubuntu Desktop 22:04:1.

And your latest release, I am using your shell script to start and stop.

/Daniel

[SOLVED] Add support for uploading ZWO files

I'm not able to sync Zwift with Training Peaks due to issues that are non related to this repo (mainly communication between servers, it seems). So I'd love to import custom workouts to Zwift using .zwo files.

It seems that Zwift is able to read those files under a Documents folder: https://support.zwift.com/en_us/custom-workouts-ryGOTVEPs#Importing_Custom_Workouts_Today's_Plan_or_TrainingPeaks

Is there any way to bind that folder to the current docker execution so we could import .zwo files?

PS: Congrats on the repo. It's awesome and it saved me a bunch of time! Cheers!

Docker gui not showing with wayland and Fedora 38

With Wayland and Fedora 38 the container will start just fine, but the gui never pops up. No obvious error codes or stack trace. When I switch over to x11 everything works just fine. I tried removing the Wayland check and just forcing the xhost +local part of the code to run at the end, but issue persists.

Sorry I don't have more details or a solution. Not a blocker for me, but figured I would call it out.

Retrieve activity after crash/battery empty

Hello,

First off, thanks for making this, it works flawlessly on Linux Mint!
I do have one question thought. During one activity, my laptop ran out of battery, and the activity wasn't saved/recorded. Normally, one could retrieve such an activity from a specific folder, (for windows "%USER%\Documents\Zwift\Activities"). I was just wondering if this is possible with the docker container? I guess not, since, as far as I can see, the container is created and deleted each time the script is ran?
Thanks in advance!

Zwift is not stating

I installed docker on ubuntu and when starting zwift (sudo zwift) its not starting
See the terminal output

  • IMAGE=docker.io/netbrain/zwift
  • VERSION=latest
  • [[ ! -n '' ]]
    ++ command -v podman
  • [[ -x '' ]]
  • CONTAINER_TOOL=docker
  • [[ ! -n '' ]]
  • docker pull docker.io/netbrain/zwift:latest
    latest: Pulling from netbrain/zwift
    Digest: sha256:b530163c2430b87a3b74087226be7b4dfa53166331246bde36e460f42934956f
    Status: Image is up to date for netbrain/zwift:latest
    docker.io/netbrain/zwift:latest
  • [[ -f /proc/driver/nvidia/version ]]
  • VGA_DEVICE_FLAG='--device /dev/dri:/dev/dri'
    +++ '[' docker = podman ']'
    ++ docker run -d --rm --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/0/pulse:/run/user/1000/pulse -v zwift-root:/home/user/Zwift --device /dev/dri:/dev/dri docker.io/netbrain/zwift:latest
  • CONTAINER=bc495a799fb0d4f56839af516edf605f33e10e521e414a5f92aff67edad63ce8
  • [[ -z '' ]]
    ++ docker inspect '--format={{ .Config.Hostname }}' bc495a799fb0d4f56839af516edf605f33e10e521e414a5f92aff67edad63ce8
  • xhost +local:bc495a799fb0
    non-network local connections being added to access control list

Have you anny idea what in can be?

Thank you

Zwift is crashing during workout

After 20-30 minutes of riding a workout, Zwift is freezing and would crash.

To Reproduce
Steps to reproduce the behavior:

  1. Start Zwift via Docker
  2. Start a workout
  3. Ride for about 20-30 min
  4. Zwift freezes, and after a minute crashes finally.

Expected behavior
Expected behavior would be no freeze or crashing.

Screenshots
No screenshots available.

Additional context
I have a relatively new laptop with TuxedoOS (based on Ubuntu 23.10).

Problem with companion app

Hi,

I'm trying to setup the companion app to bridge my connected trainer.
When I launch zwift, I can see the bluetooth device, and connect to it, but as soon as I live the "devices window" and go on the riding interface, the "watt" becomme grey and it indicate the device is not available. I soon as I reopen the device windows, the powermeter and resistance device reconnect immediatly.... But disconnect again as soon as I close it.

Anyone having the same problem ??

thanks
Anthony.

Wayland and podman

Seems the --userns keep-id flag is required for podman to work under wayland, atleast on my test setup.

The following command gave me a proper zwift window

podman run -d --rm --privileged -e "DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pulse:/run/user/1000/pulse -v /home/netbrain/.config/zwift/netbrain:/home/user/Zwift --gpus all --userns keep-id docker.io/netbrain/zwift:latest

Not sure why this is required tho.

Can anyone else confirm this aswell?

Tried a ride twice, froze and crashed both times as I was getting an award.

Describe the bug
Tried a ride twice, froze and crashed both times as I was getting an award. Using the Zwift companion app with it.

To Reproduce
Steps to reproduce the behavior:
Start ride
Wait until some "award notification" shows (I.E. "You've unlocked the Zwift Glasses"
Game freezes....eventually crashes to terminal.

Expected behavior
Able to finish and save ride.

Screenshots
N/A

Additional context
Running EndeavourOS All AMD setup.

[Question/Suggestion] Headless & Remote Access

@netbrain I'm thrilled to see that this exists! I haven't been able to use it yet, though since my docker implementation lives on a headless server (no X11) in a closet.

I've looked at your shell script to see if I could glean any kind of information that might lead me to getting this done on my own, but I'm quite frankly out of my depth on that.

What are the odds that your container can run in this type of environment with something like noVNC, Guacamole, or similar making it accessible via web browser (for maximum accessibility)?

Edit I should have mentioned that I understand there would still be a prerequisite for some sort of graphics acceleration, whether it be nvidia, amd, etc. In my case, I'm already sharing an nvidia GPU for acceleration.

OpenGL error on nvidia

Zwift did not open after running the zwift script. The container was properly running.

When manually starting Zwift inside the container, there was the following error:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext

Changing VGA_DEVICE_FLAG="--gpus all" to VGA_DEVICE_FLAG="--device nvidia.com/gpu=all" did fix the issue for me. I suspect there were some changes in the nvidia-container-toolit. This fix might require generating a CDI specification as shown here https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.14.3/cdi-support.html.

nvidia-container-toolkit: 1.14.3
podman: 4.7.2

Error accessing writable storage

wine64 start ZwiftLauncher.exe
wine64 start RunFromProcess-x64.exe ZwiftLauncher.exe ZwiftApp.exe

Once wine64 fires up Zwift I get:
image

Error accessing writable storage.

Error accessing writable storage

Hi,

I'm using the recommended install method and I get the following error when starting Zwift:
Screenshot from 2024-02-18 08-00-01

But if I change this in /usr/local/bin/zwift, it works.

<     -v zwift-$USER:/home/user/Zwift \
---
>     -v zwift-$USER:/home/$USER/Zwift \

I'm not sure why but this break the auto-login because the script looks for home/user/Zwift. I'm on Pop!_OS 22.04.

Outdated drivers / wine base image

I was curious to try this out but the netbrain/wine base image seems to be based on bullseye and doesn't have new enough drivers for my Ryzen 6850U. It also doesn't have a Docker file either, so I can't build my own easily without reverse engineering it. I'd like to start with an ubuntu:mantic base really.

Add support for wayland

In issue #13 it seems that the Zwift startup script doesnt support Wayland. Implement support for running Zwift under Wayland.

zwift does not start if an additional monitor is plugged in

Hi!
I have the problem that if an additional monitor is plugged in (HDMI) and not necessarily active, the zwift docker app does not start. However, if the monitor is plugged in after zwift has started it works, and I can use it with zwift with that monitor as well.

--
Linux arch 6.5.9-arch2-1 #1 SMP PREEMPT_DYNAMIC Thu, 26 Oct 2023 00:52:20 +0000 x86_64 GNU/Linux
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GLM [Quadro M1200 Mobile] (rev a2)

ANT+ USB

can you add ANT+ support?

i have taken your docker image and add this howto
https://github.com/Tigge/openant

after that the python scan.py can find my ANT+ HR Strap under linux

Zwift did not find them :-(
Maybe it is a wine problem.

Here are some commands i did

    ls /dev/ttyUSB0  
    sudo apt update
    sudo apt install git python3-pip
    git clone https://github.com/Tigge/openant.git
    cd openant/
    sudo apt-get install python-setuptools
    sudo python3 setup.py install
    sudo pip install pyusb
    sudo python3 setup.py udev_rules
    cd examples/
    sudo python3 scan.py

Scan shows, so ANT+ works in your docker

sudo python3 scan.py 
Driver available: [<class 'ant.base.driver.USB2Driver'>, <class 'ant.base.driver.USB3Driver'>]
 - Using: <class 'ant.base.driver.USB2Driver'>
array('B', [4, 0, 98, 196, 136, 200, 58, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [4, 0, 163, 204, 203, 208, 60, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [132, 0, 203, 208, 31, 213, 61, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [4, 0, 31, 213, 121, 217, 62, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [132, 0, 124, 221, 51, 225, 64, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [4, 0, 124, 221, 51, 225, 64, 57, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [132, 0, 51, 225, 134, 228, 65, 58, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120
array('B', [4, 0, 153, 231, 176, 234, 67, 60, 128, 114, 237, 120, 1])
New Device Found: 60786 of type 120

Zwift password

Hi.
Every time I start zwift docker the app welcomes me with login dialog, where email is already entered, but password field is blank.

I'd like to ask if there is an option to make zwift docker auto login to my account or just not forgetting password :)

Check or set permissions on pulseaudo directory

When setting this up on my machine (Debian Sid) I couldn't get audio working at first. Debugging it showed that the pulse directory being mapped into the container didn't have permissive enough permissions for the user inside the container to open it.

My UID is 1010 where the user inside the container is UID 1000

/run/user/1010/pulse was set as 0700 so the container user couldn't open it to get to the /run/user/1010/pulse/native socket (which is set as 0666).

I added a line with chmod 755 "/run/user/$UID/pulse" to the zwift.sh file which fixes the issue. I'm not sure if this is the best way or might open potential security issues.

Instead of this would it be possible to set the UID & GID of the user created in the container?

where is the volume zwift-$USER located?

Thank you very much! A very good and simple description!!
I do not know where the volume zwift-$USER is located, so I changed the line to -v /home/$USER/zwift-$USER:/home/user/Zwift \
and I create a directory zwift-franzel in my home directory, now it is working fine for me!

Zwift failing to update from 1.52.0 to 1.52.2

From the github actions log, it seems that the wine64 start ZwiftLauncher.exe SilentLaunch results with the following exception.

0138:err:ole:CoGetContextToken apartment not initialised
0130:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Foundation.Diagnostics.AsyncCausalityTracer"
0158:err:eventlog:ReportEventW L"Application: ZwiftLauncher.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: exception code c000001d, exception address 00007FB4D57CD01C\n"
wine: Unhandled illegal instruction at address 00007FB4D57CD01C (thread 0158), starting debugger...

Zwift docker error: no Documents folder

Hi,

First of all thank you for you contributions and help trying to give access to zwift for unix users !

I have recently tried running the app through one of your docker containers but I always run into this error:

There was an error accessing to your Documents folder. There was also an error trying to create a Zwift folder on your Desktop as a fall-back. This means Zwift can't save any files. Please contact Zwift Support.

I'm using ubuntu20.04. I've tried latest and 1.19.1 docker tags with no success.

Is it possible I'm facing a privilege kind of error here ? I assume I am missing something but can't find what so far. Maybe you will be able to help me resolving this issue.

Thank you for your help.

Permission issues when trying to start Zwift

Hello there!
Today I tried to get Zwift running on my Ubuntu-machine. Therefore, I took the following steps:

  1. Installing docker engine (following instructions provided in https://docs.docker.com/engine/install/ubuntu/ and https://docs.docker.com/engine/install/linux-postinstall/)
  2. Installing the NVIDIA Container Toolkit (https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
  3. sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/netbrain/zwift/master/bin/install.sh)"
  4. zwift

The execution of the last command resulted in a popup, which told me that Zwift is not able to write the storage.
This issue was resolved by performing sudo chown -R $USER:$USER /var/lib/docker/volumes/zwift-henning which seemed somehow intuitive. Now it works divinely, thanks a lot for this project!
Is it possible to prevent this from happening at all (I'm not familiar with Docker)? If not, this workaround might be add to the README.md.
Cheers!

docker can't find libnvidia-ml.so.1

It's looking like when I envoke zwift.sh, the nvidia-container-cli can't find libnvidia-ml.so.1. Transcript below.

gregh@Iago:~$ zwift.sh
+ ZWIFT_HOME=/home/gregh/.config/zwift/gregh
+ mkdir -p /home/gregh/.config/zwift/gregh
+ IMAGE=docker.io/netbrain/zwift
+ VERSION=latest
+ mkdir -p /home/gregh/.config/zwift/gregh
+ [[ ! -n '' ]]
++ command -v podman
+ [[ -x '' ]]
+ CONTAINER_TOOL=docker
+ [[ ! -n '' ]]
+ docker pull docker.io/netbrain/zwift:latest
latest: Pulling from netbrain/zwift
Digest: sha256:f17fe247e55c70c0d8726a920cec45418a8e1a40190d967c8638b03cdd6b3444
Status: Image is up to date for netbrain/zwift:latest
docker.io/netbrain/zwift:latest
+ [[ -f /proc/driver/nvidia/version ]]
+ VGA_DEVICE_FLAG='--gpus all'
++ docker run -d --rm --privileged -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pulse:/run/user/1000/pulse -v /home/gregh/.config/zwift/gregh:/home/user/Zwift --gpus all docker.io/netbrain/zwift:latest
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.
+ CONTAINER=cc6105c56ab22531595581ee6efeb74aee627afb231b85d959fac4f5cf55fee6
+ [[ -z '' ]]
++ docker inspect '--format={{ .Config.Hostname  }}' cc6105c56ab22531595581ee6efeb74aee627afb231b85d959fac4f5cf55fee6
Error: No such object: cc6105c56ab22531595581ee6efeb74aee627afb231b85d959fac4f5cf55fee6
+ xhost +local:
non-network local connections being added to access control list

Ubuntu reports the following version of nvidia:

gregh@Iago:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.113.01  Tue Sep 12 19:41:24 UTC 2023
GCC version: 

Looking at nvidia-container-cli, it seems to be in the know of the specific libraries it needs:

gregh@Iago:~$ nvidia-container-cli list
/dev/nvidiactl
/dev/nvidia-uvm
/dev/nvidia-uvm-tools
/dev/nvidia-modeset
/dev/nvidia0
/usr/bin/nvidia-smi
/usr/bin/nvidia-debugdump
/usr/bin/nvidia-persistenced
/usr/bin/nvidia-cuda-mps-control
/usr/bin/nvidia-cuda-mps-server
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-cfg.so.535.113.01
/usr/lib/x86_64-linux-gnu/libcuda.so.535.113.01
/usr/lib/x86_64-linux-gnu/libcudadebugger.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-allocator.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-pkcs11-openssl3.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-nvvm.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-ngx.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-encode.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-opticalflow.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvcuvid.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-eglcore.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-tls.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-glsi.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-fbc.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-rtcore.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvoptix.so.535.113.01
/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.535.113.01
/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.535.113.01
/usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.535.113.01
/usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.535.113.01
/usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.535.113.01
/run/nvidia-persistenced/socket
/lib/firmware/nvidia/535.113.01/gsp_ga10x.bin
/lib/firmware/nvidia/535.113.01/gsp_tu10x.bin

I can see the libraries exist both as the base .1 library and as the specific for this driver:

gregh@Iago:~$ ls -al /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
lrwxrwxrwx 1 root root 26 Sep 25 04:32 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 -> libnvidia-ml.so.535.113.01
gregh@Iago:~$ ls -al /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.535.113.01
-rw-r--r-- 1 root root 1819968 Sep 25 04:32 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.535.113.01

I'm not sure if this an issue with this docker or with my configuration of the nvidia docker. Looking to see if anyone else has a clue.

Is there a way to edit Zwift config files?

Hi all, I'm using this on my Linux PC and it's working better than I ever dreamed (works better than my other Windows PC).
But, I'd like to change the graphics a bit and put a FPS counter, in Windows I can find the config files, in this solution I couldn't find the config files.

I searched in the mountpoint (/var/lib...) and in the docker volume (mounting it with BusyBox) and didn't found anything.

Thanks in advance

Zwift doesn't start with 1.55.0

Hello,

Since this morning, I'm facing an issue with the latest image (digest ac9eb7f0a269, v1.55.0).

Zwift doesn't start and instead I get two error popups from Wine:

Wine
The Wine configuration in /home/user/.wine is being updated, please wait...

rundll32.exe - This applicat...
This application could not be started.
Do you want to view information about this issue?

The last image working fine for me is digest ad3bca953cb1 v.1.54.0 from a few days ago. When pinning the image to this one, everything works fine.

I didn't have time to troubleshoot more, here are the container logs:

+ ZWIFT_HOME='/home/user/.wine/drive_c/Program Files (x86)/Zwift'
+ mkdir -p '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
+ cd '/home/user/.wine/drive_c/Program Files (x86)/Zwift'
+ '[' '' = update ']'
++ ls -A .
+ '[' '!' 'ANT_DLL.dll
APR2007_xinput_x64.cab
APR2007_xinput_x86.cab
BleWin10Lib.dll
BleWin10Lib_V2.dll
CloseLauncher.exe
DSETUP.dll
DXSETUP.exe
Feb2010_X3DAudio_x64.cab
Feb2010_X3DAudio_x86.cab
Jun2010_XAudio_x64.cab
Jun2010_XAudio_x86.cab
Launcher_ver_cur.xml
Patcher.dll
VC_redist.x64.exe
WebView2Loader.dll
Webview2Setup.exe
Windows ANT Dongle Driver
ZwiftApp.exe
ZwiftHelper.exe
ZwiftLauncher.exe
ZwiftLauncher.exe.config
ZwiftWindowsCrashHandler.exe
Zwift_1.0.123458_bd4431b2_manifest.xml
Zwift_ver_cur.xml
Zwift_ver_cur_filename.txt
assets
bink2w64.dll
data
dotnet-v4.7.2-installer.exe
dsetup32.dll
dxupdate.cab
starting zwift...
unins000.dat
unins000.exe' ']'
+ echo 'starting zwift...'
+ wine64 start ZwiftLauncher.exe SilentLaunch
013c:err:winebrowser:launch_app could not find a suitable app to open L"http://go.microsoft.com/fwlink/?prd=11324&pver=4.5&sbp=AppLaunch2&plcid=0x409&o1=SHIM_NOVERSION_FOUND&version=(null)&processName=rundll32.exe&platform=0009&osver=5&isServer=0&shimver=4.0.30319.0"

Can Zwift run in maximized windows ?

I use Fedora with two HD monitors. Zwift runs on one monitor in the window.
However, this window is not as big as the screen. I still have to make it a "fullscreen window". Can I tell Docker to run Zwift in a maximized window?

[SOLVED] keeps crashing after 20 minutes

SOLVED:

The "Video Screenshots" feature in the game setting was causing the game to use up more and more memory until the game crashed. Disable this feature

Thanks everyone who helped with this


Hello,

firstly, thanks for all your work on this. I've been a Zwift user since beta and it's a dream come true to finally be able to run on linux.

i've run the game 3 times now, and each time, it crashes around the 25 minutes into the ride. any ideas on how to troubleshoot this issue?

here's a chunk of my journal log just before the crash

Oct 02 19:16:32 [redacted] systemd[1]: Starting fwupd-refresh.service - Refresh fwupd metadata and update motd...
Oct 02 19:10:03 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
Oct 02 19:10:03 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
Oct 02 19:10:02 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:02 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:02 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:01 [redacted] drkonqi-coredump-launcher[747490]: Nothing handled the dump :O
Oct 02 19:10:01 [redacted] drkonqi-coredump-launcher[747490]: QFile::remove: Empty or null file name
Oct 02 19:10:01 [redacted] drkonqi-coredump-launcher[747490]: Unable to find file for pid 747338 expected at "kcrash-metadata/747338.ini"
Oct 02 19:10:01 [redacted] systemd[1]: [email protected]: Deactivated successfully.
Oct 02 19:10:01 [redacted] systemd[1209]: Started [email protected] - Launch DrKonqi for a systemd-coredump crash (PID 747364/UID 0).
Oct 02 19:10:01 [redacted] drkonqi-coredump-processor[747364]: "/opt/wine-stable/bin/wine64-preloader" 747338 "/var/lib/systemd/coredump/core.mscorsvw\\x2eexe.1000.a8dc208b362b4c4fac36dd23fd3193c3.747338.1696288200000000.zst"
Oct 02 19:10:01 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:01 [redacted] systemd[1]: [email protected]: Deactivated successfully.
Oct 02 19:10:01 [redacted] systemd-coredump[747359]: [๐Ÿก•] Process 747338 (mscorsvw.exe) of user 1000 dumped core.
                                                    
                                                    Stack trace of thread 44505:
                                                    #0  0x00007f56aaf1e107 n/a (/opt/wine-stable/lib64/wine/x86_64-unix/ntdll.so + 0x3f107)
                                                    #1  0x0000000000000000 n/a (n/a + 0x0)
                                                    ELF object binary architecture: AMD x86-64
Oct 02 19:10:01 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706bf
Oct 02 19:10:01 [redacted] angry_jepsen[698494]: 0584:err:rpc:RpcAssoc_BindConnection rejected bind for reason 0
Oct 02 19:10:01 [redacted] angry_jepsen[698494]: 110c:err:rpc:RpcAssoc_BindConnection rejected bind for reason 0
Oct 02 19:10:01 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:00 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:10:00 [redacted] systemd[1]: Started [email protected] - Pass systemd-coredump journal entries to relevant user for potential DrKonqi handling.
Oct 02 19:10:00 [redacted] systemd[1]: Started [email protected] - Process Core Dump (PID 747356/UID 0).
Oct 02 19:10:00 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:59 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:59 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:58 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:58 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:58 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:57 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:57 [redacted] angry_jepsen[698494]: 0584:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
Oct 02 19:09:57 [redacted] drkonqi-coredump-launcher[747095]: Nothing handled the dump :O
Oct 02 19:09:57 [redacted] drkonqi-coredump-launcher[747095]: QFile::remove: Empty or null file name
Oct 02 19:09:57 [redacted] drkonqi-coredump-launcher[747095]: Unable to find file for pid 746930 expected at "kcrash-metadata/746930.ini"
Oct 02 19:09:57 [redacted] systemd[1]: [email protected]: Deactivated successfully.
Oct 02 19:09:57 [redacted] systemd[1209]: Started [email protected] - Launch DrKonqi for a systemd-coredump crash (PID 746964/UID 0).
Oct 02 19:09:57 [redacted] drkonqi-coredump-processor[746964]: "/opt/wine-stable/bin/wine64-preloader" 746930 "/var/lib/systemd/coredump/core.mscorsvw\\x2eexe.1000.a8dc208b362b4c4fac36dd23fd3193c3.746930.1696288195000000.zst"
Oct 02 19:09:57 [redacted] systemd[1]: [email protected]: Consumed 1.145s CPU time.
Oct 02 19:09:57 [redacted] systemd[1]: [email protected]: Deactivated successfully.
Oct 02 19:09:57 [redacted] systemd-coredump[746957]: [๐Ÿก•] Process 746930 (mscorsvw.exe) of user 1000 dumped core.
                                                    
                                                    Stack trace of thread 44137:
                                                    #0  0x00007fb20f1be107 n/a (/opt/wine-stable/lib64/wine/x86_64-unix/ntdll.so + 0x3f107)
                                                    #1  0x0000000000000000 n/a (n/a + 0x0)
                                                    ELF object binary architecture: AMD x86-64
Oct 02 19:09:57 [redacted] angry_jepsen[698494]: 11e0:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be

OS: Debian sid
CPU: AMD ryzen 5600
RAM: 32GB
GPU: AMD RX580

thanks in advance

Thank you!

This is not really an issue, just a message for you. Feel free to close this after reading.

I wanted to thank you for this project. My wine setup broke locally after another update and I was stuck without Zwift when I wanted to workout which is really annoying.

Found this project and it just works like a charm, so than you for all the work!

How can I use this on an ARM machine?

I tried to run your docker image on an aarch64 Linux Ubuntu 20.04 LTS but get the following error:

The requested image's platform (linux/amd64) does not match the detected host platform (linux/amd64/v8)

How can I use this Docker project on an ARM machine?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.