Skip to content

Wrapper Setup Windows

Salem874 edited this page Mar 26, 2026 · 1 revision

Wrapper Setup Guide: Windows

Platform: Windows 10 (22H2+) / Windows 11 Method: Docker Desktop with WSL 2 backend Estimated time: 15-20 minutes

Overview

Wrapper is a tool that enables downloading Apple Music songs in lossless codecs (ALAC, etc.) without API limitations. It runs as a local server that MeedyaDL / gamdl connects to.

Wrapper only runs on Linux. On Windows, we use Docker Desktop with the WSL 2 backend to run it inside a Linux container. On x86_64 Windows hardware, the container runs natively with no emulation penalty.

Prerequisites

  • Windows 10 (version 22H2, build 19045+) or Windows 11 (23H2+)
  • An active Apple Music subscription
  • Hardware virtualization enabled in BIOS/UEFI (VT-x for Intel, AMD-V for AMD)
  • WSL 2 installed (version 2.1.5 or later)

Install WSL 2

Open PowerShell as Administrator and run:

wsl --install

Restart your computer if prompted. After restart, verify:

wsl --version

Install Docker Desktop

  1. Download Docker Desktop from docker.com/products/docker-desktop
  2. Run the installer — select "Use WSL 2 instead of Hyper-V" when prompted
  3. After installation, open Docker Desktop and wait for the engine to start
  4. Go to Settings > General and confirm "Use the WSL 2 based engine" is checked

Step 1: Create Working Directory

Open PowerShell (or Windows Terminal) and run:

mkdir $HOME\wrapper-docker
cd $HOME\wrapper-docker

Step 2: Download the Wrapper Release

Invoke-WebRequest -Uri "https://github.com/WorldObservationLog/wrapper/releases/download/Wrapper.x86_64.1dac7bb/Wrapper.x86_64.1dac7bb.zip" -OutFile wrapper-release.zip
Expand-Archive -Path wrapper-release.zip -DestinationPath . -Force

This extracts:

  • wrapper — the launcher binary
  • rootfs/ — the Android runtime environment
  • Dockerfile — the container build instructions

Step 3: Build the Docker Image

The included Dockerfile works as-is on x86_64 Windows:

docker build --platform linux/amd64 --tag wrapper .

Step 4: Create docker-compose.yml

Create a file called docker-compose.yml in the wrapper-docker folder with this content:

services:
  wrapper:
    image: wrapper:latest
    platform: linux/amd64
    container_name: wrapper
    ports:
      - "10020:10020"
      - "20020:20020"
      - "30020:30020"
    volumes:
      - ./rootfs/data:/app/rootfs/data
    environment:
      - args=-H 0.0.0.0
    restart: unless-stopped

Tip: You can create this file using Notepad: notepad docker-compose.yml

Step 5: Log In to Apple Music

This is a one-time interactive step. Run:

cd $HOME\wrapper-docker
docker run -it -v "${PWD}/rootfs/data:/app/rootfs/data" -e "args=-L your_email:your_password -H 0.0.0.0" wrapper

Replace your_email and your_password with your actual Apple Music credentials.

Handling Two-Factor Authentication (2FA)

If your Apple ID has 2FA enabled, the container will display:

[!] Enter your 2FA code into rootfs/data/data/com.apple.android.music/files/2fa.txt
[!] Waiting for input...

You have 60 seconds. Open a second PowerShell/Terminal window and run:

cd $HOME\wrapper-docker
echo -n YOUR_CODE > rootfs\data\data\com.apple.android.music\files\2fa.txt

Replace YOUR_CODE with the 6-digit code from your Apple device.

Successful Login

You should see:

[+] account info cached successfully
[+] StoreFront ID: 143444-2,31
[+] Music-Token: AozLzN1LkWGJps...
[!] listening m3u8 request on 0.0.0.0:20020
[!] listening 0.0.0.0:10020
[!] listening account info request on 0.0.0.0:30020

Press Ctrl+C to stop the container. The login token is saved.

Step 6: Start Wrapper Permanently

cd $HOME\wrapper-docker
docker compose up -d

Wrapper is now running in the background.

Step 7: Configure MeedyaDL / gamdl

In MeedyaDL settings or gamdl config, set:

Setting Value
use_wrapper true
wrapper_account_url http://127.0.0.1:30020
wrapper_decrypt_ip 127.0.0.1:10020

Click Test Connection to verify.

Auto-Start on Boot

To have Wrapper start automatically when Windows boots:

  1. Open Docker Desktop > Settings (gear icon)
  2. Go to General
  3. Enable "Start Docker Desktop when you sign in to your computer"
  4. Click Apply & restart

The chain is: Windows boots -> Docker Desktop starts -> Wrapper container starts

Managing Wrapper

Action Command
Start cd $HOME\wrapper-docker; docker compose up -d
Stop cd $HOME\wrapper-docker; docker compose down
View logs cd $HOME\wrapper-docker; docker compose logs -f
Restart cd $HOME\wrapper-docker; docker compose restart
Check status docker ps --filter name=wrapper

Troubleshooting

"Connection refused" in MeedyaDL

  • Verify Wrapper is running: docker ps --filter name=wrapper
  • Check logs: docker compose logs from the wrapper-docker directory
  • Ensure ports 10020, 20020, 30020 are not used by other apps
  • On Windows, localhost port forwarding from WSL 2 is automatic, but check Windows Firewall if external access is needed

"MUSIC_TOKEN not found" on startup

  • You need to complete the login step (Step 5) first

2FA code timeout

  • You have 60 seconds to enter the code
  • Have the second terminal ready before starting the login
  • Write the code to the host path: rootfs\data\data\com.apple.android.music\files\2fa.txt

Token expired

  • Delete the token and re-login:
    del $HOME\wrapper-docker\rootfs\data\data\com.apple.android.music\files\MUSIC_TOKEN
    Then repeat Step 5.

Slow performance with bind mounts

  • For best I/O performance, keep the wrapper-docker folder inside the WSL 2 filesystem rather than on a Windows NTFS drive
  • To move it: open a WSL terminal and copy the folder to ~/wrapper-docker

Password contains a colon (:)

  • The login parser uses : as a delimiter between username and password
  • If your password contains a colon, change your password to one without colons

Clone this wiki locally