From b185794e8292c91d02b1fe008c70a95b9de0f13e Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sat, 20 Dec 2025 12:05:08 -0500 Subject: [PATCH] Add Wizarr user invitation system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Wizarr container for generating invite links for friends - Update README with Wizarr setup instructions and services table - Add invite.jeffemmett.com to Cloudflare tunnel config example 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- README.md | 18 ++++++++++++++++++ docker-compose-server.yml | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/README.md b/README.md index f75ae04..911e503 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,8 @@ Add these hostnames to your Cloudflare tunnel config (`/root/cloudflared/config. # Media Request System - hostname: requests.jeffemmett.com service: http://localhost:80 +- hostname: invite.jeffemmett.com + service: http://localhost:80 - hostname: sonarr.jeffemmett.com service: http://localhost:80 - hostname: radarr.jeffemmett.com @@ -136,6 +138,21 @@ Then restart cloudflared: `docker restart cloudflared` - Port: `7878` (Radarr) or `8989` (Sonarr) - API Key: Get from Radarr/Sonarr Settings → General +#### Step 7: Configure Wizarr (User Invitations) +1. Go to `https://invite.jeffemmett.com` +2. Create your admin account on first visit +3. Connect to Jellyfin: + - Server URL: `http://jellyfin:8096` + - API Key: Get from Jellyfin → Dashboard → API Keys → Create +4. Create invite links: + - Set expiration (1 day, 1 week, never, etc.) + - Set usage limit (1 use, unlimited, etc.) + - Share the generated link with friends +5. When friends use the link, they'll be guided through: + - Creating their Jellyfin account + - Downloading mobile apps + - Connecting to your server + ## Services | Service | URL | Description | @@ -143,6 +160,7 @@ Then restart cloudflared: `docker restart cloudflared` | Jellyfin | https://movies.jeffemmett.com | Video streaming (movies & TV) | | Navidrome | https://music.jeffemmett.com | Music streaming server | | Jellyseerr | https://requests.jeffemmett.com | Media request interface | +| Wizarr | https://invite.jeffemmett.com | User invitation system | | Sonarr | https://sonarr.jeffemmett.com | TV show management | | Radarr | https://radarr.jeffemmett.com | Movie management | | Lidarr | https://lidarr.jeffemmett.com | Music management | diff --git a/docker-compose-server.yml b/docker-compose-server.yml index f166c9c..d067ac8 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -213,6 +213,28 @@ services: - "traefik.http.services.qbittorrent.loadbalancer.server.port=8080" - "traefik.docker.network=traefik-public" + # User Invitation System - Generate invite links for friends + wizarr: + image: ghcr.io/wizarrrr/wizarr:latest + container_name: wizarr + restart: unless-stopped + environment: + - APP_URL=https://invite.jeffemmett.com + - TZ=Europe/Berlin + volumes: + - ./config/wizarr:/data/database + networks: + - media-network + - traefik-public + labels: + - "traefik.enable=true" + - "traefik.http.routers.wizarr.rule=Host(`invite.jeffemmett.com`)" + - "traefik.http.routers.wizarr.entrypoints=web" + - "traefik.http.routers.wizarr.middlewares=wizarr-headers" + - "traefik.http.services.wizarr.loadbalancer.server.port=5690" + - "traefik.http.middlewares.wizarr-headers.headers.customRequestHeaders.X-Forwarded-Proto=https" + - "traefik.docker.network=traefik-public" + # Legacy Transmission (kept for compatibility, prefer qBittorrent) transmission: image: linuxserver/transmission:latest