Skip to content

Cassutti/onboarderr

 
 

Repository files navigation

ATTENTION

If you're reading this, the repo recently had a big update that might break current installs.

Setup is much easier now! just docker compose (tweak mounts first on compose.yml) and set all initial settings on the site itself.

The readme is mostly accurate, but new screenshots will be added soon.

How to Update

onboarderr

Self-hosted user onboarding site for Plex and Audiobookshelf server owners

Introducing Onboarderr

mainpage

Customization Options

Onboarderr is a customizable onboarding site for a host's Plex and (optional) Audiobookshelf servers. It includes user instructions, server highlights, and an admin dashboard.

As someone who's never made a website before, I wanted to:

  • Learn about HTML, CSS, websites in general, and self-hosting
  • Improve on a few "new user setup" guides I've seen for Plex
  • Offer a more appealing way for friends to join my Plex
  • Give me something constructive to do while unemployed lol

Admittedly, most of the code was generated by AI (ChatGPT, Gemini, Cursor).

I handled the layout, all copywriting/instructions, collected and edited screenshots, and came up with this whole thing.

Big thanks to @mon5termatt for many of the improvements in v2

Features

  • Customizable branding
  • Setup instructions for Plex and Audiobookshelf users
  • Carousel previews and media lists pulled from your server
  • Optional Discord notifications when users request access
  • Admin dashboard with tools and info
    • Links to other services
    • User request log
    • Invite Plex users
    • Add Audiobookshelf users
    • Storage bars
    • Change settings

Screenshots

Requirements

Docker or Python (3.10+)

Plex Media Server

Method of making your local server publicly accessible:

  • Tailscale w/ Tailscale Funnel if you're new to self-hosting. Simple and free.
  • I use Cloudflared now to handle a few local service URLs I want to make public.

Optional Requirements

Audiobookshelf Server and public URL to share with users

Pulsarr - Per-user content requests integrated w/ Sonarr & Radarr via Plex watchlist

  • Pulsarr is also able to push "media added" notifications through the Plex mobile app via Tautulli integration. Works fine for movies, but does not handle every new episode of shows.

Overseerr - User media requesting site

Depending if you have pulsarr or overseerr, or neither, some body content (section 5 on /onboarding) will change/disappear.

Tautulli - Per-user specific "episode/media item added" notifications on Discord

  • If a user wants notifications for each new episode of a show, I create a new private text channel that is only for them on my discord server, then use the info for that channel in Tautulli for a new notification agent. Condition for the Show Name and it directs those notifs to the channel I made.

Sonarr & Radarr - to grab the watchlisted content

Discord - to handle certain admin & user notifications

First Time Setup

git clone https://github.com/secretlycarl/onboarderr

cd onboarderr

Docker Compose Startup (Recommended)

A compose.yml file is included for use with Docker Compose.

Before running docker compose up -d, see below

Mounting Drives for Storage Bars

To display storage bars for specific drives (e.g., E: and F: on Windows, or /mnt/e and /mnt/f on Linux), you must:

  1. Add volume mounts for each drive in your compose.yml under the volumes: section:
  • Linux Example:
    volumes:
      - .:/app
      - /mnt/e:/mnt/e
      - /mnt/f:/mnt/f
    
  • Windows Example:
    volumes:
      - .:/app
      - E:\:/mnt/e
      - F:\:/mnt/f
    
  1. Set the DRIVES During setup or via variable in your .env file to the mount points inside the container (e.g., /mnt/e,/mnt/f).

Note: On Windows, you may need to allow Docker Desktop access to your drives (Docker Desktop > Settings > Resources > File Sharing).

Port Used

It runs on port 10000 by default. You can change this near the top of app.py.

If you change the port, you must also update compose.yml to use the same one.

Restarting the App

  • After setup or changing settings, the app will automatically restart itself to apply changes
  • You do not need to manually restart the container after setup or settings changes
  • If you ever need to restart manually (e.g., after updating code), use:
    • docker restart onboarderr (for Docker)
    • CTRL+C then python app.py again (for manual/venv use)

Manual Startup

Create and activate a venv (conda or through system python), then:

pip install -r requirements.txt

python app.py
  • It runs on port 10000 by default. You can change this near the top of app.py
  • Go to http://127.0.0.1:10000

Setup Form

  • First run will bring you to /setup. Everything here can be changed afterwards from Settings on /services (reccomended) or .env
  • The library descriptions you write are saved to library_notes.json, and displayed on the Plex onboarding page in section 1
  • After submission, the app will restart to apply the new .env and direct you to /login
  • ADMIN_PASSWORD will take you to services page, but you can browse the others from the links at the top
  • SITE_PASSWORD will not allow access to admin page
  • After submission, it will pull all posters from selected libraries for use across the site. This can take a while for large libraries, so keep an eye on the console to see when it finishes.

!!! Per-Host Tweaks !!!

Most customization is done on setup and settings in the admin panel, but you may want to tweak some HTML contents or instructional images it comes with.

  • onboarding_section7.html is personalized, you should change it to what you want it to say

  • Delete placeholder plex_submissions.json and audiobookshelf_submissions.json. The ones that come with it have example data to populate the requests sections on /services

Sharing

When ready,

  • Activate your tailscale funnel, cloudflare tunnel, or bingle tube
  • Share the public URL with friends

Updates

Option 1: git pull will try to update the repo and notify you if there are any incompatible changes, like if your customizations will overlap with anything from the update

Option 2:

git stash	# temporarily saves your changes (html, css, etc)
git pull	# gets updates
git stash pop	# re-applies your changes on top

Setup and customization is pretty quick now (no more .env editing and much less html editing) so don't be afraid to start from scratch.

Keep copies of custom assets in another folder!

Future goals

I've never made a project this complex, or had a project this many people were interested in, so I'm not clear on how the future development for this will go. I have some ideas to make it better, but getting this all set up in a way that it's customizable and not just for my machine only was a beast itself.

That being said, a release for v2 is coming soon. Already committed most of the new code changes.

Once that is finalized I want to overhaul the CSS and make the whole experience cleaner for v2.

If you want to make it better, please do! Fork, PR, make an issue

Thank You!

Thanks for your interest in my project! I hope you find it useful. If you want to give me a tip for putting this all together -

ko-fi.com/secretlycarl

About

Self-hosted user onboarding site for Plex and Audiobookshelf server owners

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 48.7%
  • HTML 48.0%
  • CSS 3.1%
  • Dockerfile 0.2%