ngrok-plex is a command line utility to run Plex through ngrok to bypass CGNAT or Double-NAT scenario.
Note
ngrok free accounts are bandwidth-limited to 1GB per month. You need to have a Pay-as-you-go plan for this project, see pricing here.
We utilise the docker buildx for multi-platform awareness. More information is available from docker here.
Simply pulling rlabinc/ngrok-plex:latest
should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
Architecture | Available | Platform |
---|---|---|
x86-64 | ✅ | linux/amd64 |
arm64 | ✅ | linux/arm64 |
armhf | ✅ | linux/arm/v7 |
i386 | ✅ | linux/386 |
You will have to extract the Plex token sets for you and provide it to the CLI. But don't worry, I'll guide you through the entire process.
The Enable Relay
must needs to be DISABLED from Settings
> Server
> Network
> Show Advanced
> Enable Relay
- Go to any media in your Plex library.
- Go to the Kebab Menu (⋮)
- Click on
Get Info
- Click on
View XML
— a new tab should open up. - Go to the very end of the URL. You should see a 20 character string after
X-Plex-Token=
. Copy this string.
Here are the commands you'll need:
docker run -d --network host \
--name=ngrok-plex \
-e TZ=Europe/London `#optional` \
-e PLEX_BaseURL='http://172.17.0.1:32400' `#better to use single quotes` \
-e PLEX_Token='XXXXXXXXXX' `#better to use single quotes` \
-e NGROK_Token='XXXXXXXXXX' `#better to use single quotes` \
rlabinc/ngrok-plex:latest
A cronjob will update new ngrok URL every 2 hours.
Container images are configured using parameters passed at runtime (such as those above).
Parameter | Function |
---|---|
-e TZ=Europe/London |
Specify a timezone to use EG Europe/London. |
-e PLEX_BaseURL='http://172.17.0.1:32400' |
Specify Plex URL to use. |
-e PLEX_Token='XXXXXXXXXX' |
Specify Plex token to use. |
-e NGROK_Token='XXXXXXXXXX' |
Specify ngrok token to use. |
- Client IP will always show as
localhost
. - No bandwidth guarantees.
There is no need to update the script version if you have made changes – it will be updated automatically.
https://github.com/origamiofficial/ngrok-plex
https://hub.docker.com/r/rlabinc/ngrok-plex
Script credit goes to @nagleaidan. Special thanks to @Rihcus for fixing many issues.
Use of this software may constitute a breach in the ngrok Terms of Service. Use at your own risk.