本文為Linux版AltStore安裝教學,Windows和macOS版的教學請看 這裡。
AltStore是一款開源第三方應用程式商店,允許您在iPhone/iPad安裝未經Apple審核的第三方APP,免越獄。
Linux版的AltStore功能類似原版AltStore,並且支援類似Sideloadly的側載IPA功能,還能跑AltServer伺服器給其他iOS裝置重簽。
本文Ivon將介紹純文字指令的Linux版AltServer用法,方便查看錯誤訊息。
如果想無腦一點的,請採用文末「延伸閱讀」列出的圖形版本。
1. AltStore簡介#
AltStore由Riley Testut等人開發,支援iOS 12以上的iPhone/iPad/iPod touch裝置。
AltStore原理是利用自己的Apple ID開通開發者帳號,給APP簽名從而在iOS裝置安裝任意IPA。一部裝置最多安裝3個APP,7天後需要重簽(resign)。只要不刪除APP,重簽IPA後資料仍會保留。
AltStore本體是個 iOS APP,要安裝AltStore的話需要在電腦跑AltServer,負責安裝AltStore與重簽APP之用。
目前官方版的AltServer僅提供Windows和macOS版本,Linux版的AltServer為NyaMisty開發,跟官方版有點不太一樣。最大的不同在於Linux版AltStore是「on-device」的。Linux版的AltStore可以用來重簽以Windows版AltServer安裝的AltStore,不過從其他電腦安裝的AltStore APP可能會在列表遺失,導致得整個重裝APP。這就是「on-device」的壞處。
此外,Linux版實作了類似Windows軟體 Sideloadly的功能,可以從電腦安裝IPA到iOS裝置,即使沒安裝AltStore也行。
2. 安裝AltServer和安裝AltStore#
首先安裝以下套件:
# Ubuntu / Debian
sudo apt-get install usbmuxd libimobiledevice6 libimobiledevice-utils wget curl libavahi-compat-libdnssd-dev
# Arch Linux / Manjaro
sudo pacman -S usbmuxd libimobiledevice avahi bind
套件說明:
- usbmuxd:用於處理Apple裝置的USB通訊。
- libimobiledevice:用於處理Apple裝置的USB通訊。
- avahi:零配置網路解決方案。
- netmuxd:用於處理Apple裝置的無線通訊。
因為以上套件已擔負了與iOS裝置通訊的功能,所以我們不需要用到iTunes。
- 啟動Avahi和usbmuxd服務,重開機
sudo systemctl enable --now avahi-daemon
sudo systemctl enable --now usbmuxd
- 建立AltServer工作目錄:
mkdir altserver
cd altserver
- 從 Github下載x86_64版本的AltServer:
curl -L https://github.com/NyaMisty/AltServer-Linux/releases/download/v0.0.5/AltServer-x86_64 > AltServer
chmod +x AltServer
- 從AltStore官網下載AltStore的IPA,目前是1.7版。要下載新版請自行參照 Release Notes改網址。
curl -L https://cdn.altstore.io/file/altstore/apps/altstore/1_7.ipa > AltStore.ipa
- 從 Github下載netmuxd執行檔:
curl -L https://github.com/jkcoxson/netmuxd/releases/download/v0.1.4/x86_64-linux-netmuxd > netmuxd
chmod +x netmuxd
- 將iOS裝置插上電腦,進行配對,在iOS裝置上點選「信任此電腦」。
idevicepair pair
- 取得iOS裝置的UUID:
idevice_id -l
- 安裝AltStore到iOS裝置。在iOS裝置取得二步驟登入密碼,在電腦上輸入。
./AltServer --udid "iOS裝置的UUID" --appleID "你的Apple ID" --password "Apple ID密碼" AltStore.ipa
終端機跑完顯示Finished就是安裝成功。
如果出現錯誤可試著參考下文「自架Anisette伺服器」再重試。有時候Apple會出於安全性而鎖定帳號,依照指示重設密碼即可。
iOS 16以上版本,開啟iOS裝置的系統設定 → 隱私權 → 啟用「開發者模式」,重開機。
在iOS裝置上開啟設定 → 一般 → VPN與裝置管理,點選「信任AltStore」的開發者。
之後開啟AltStore APP,點右下角Settings登入Apple ID。
3. AltStore如何安裝IPA#
提示:你不需要安裝AltStore也可以直接側載其他IPA。AltStore只是方便你無線重簽的工具,如果你不在乎無線重簽的功能,大可把AltStore刪除,空出一個槽位。在沒有安裝AltStore的情況下,APP簽名過期就是直接用AltServer重裝,APP資料會保留。
以去廣告的Youtube「uYou+」為例,首先要到 Github下載該APP的IPA檔案,放到AltServer的工作目錄。
iOS裝置連上電腦,配對完成後,執行AltServer安裝IPA:
./AltServer --udid "iOS裝置的UUID" --appleID "你的Apple ID" --password "Apple ID密碼" uYouPlus.ipa
- 或者你可以讓iOS裝置連著電腦,並在電腦執行
./AltServer
,接著在iOS裝置上的AltStore → 按左上角+號選取IPA檔案安裝APP。
(如果出現錯誤,試著參考下文「自架Anisette伺服器」再重試。)
4. 自架Anisette伺服器解決安裝IPA的錯誤#
自架Anisette伺服器能解決大多數的連線錯誤,如果AltServer安裝IPA時出現filesystem error: directory iterator cannot open directory
、Incorrect Content-Type: must be textual to extract_string, JSON to extract_json
錯誤用這個跑就可以解決。
Anisette server同樣是由NyaMisty開發的軟體,按照開發者說法這是類似Windows系統Sideloadly的程式,用於產生Anisette data(Apple軟體產生的隨機資料),繼而登入Apple Developer伺服器。Anisette伺服器亦可以搭配netmuxd,無線重簽AltStore APP。
安裝 Docker
然後跑Anisette伺服器, NyaMisty/alt-anisette-server似乎沒在更新了,所以我改用 Dadoum/anisette-v3-server的映像檔
docker run -d --restart always --name anisette-v3 -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3/lib/ dadoum/anisette-v3-server
- 接著指定本機Anisette伺服器IP,執行AltServer嘗試安裝IPA:
ALTSERVER_ANISETTE_SERVER="http://127.0.0.1:6969" ./AltServer --udid "iOS裝置的UUID" --appleID "你的Apple ID" --password "Apple ID密碼" AltStore.ipa
5. AltStore如何重簽APP#
用AltStore安裝的APP(含AltStore本身)7天後就無法使用,要定期用電腦重簽。
如果AltStore本身開不起來,直接重裝。APP只要不刪除,資料都會保留。
5.1. 有線重簽#
- iOS裝置連到電腦,配對完成後,執行AltServer:
./AltServer
- 在iOS裝置上開啟AltStore,點選My Apps → Refresh All開始重簽。
5.2. 無線重簽#
使用Anisette server配合netmuxd重簽。
- 停掉usbmuxd服務
sudo systemctl stop usbmuxd
- 啟動netmuxd
./netmuxd
- 接著再跑AltServer
./AltServer
(您可能還需要跑一個Anisette server迴避連線問題)
讓電腦與iOS裝置處在同一個Wifi下,開啟AltStore的My Apps,即可無線重簽。
這裡還有一個用樹苺派建立自動重簽伺服器的範例,請參考這篇文章: Setup Altserver Linux on Raspberry Pi with Wifi Refresh - Github gist
作者的方案是在樹莓派跑AltServer,再讓iOS裝置連上PC的iTunes,同步一次之後,樹莓派的Avahi就可以抓到iOS裝置的連線,讓netmuxd配對,從而完成重簽。
延伸閱讀#
- AltStore官方文件 AltStore Docs - AltStore
- 專門討論側載APP的 Sildeload Reddit討論板
- NyaMisty/AltServer-Linux - Github
- Python寫成的AltServer指令稿 powenn/AltServer-Linux-PyScript - Github
- 比較友善的互動式指令稿 LukeZGD/Legacy-iOS-Kit - Github
- 跨平台圖形化程式 Dadoum/Sideloader - Github