zoffline은 Zwift 서버의 부분 구현 역할을 하여 Zwift 오프라인 사용을 가능하게 합니다. 기본적으로 zoffline은 단일 플레이어 전용입니다. 여러 사용자/프로필에 대한 지원을 활성화하는 방법은 6단계: 멀티플레이어 활성화를 참조하세요.
zoffline은 유령과의 라이딩(이전 라이딩)도 제공합니다. zoffline 런처에서 "고스트 활성화"를 선택하여 이 기능을 활성화하세요. 자세한 내용은 고스트 및 봇을 참조하세요.
또한, zoffline의 런처를 사용하면 구성 파일을 다루지 않고도 특정 지도를 선택할 수 있습니다.
zoffline을 설정하려면 두 가지 기본 단계가 필요합니다. 먼저, Zwift를 실행하기 전에 시스템(Zwift를 실행하는 시스템 또는 다른 로컬 네트워크 시스템)에 zoffline을 설치하고 실행해야 합니다. 둘째, 공식 Zwift 서버 대신 zoffline을 사용하도록 Zwift를 구성해야 합니다.
플랫폼에 따라 zoffline을 설치하고 실행하는 세 가지 방법이 있습니다.
pace_partners
디렉터리를 추출하세요.storage
디렉터리에 server-ip.txt
파일을 만듭니다.storage
디렉터리를 생성합니다.pip3 install -r requirements.txt
pip install -r requirements.txt
pip
대신 C:UsersAppDataLocalProgramsPythonPythonScriptspip.exe
사용해야 할 수도 있습니다.storage
디렉터리에 server-ip.txt
파일을 만듭니다.sudo ./standalone.py
sudo python3 standalone.py
실행하세요.python standalone.py
python
대신 C:UsersAppDataLocalProgramsPythonPythonpython.exe
사용해야 할 수도 있습니다.storage
디렉터리를 유지해야 합니다. 여기에는 Zwift 진행 상태가 포함되어 있습니다.zoffline은 Zwift와 동일한 시스템이나 다른 로컬 시스템에 설치할 수 있습니다.
docker create --name zwift-offline -p 443:443 -p 80:80 -p 3024:3024/udp -p 3025:3025 -p 53:53/udp -v :/usr/src/app/zwift-offline/storage -e TZ= zoffline/zoffline
-v :/usr/src/app/zwift-offline/storage
제외할 수 있습니다(가능성 없음).-v
에 전달하는 경로는 누구나 읽고 쓸 수 있어야 합니다.
값(예: America/New_York) 목록은 여기에서 찾을 수 있습니다.--restart unless-stopped
추가하면 부팅 시 zoffline이 시작됩니다.
디렉터리에 server-ip.txt
파일을 만듭니다.docker start zwift-offline
docker-compose.yml
파일을 사용하거나 다음 예제 작성 파일을 사용하십시오. version: "3.3"
services:
zoffline:
image: zoffline/zoffline:latest
container_name: zoffline
environment:
- TZ=Europe/London
volumes:
- ./storage/:/usr/src/app/zwift-offline/storage
ports:
- 80:80
- 443:443
- 3024:3024/udp
- 3025:3025
restart: unless-stopped
storage
디렉터리에 server-ip.txt
파일을 만듭니다.docker-compose up -d
C:Program Files (x86)ZwiftZwift_ver_cur.xml
zoffline의 cdn/gameassets/Zwift_Updates_Root/
에 복사하여 기존 파일을 덮어씁니다.certutil.exe -importpfx Root cert-zwift-com.p12
C:Program Files (x86)Zwiftdatacacert.pem
엽니다.ssl/cert-zwift-com.pem
의 내용을 cacert.pem에 추가합니다.C:WindowsSystem32Driversetchosts
엽니다. us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com launcher.zwift.com
zoffline을 실행하는 머신의 IP 주소입니다. Zwift와 동일한 머신에서 실행 중인 경우 IP로 127.0.0.1
사용하세요.)hosts
파일을 변경하지 않고 그대로 두려면 선택적으로 일반 Zwift Launcher를 사용하는 대신 scripts
디렉토리 내의 launch.bat 스크립트를 사용하여 zoffline을 시작할 수 있습니다. 자세한 내용은 #121을 참조하세요.이유: zoffline을 사용하도록 Zwift를 리디렉션하고 Windows와 Zwift가 Zwift의 도메인 이름에 대해 zoffline의 자체 서명된 인증서를 수락하도록 설득해야 합니다. 자유롭게 자신만의 인증서를 생성하고 동일한 작업을 수행하세요.
~/Library/Application Support/Zwift/ZwiftMac_ver_cur.xml
zoffline의 cdn/gameassets/Zwift_Updates_Root/
에 복사하여 기존 파일을 덮어씁니다.sed -n '29,53p' cert-zwift-com.pem >> ~/Library/Application Support/Zwift/data/cacert.pem
실행합니다./etc/hosts
엽니다. us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com launcher.zwift.com
zoffline을 실행하는 머신의 IP 주소입니다. Zwift와 동일한 머신에서 실행 중인 경우 IP로 127.0.0.1
사용하세요.)이유: zoffline을 사용하도록 Zwift를 리디렉션하고 macOS 및 Zwift가 Zwift의 도메인 이름에 대해 zoffline의 자체 서명된 인증서를 수락하도록 설득해야 합니다. 자유롭게 자신만의 인증서를 생성하고 동일한 작업을 수행하세요.
ZofflineObb.apk
다운로드하여 설치하세요.app-Github-release.apk
다운로드하여 설치하세요.hosts.txt
파일을 만듭니다(텍스트 편집기 앱을 사용하거나 이와 같은 온라인 도구를 사용하여 온라인으로 만들 수 있습니다). 파일은 다음과 같아야 합니다(
zoffline을 실행하는 시스템의 IP 주소로 대체). us-or-rly101.zwift.com
secure.zwift.com
cdn.zwift.com
hosts.txt
파일을 선택하세요.storage
디렉터리에 fake-dns.txt
파일을 만들고 휴대폰 Wi-Fi 연결의 "DNS 1"을 zoffline을 실행하는 PC의 IP 주소로 설정할 수 있습니다.Android Settings > Applications > Zwift
로 이동하여 데이터를 지우거나 앱을 제거하고 다시 설치하세요.ZofflineObb
앱을 열고 실행하세요(저장공간 접근 허용)이유: zoffline을 사용하도록 Zwift를 리디렉션하고(이 작업은 가상 호스트 앱에서 수행됨) Zwift가 Zwift의 도메인 이름에 대한 zoffline의 자체 서명된 인증서를 수락하도록 설득해야 합니다(이 작업은 패치 도구 ZofflineObb에서 수행됨).
ssl/cert-zwift-com.pem
의 내용을 장치의 /data/data/com.zwift.zwiftgame/dataES/cacert.pem
에 추가합니다.adb push ssl/cert-zwift-com.pem /data/data/com.zwift.zwiftgame/dataES/
adb shell
에서 : cd /data/data/com.zwift.zwiftgame/dataES/
adb shell
에서 : cat cert-zwift-com.pem >> cacert.pem
/etc/hosts
파일 수정 us-or-rly101.zwift.com secure.zwift.com cdn.zwift.com
zoffline을 실행하는 머신의 IP 주소입니다.)adb pull /etc/hosts
adb push hosts /etc/hosts
hosts
파일을 수정하는 대신 라우터를 조정하여 이러한 DNS 레코드를 변경할 수 있습니다.이유: Zwift가 zoffline을 사용하도록 리디렉션하고 Zwift가 Zwift의 도메인 이름에 대해 zoffline의 자체 서명된 인증서를 수락하도록 설득해야 합니다. 자유롭게 자신만의 인증서를 생성하고 동일한 작업을 수행하세요.
평소처럼 온라인에서 Zwift를 사용하려면 Zwift를 시작하기 전에 hosts
파일에 추가된 줄을 주석 처리하거나 제거하세요. 그런 다음 Zwift가 완전히 닫혔는지 확인하고(Zwift 시스템 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 종료) Zwift를 다시 시작하십시오.
zoffline이 활성화된 상태에서 Zwift를 처음 시작하기 전에 현재 Zwift 프로필을 얻지 못한 경우 새 프로필(키, 몸무게, 성별)을 생성하라는 메시지가 표시됩니다. 귀하의 프로필은 게임 내 메뉴(예: 이름, 국적, 체중 변경 등)를 통해 추가로 사용자 정의하고 변경할 수 있습니다.
현재 프로필을 얻으려면:
scripts/get_profile.py -u
실행scripts/get_profile.py
대신 https://github.com/oldnapalm/zoffline-helper/releases/latest에서 얻은 get_profile.exe
실행할 수 있습니다.profile.bin
, achievements.bin
및 economy_config.txt
( get_profile.py 를 실행한 디렉터리에 저장됨)를 storage/1
디렉터리로 이동하세요.storage/1
디렉터리가 없으면 새로 만듭니다.1
은 -v
에 전달한 경로에 있어야 합니다.launcher.zwift.com
으로 설정하고 실행기 창에서 "설정 - Strava" 버튼을 사용할 수 있습니다(Windows 및 macOS에만 해당).scripts/strava_auth.py --client-id CLIENT_ID --client-secret CLIENT_SECRET
scripts/strava_auth.py
대신 https://github.com/oldnapalm/zoffline-helper/releases/latest에서 얻은 strava_auth.exe
실행할 수 있습니다.strava_token.txt
( strava_auth.py
실행한 디렉터리에 저장됨)를 storage/1
디렉터리로 이동합니다.pip install garth
storage
디렉터리에 garmin_domain.txt
파일을 생성합니다.garmin.cn
사용하세요.storage/1
디렉터리에 garmin_credentials.txt
파일을 생성합니다.
여러 사용자에 대한 지원을 활성화하려면 아래 단계를 수행하십시오.
storage
디렉터리에 multiplayer.txt
파일을 만듭니다.storage
디렉터리에 server-ip.txt
파일을 만듭니다.apk-mitm/dist/tools/apktool.js
열고(위치를 찾으려면 npm root -g
실행) 다음과 같이 편집하세요. decode ( inputPath , outputPath ) {
return this . run ( [
'decode' ,
'-resm' , // add this
'dummy' , // add this
inputPath ,
'--output' ,
outputPath ,
'--frame-path' ,
this . options . frameworkPath ,
] , 'decoding' ) ;
}
zca.apk
)를 알려진 위치에 복사합니다.apk-mitm --certificate cert-zwift-com.pem zca.apk
zca-patched.apk
휴대폰에 복사하여 설치하세요.app-Github-release.apk
다운로드하여 설치하세요.hosts.txt
파일을 만듭니다(텍스트 편집기 앱을 사용하거나 이와 같은 온라인 도구를 사용하여 온라인으로 만들 수 있습니다). 파일은 다음과 같아야 합니다(
zoffline을 실행하는 시스템의 IP 주소로 대체). us-or-rly101.zwift.com
secure.zwift.com
cdn.zwift.com
hosts.txt
에 추가하지 마세요. Companion은 공식 서버에서 이미지를 다운로드해야 합니다.hosts.txt
파일을 선택하세요.storage
디렉터리에 fake-dns.txt
파일을 만들고 휴대폰 Wi-Fi 연결의 "DNS 1"을 zoffline을 실행하는 PC의 IP 주소로 설정할 수 있습니다.storage
디렉터리에 cdn-proxy.txt
파일을 만듭니다. 이는 Zwift 클라이언트가 아닌 다른 시스템에서 zoffline을 실행하는 경우에만 작동할 수 있습니다.storage
디렉터리에 disable_proxy.txt
파일을 생성하십시오.storage
디렉터리에 gmail_credentials.txt
파일을 만듭니다. 서버에서 로그인을 허용하려면 https://security.google.com/settings/security/apppasswords에 접속하여 앱 비밀번호를 만들어야 합니다.pip3 install discord.py
다음을 포함하는 storage
디렉터리에 discord.cfg
파일을 만듭니다. [discord]
token =
webhook =
channel =
welcome_message =
help_message =
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1
storage
폴더 내에 enable_ghosts.txt
파일을 만듭니다.https:///login/
에 접속하여 "고스트 활성화"를 선택한 다음 "Zwift 시작"을 클릭하여 옵션을 저장하세요.storage//ghosts//
에 저장됩니다. 다음에 같은 경로를 타면 고스트가 로드됩니다..regroup
입력하세요.storage
폴더 내에 ghost_profile.txt
파일을 생성하여 장비를 맞춤화할 수 있습니다. find_equip.py
스크립트를 사용하여 이 파일을 채울 수 있습니다. storage
폴더 내에 파일 enable_bots.txt
생성하세요. 유령은 당신이 타고 있는 경로에 관계없이 계속해서 타고 다닐 것입니다.enable_bots.txt
에는 승수 값이 포함될 수 있습니다. 결과적으로 봇 수가 너무 많으면 성능 문제가 발생하거나 전혀 작동하지 않을 수 있으므로 주의하세요.storage
폴더 내에 bot.txt
파일을 생성하여 맞춤 설정할 수 있습니다. get_pro_names.py
및 get_strava_names.py
스크립트를 사용하여 이 파일을 채울 수 있습니다.bot_editor.py
스크립트를 사용하여 profile.bin
(이름, 플레이어 ID 및 경로 ID 설정) 및 route.bin
(완벽한 루프를 만들기 위해 초과 지점 잘라내기)을 수정할 수 있습니다..bookmark
명령을 사용하여 저장할 수도 있습니다.storage
디렉터리에 all_time_leaderboards.txt
파일을 만듭니다.storage
디렉터리에 unlock_entitlements.txt
파일을 생성하십시오.unlock_all_equipment.txt
파일을 생성하세요. 커뮤니티가 지원하는 Discord 서버와 Strava 클럽에 가입하세요.
도커
-또는-
향후 Zwift 업데이트는 업데이트될 때까지 zoffline을 중단할 수 있습니다. zoffline이 활성화되어 있는 동안에는 Zwift 업데이트가 설치되지 않습니다. zoffline 업데이트로 인해 문제가 발생한 경우 CHANGELOG
에서 변경해야 할 사항이 있는지 확인하세요.
zoffline을 인터넷에 노출시키지 마십시오. 이를 염두에 두고 설계되지 않았습니다.
참고: 테스트되지 않은 Zwift 업데이트가 zoffline에서 작동한다는 보장은 없습니다. 그러나 역사적으로 Zwift 업데이트는 zoffline을 거의 중단하지 않습니다.
Zwift는 Zwift, Inc.의 상표이며 이 프로젝트의 제작자와 관련이 없으며 이 프로젝트를 보증하지 않습니다.
모든 제품 및 회사 이름은 해당 소유자의 상표입니다. 이들의 사용은 이들과의 제휴나 보증을 의미하지 않습니다.