Jellybook

Disclamer: this guide assumes you followed my NGINX guide.

I already explained in the previous part what Jellybook was, so I won't here. If you're on Android, you're lucky. You'll only have to do the first step and just download the client from the app store or the APK from somewhere else like GitHub. If you're on iPhone, get ready. Before we do anything, update your NGINX config. I've been unable to get the Jellybook config working for anything but NGINX proxy. So this guide will be assuming you followed my NGINX guide. Let's begin. By the end of the guide following the steps for Jellyfin, you should have your config looking like this:

server {
    server_name EXAMPLE.DOMAIN.COM;

    location / {
        proxy_pass http://127.0.0.1:PORT_NUMBER_HERE;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/EXAMPLE.DOMAIN.COM/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/EXAMPLE.DOMAIN.COM/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = EXAMPLE.DOMAIN.COM) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name EXAMPLE.DOMAIN.COM;
    return 404; # managed by Certbot
}
    
We need to make some changes... Instead of tellling you where exactly to put the config, just replace it all with this but add back your domain where needeed. The parts added will have a pound sign above them to signify they are what was added:
# this was added from here
map $http_authorization $auth_header_fallback {
    default $http_authorization;
    ""      'MediaBrowser Client="JellyBook", Device="iPhone", DeviceId="JellyBookClient", Version="1.0.0", Token=""';
}

map $http_x_emby_authorization $x_emby_fallback {
    default $http_x_emby_authorization;
    ""      'MediaBrowser Client="JellyBook", Device="iPhone", DeviceId="JellyBookClient", Version="1.0.0", Token=""';
}
# to here

server {
  server_name example.domain.com;

location / {
    proxy_pass http://127.0.0.1:8096;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Protocol $scheme;
    proxy_set_header X-Forwarded-Host $http_host;

    proxy_buffering off;  # added
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    # from here
    proxy_set_header Authorization $auth_header_fallback;
    proxy_set_header X-Emby-Authorization $x_emby_fallback;
    proxy_set_header X-Emby-Token $http_x_emby_token;
    # to here was added
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.domain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = example.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name example.domain.com;
    return 404; # managed by Certbot
}
    
Run sudo nginx -t If it fails, go back. If it doesn't, run sudo systemctl reload nginx Jellybook would timeout when I would try and connect without some of these changes. Then it would login, but white screen. Some other changes were needed for that. Minus the domain changes, this is the same config I now use. I need to work more on SpyderFly. DaemonCraft too.

If you're following and you own an Android device, this is where we part ways. But if you're a fellow human trapped on iOS, you're stuck with me for a bit longer.

iOS Client Download

Jellybook is kinda on iOS, in the same way Oreo has to have a free way to enter a contest by jumping through loopholes. What I mean by that is a company like Oreo cannot legally make you buy their cookies to participate in a contest they're running. If they're offering a cash prize by printing on the inside of the packaging a number that could be a winner, and that was the only way to get a number, that is considered gambling and is illegal. Private companies are barred from holding lotteries. So what Oreo can do is have a section on their website where you can enter for free, but you would have to write something like a 30 page essay on why you love Oreos. You can enter that way, they just don't advertise that. I did Oreos because if I remember correctly, they did this exact thing before with something, I just don't remember when or what. This strategy is similar to how Apple handles its app development. iOS apps have to be made in a language Apple created called Swift. I touched upon it in my section on coding if you wanna read that. Swift is a language that is still accessable on Windows and Linux and you can run and compile on so, but if you are developing an app for iOS or MacOS, it must be compiled on a Mac. There are workarounds like XCode Cloud and I'm pretty sure GitHub offers a way to compile too, but it's one of the reasons that makes Mac the arguably best choice for programmers. Unless you intend to make an app for iOS or Mac, I still recommend Linux. That's not all of Apple's bull though. To get your app on the appstore, you need to pay Apple $100-$300 a year for a developer license. So to make it easier for developers, Apple's Oreo essay equivalent is TestFlight. Basically it's their way of saying "What do you mean we have a Monopoly? There's TestFlight!" But I think you also have to get approved for TestFlight too. Plus, you can only have 10,000 "testers" on TestFlight. I've never seen Jellybook have an open slot. So, how are we gonna install it?

Install

On your desktop device such as a laptop or PC, Mac or Windows, doesn't matter. Download the ipa file from Jellybook's GitHub and install iCloud and iTunes. Then, install what's called The AltStore. Plug your phone into your laptop/PC. Make sure to turn off your hotspot too as that caused issues for me. If you use Tailscale, disable that too. You should see a "trust this device?" popup on your phone. Click "yes" and enter your password. Next, you see the up arrow on the right side of your taskbar? By the clock, volume, and WiFi? Click that. For me, I see icons for stuff like Windows Defender, Curseforge, Discord, etc. You're going to want to look for a grey diamond shape. It should be in the top left. Click it. Click "install AltStore" and select your iPhone. Wait a bit, check for anything on screen on your laptop/PC and/or iPhone. There will be something. Then, click "install from ipa" and open the location to your downloads. Select the Jellybook IPA, and same steps. The app should now be installed. Go into settings->general->VPN & Device management. Under the "developer apps", click "trust" and agree. Then, go back to settings->privacy & security->developer mode. Toggle on. When you do, your phone will reboot. When it does, enter your password, and launch Jellybook. Enter your credentials, and enjoy reading. I'm tired, I didn't get great sleep. It's 4:00 pm, I think I'll just head to bed now. Seven Havens episodes 4-6 come out tomorrow.

Quick Navigation

  • Prerequisites
  • Configuring the OS
  • Minecraft Server
  • Minecraft JDS & BDS
  • Jellyfin
  • Nextcloud
  • Nextcloud LEMP stacks
  • Tailscale
  • Port Forwarding
  • HTTPS Configuration
  • Torrenting
  • Coding
  • SpyderFly
  • Recommended Tools
  • Back To Homepage

    Other info

    Any issues with this guide, shoot me an email "[email protected]"

    Date created: October 15th, 2026

    Last modified: October 15th, 2026

    this site is open source