---
title: "Jellyseerr Setup Wizard Loops and SQLite Gotchas"
aliases: [jellyseerr setup, jellyseerr serverType, jellyseerr initialized, jellyseerr wizard loop]
tags: [jellyseerr, sqlite, jellyfin, homelab, nginx, npm]
sources:
  - "daily/2026-04-30.md"
created: 2026-04-30
updated: 2026-04-30
---

# Jellyseerr Setup Wizard Loops and SQLite Gotchas

Jellyseerr has several sharp edges during initial setup: the wrong `serverType` integer causes the media server connection to silently fail, a `public.initialized = false` flag in SQLite makes the setup wizard reappear on every page load even after completion, and an undefined `urlBase` builds a broken URL. All three issues are fixable via direct SQLite edits.

## Key Points

- `serverType: 2` = Jellyfin; `serverType: 4` = NOT_CONFIGURED — using 4 causes the setup wizard to loop
- `public.initialized = false` in the `public` table of `db.sqlite3` makes the wizard reappear every time; fix by setting it to `true` directly in SQLite
- `urlBase` must be an empty string `""`, not `null` or `undefined` — undefined causes the URL to be built as `http://<ip>:<port>undefined`
- SSL error `ERR_SSL_UNRECOGNIZED_NAME_ALERT` during setup usually means the nginx conf is in the wrong path (NPM proxy host conf lives at `/opt/npm/data/nginx/proxy_host/<id>.conf`)

## Details

### serverType integer map

| Value | Meaning |
|-------|---------|
| `2` | Jellyfin |
| `3` | Plex |
| `4` | NOT_CONFIGURED (default; breaks wizard) |

### Fixing the wizard loop via SQLite

The setup wizard checks `public.initialized` on every load. If Jellyseerr was partially set up but the flag was never flipped, the wizard keeps appearing even though configuration exists.

```bash
# Enter the container or host path
sqlite3 /opt/jellyseerr/db/db.sqlite3

# Check current state
SELECT * FROM public;

# Fix the loop
UPDATE public SET initialized = 1 WHERE id = 1;

.quit
```

After updating, restart Jellyseerr — the wizard will not reappear.

### urlBase must be empty string

In `settings.json` (or the DB equivalent), `urlBase` being `null` or JavaScript `undefined` causes string concatenation to produce `http://192.168.1.230:8096undefined`. Set it explicitly:

```json
{
  "urlBase": ""
}
```

### NPM proxy host conf path

When `ERR_SSL_UNRECOGNIZED_NAME_ALERT` appears, the nginx conf for the proxy host was placed in the wrong location. NPM's proxy host confs live at:

```
/opt/npm/data/nginx/proxy_host/<numeric-id>.conf
```

Placing a custom conf elsewhere means NPM ignores it (or nginx loads an incomplete config). Use the NPM UI to set SSL, or edit the file at the correct path and reload nginx inside the NPM container.

## Related Concepts

- [[wiki/concepts/jellyfin-tmdb-thetvdb-plugin]] — Jellyfin media server setup; plugin and naming gotchas that affect what Jellyseerr can discover
- [[wiki/concepts/uptime-kuma-socketio-management]] — Another service managed via SQLite direct edits when the UI is unavailable
- [[wiki/homelab/_index]] — Media stack overview: Radarr, Sonarr, Prowlarr, Jellyfin, Jellyseerr

## Sources

- [[daily/2026-04-30.md]] — Jellyseerr setup wizard looped due to wrong serverType (4 instead of 2) and public.initialized = false; urlBase undefined caused broken URL; SSL error traced to wrong NPM conf path
