GithubHelp home page GithubHelp logo

zwift-offline's Introduction

zoffline

zoffline enables the use of Zwift offline by acting as a partial implementation of a Zwift server. Currently it's designed for only a single user and the UDP game node is not implemented.

Install

Step 1: Install zoffline

The easiest way to install zoffline is through Docker. zoffline can either be installed on the same machine as Zwift or another local machine.

  • Install Docker
  • Create the docker container with:
    docker create --name zwift-offline -p 443:443 -p 80:80 -v </path/to/host/storage>:/usr/local/apache2/htdocs/zwift-offline/storage -e TZ=<timezone> zoffline/zoffline
    • You can optionally exclude -v </path/to/host/storage>:/usr/local/apache2/htdocs/zwift-offline/storage if you don't care if zoffline data is persistent across zoffline updates.
    • The path you pass to -v will likely need to be world readable and writable.
    • A list of valid <timezone> values (e.g. America/New_York) can be found here.
    • Adding --restart unless-stopped will make zoffline start on boot if you have Docker v1.9.0 or greater.
  • Start zoffline with: docker start zwift-offline

If you don't use the Docker container you will need to set up an Apache server (or write your own nginx/uWSGI configuration and use nginx) and install the dependencies listed below. The necessary Apache configuration is inside the apache subdir. You'll also need to run make inside the protobuf subdirectory.

Step 2: Configure Zwift client to use zoffline

I've only done this with Windows 10 so your mileage may vary on other versions.

  • Install Zwift
    • If your Zwift version is newer than 1.0.22143 you may have to uninstall, then reinstall after installing zoffline.
    • If your Zwift version is 1.0.22143, you're all set.
    • If Zwift is not installed install it after installing zoffline (1.0.22143 will be installed instead of the latest).
  • On your Windows machine running Zwift, copy the following files in this repo to a known location:
    • ssl/cert-us-or.p12
    • ssl/cert-zwift-secure.p12
    • ssl/cert-us-or.pem
    • ssl/cert-zwift-secure.pem
  • Open Command Prompt as an admin, cd to that location and run
    • certutil.exe -importpfx Root cert-us-or.p12
    • certutil.exe -importpfx Root cert-zwift-secure.p12
  • Open Notepad as an admin and open C:\Program Files (x86)\Zwift\data\cacert.pem
    • Append the contents of ssl/cert-us-or.pem to cacert.pem
    • Append the contents of ssl/cert-zwift-secure.pem to cacert.pem
  • Open Notepad as an admin and open C:\Windows\System32\Drivers\etc\hosts
    • Append this line: <zoffline ip> us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com
      (Where <zoffline ip> is the ip address of the machine running zoffline. If it's running on the same machine as Zwift, use 127.0.0.1 as the ip.)

Why: We need to redirect Zwift to use zoffline and convince Windows and Zwift to accept zoffline's self signed certificates for Zwift's domain names. Feel free to generate your own certificates and do the same.

Enabling/Disabling zoffline

To use Zwift online like normal, comment out or remove the line added to the hosts file before starting Zwift.

Step 3 [OPTIONAL]: Obtain current Zwift profile

If you don't obtain your current Zwift profile before first starting Zwift with zoffline enabled, you will be prompted to create a new profile (name, weight, height, etc.)

To obtain your current profile:

  • Run scripts/get_profile.py -u <your_zwift_username>
  • Move the resulting profile.bin (saved in whatever directory you ran get_profile.py in) into the storage directory.
    • If using Docker, move profile.bin into the path you passed to -v

Dependencies

Docker

-or-

Known issues

  • Segment results always show up as having just occurred.

Note

Future Zwift updates may break zoffline until it's updated. While zoffline is enabled Zwift updates will not be installed.

Don't expose zoffline to the internet, it was not designed with that in mind.

Disclaimer

Zwift is a trademark of Zwift, Inc., which is not affiliated with the maker of this project and does not endorse this project.

All product and company names are trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

zwift-offline's People

Contributors

zoffline avatar

Stargazers

 avatar

Watchers

cmoski avatar James Cloos avatar

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.