jitstreamer-eb

jitstreamer-eb

Docker app from UnJustice's Repository

Overview

WARNING WARNING SETUP IS REQUIRED BEFORE RUNNING THIS TEMPLATE WARNING WARNING THIS PROJECT IS NOW EOL!!! YOU CAN USE StikJIT! A server is no longer needed! Follow instructions or this container will not work!!! You MUST place your pairing file(s) in your /lockdown directory You MUST setup the shortcut on your Apple Device. You MUST create a database and enter your Apple Devices into it. I wrote a guide for installing this container on Debian. Here is a revised version I made for Unraid. See here: https://github.com/Unlearned6688/Unraid-templates/blob/main/template-readmes/jitstreamer-eb-readme.md Questions? Join the Discord. My username is Justice on there. Message me in the self-host section with a specific question and, as always, provide logs and errors along with "what you did so far" if you want help. This is an Unraid template for JitStreamer-EB -- created by jkcoxson The GitHub repository: https://github.com/jkcoxson/JitStreamer-EB This Docker container enables Just-in-Time (JIT) compiling in sideloaded apps on Apple iDevices.

JitStreamer EB

The sequel that nobody wanted, but everyone needed.

JitStreamer is a program to activate JIT across the far reaches of the internet.

I authored the original JitStreamer a few years ago, but Apple has since changed how the protocol for debugging apps works. This program is a rewrite of that original program, while using the new protocol.

Simply put, this program takes a pairing file and returns a Wireguard configuration. That Wireguard configuration allows the device to interact with a server that will activate JIT on the device.

EB

What is EB? Electric Boogaloo. r/outoftheloop

Building

cargo build --release

It's not that deep.

Running

  1. Start netmuxd
  2. Install the pip requirements
pip install -r requirements.txt
  1. Start tunneld-rs or tunneld

  2. Run the program

./target/release/jitstreamer-eb

OR

just run
  1. Start the Wireguard peer
sudo wg-quick up jitstreamer
  1. ???
  2. Profit

Variables

JitStreamer reads the following environment variables:

  • RUNNER_COUNT - How many Python runners to spawn, defaults to 5
  • ALLOW_REGISTRATION - Allows clients to register using the /register endpoint, defaults to 1. Set to 2 to register using client's address instead of generating wireguard address
  • JITSTREAMER_PORT - The port to bind to, defaults to 9172
  • WIREGUARD_CONFIG_NAME - The name of the Wireguard interface, defaults to jitstreamer
  • WIREGUARD_PORT - The port that Wireguard listens on, defaults to 51869
  • WIREGUARD_SERVER_ADDRESS - The address the server binds to, defaults to fd00::
  • WIREGUARD_ENDPOINT - The endpoint that client configs point to, defaults to jitstreamer.jkcoxson.com
  • WIREGUARD_SERVER_ALLOWED_IPS - The allowed IPs the server can bind to, defaults to fd00::/64

Custom VPN

If you don't want to use the built-in Wireguard manager, because you either have your own VPN or want to use a different one, you'll have to manually register your clients.

Run the following SQL on the jitstreamer.db sqlite file:

INSERT INTO DEVICES (udid, ip, last_used) VALUES ([udid], [ip], CURRENT_TIMESTAMP);

Docker

There's a nice dockerfile that contains a Wireguard server and JitStreamer server, all packaged and ready to go. It contains everything you need to run the server.

  1. create a database
mkdir app
sqlite3 ./jitstreamer.db < ./src/sql/up.sql
  1. build docker
sudo docker build -t jitstreamer-eb .
  1. run docker compose
sudo docker compose up -d

Alternative method:

just docker-build
just docker-run

Detailed Step by Step Docker Compose Guide

There is also a script that uses combines the commands from the Step by Step Docker Compose Guide, the steps to use it follow. IMPORTANT: THIS WILL ONLY WORK ON UBUNTU/DEBIAN!!!

  1. clone the repo onto your home directory
sudo apt install git-all 
git clone
  1. go into the directory and run the script
cd JitStreamer-EB/
bash jitstreamer.sh
  1. follow the instructions provided by the script

    • use a pairing file you created on another pc (preferred), or create one through following this guide (currently not working in script :( *todo) (https://github.com/osy/Jitterbug)
    • then you need to find the IP of your iPhone, you can see this through settings - wifi - i icon - ip address
  2. if this docker container stops, you can start it up again in your home directory through

cd /JitStreamer-EB
sudo docker compose up -d

Additional methods of installation

Click this

License

[LICENSE.md]

Contributing

Please do. Pull requests will be accepted after passing cargo clippy.

Thanks

Install jitstreamer-eb on Unraid in a few clicks.

Find jitstreamer-eb in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for jitstreamer-eb Review the template variables and paths Click Install

Download Statistics

1,347
Total Downloads

Related apps

Details

Repository
jkcoxson/jitstreamer-eb:latest
Last Updated2025-03-22
First Seen2025-02-17

Runtime arguments

Network
bridge
Shell
sh
Privileged
false
Extra Params
--cap-add=NET_ADMIN --cpus="1" --memory=500m

Template configuration

Database dirPathrw

This is where you must create your sqlite database containing information for your iDevices. Follow the instructions linked in the description.

Target
/app/jitstreamer.db
Value
/mnt/user/appdata/jitstreamer-eb/app/jitstreamer.db
Wireguard dirPathrw

A wireguard .conf file will be created here. This can be ignored for a basic setup. More info in the future.

Target
/etc/wireguard
Value
/mnt/user/appdata/jitstreamer-eb/etc/wireguard
Pair file dirPathrw

This is where you must place your pairing files (.plist) for your iDevices. Follow the instructions linked in the description.

Target
/var/lib/lockdown
Value
/mnt/user/appdata/jitstreamer-eb/var/lib/lockdown
Log levelVariable

Log level. Info gives enough info if you're not having issues. Set to full if you want way too much stuff.

Target
RUST_BACKTRACE
Value
info
Port 1Porttcp

This port is used during JIT acquisition. You should be able to change the HOST port if you need to. Don't change the container port.

Target
9172
Default
9172
Value
9172
Port 2Portudp

Another port used during JIT acquisition. I was unsuccessful getting it to work when host and container ports were the same. That's why they are different. You change the HOST port if you need to. Do not change the container port.

Target
51869
Default
51869
Value
51870
Tunnel deviceDevice

Require in order to run.

Target
/dev/net/tun:/dev/net/tun
Value
/dev/net/tun:/dev/net/tun
Runner countVariable
Target
RUNNER_COUNT
Value
1