Skip to content

Latest commit

 

History

920 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spottarr

A modern spotnet client and index for your *Arrs.

Docker

Spotnet is a protocol on top of Usenet that provides a decentralized alternative to indexing websites.

Spottarr is a small application that can index the spotnet messages (spots) and exposes them as a newznab indexer.

Using Spottarr it becomes very easy to search spots directly from Radarr, Sonarr, Readarr, Lidarr, Prowlarr and many other newznab compatible tools.

Installing and running

Spottarr can easily be integrated in your existing *Arrs using docker compose:

services:
  spottarr:
    image: ghcr.io/spottarr/spottarr:latest
    container_name: spottarr
    environment:
      - "USENET__HOSTNAME=my.news.server.com"
      - "USENET__USERNAME=username"
      - "USENET__PASSWORD=somep@ssw0rd"
      - "USENET__PORT=563"
      - "USENET__USETLS=true"
      - "USENET__MAXCONNECTIONS=10" # Adjust based on your usenet provider and other download clients
      - "SPOTNET__RETRIEVEAFTER=2024-10-01T00:00:00Z"
      - "SPOTNET__IMPORTBATCHSIZE=10000" # Adjust based on available memory
      - "SPOTNET__RETENTIONDAYS=365" # Use 0 for unlimited
      - "SPOTNET__IMPORTADULTCONTENT=false"
      - "TZ=Etc/GMT" # Set your timezone, e.g. Europe/Amsterdam
    volumes:
      - spottarr-data:/data
    ports:
      - "8383:8383"
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 200M # Adjust based on available memory
volumes:
  spottarr-data:

Note

Make sure to properly escape special characters like $ in your password.

Note

By default, Spottarr runs as the non-privileged user app with the UID 1654.

When using bind mounts instead of a docker volume, make sure to either give this UID access to the mounted directory, or change the UID to a user that does have access to the bind mount using the docker-compose user directive.

Once the Spottarr is up and running, it will automatically start indexing the spotnet messages starting from the provided SPOTNET_RETRIEVEAFTER date.

Integrating with *Arrs

After starting Spottarr, it can easily be connected to the *Arr of your choice:

  1. In your *Arr add a new indexer and search for Generic Newznab Step 1
  2. In the Url field fill out the URL of your Spottarr instance Step 2
  3. Spottarr will now be used for searches Step 3

Newznab API security

Note

By default, the Spottarr newznab API does not require an API key. Anyone with access to your Spottarr instance can perform searches on it. To enable API key authorization, set the NEWZNAB__APIKEY environment variable to a secure value and update your *Arr indexer configuration accordingly.

Maintenance API

Besides the Newznab API, Spottarr exposes a small REST API for maintenance, documented at /scalar and /openapi/v1.json. It is disabled until an API key is configured through the ADMIN__APIKEY environment variable, and every request must pass that key in the X-Api-Key header.

GET    /api/v1/spots/{id}      # inspect a single spot
GET    /api/v1/spots/reimport  # how many spots are waiting to be reread from usenet
POST   /api/v1/spots/reimport  # mark spots to be reread from usenet
DELETE /api/v1/spots/reimport  # unmark them again
GET    /api/v1/spots/reindex   # how many spots are waiting to be reindexed
POST   /api/v1/spots/reindex   # mark spots to have their attributes derived again
DELETE /api/v1/spots/reindex   # unmark them again

Use a reindex when Spottarr parses stored spots differently, for example after a change to release title parsing. Use a reimport when the stored spot itself is incomplete and the article has to be read from usenet again. Rereading costs one usenet request per spot, so marking every spot takes a while.

Marked spots are processed by the regular import job, which is triggered immediately when spots are marked. A reimport pauses the import of new spots until it is done.

Select the spots to mark by id, by the date they were spotted, or all of them:

curl -X POST http://localhost:8383/api/v1/spots/reimport \
  -H "X-Api-Key: $ADMIN_API_KEY" -H "Content-Type: application/json" \
  -d '{"spotIds": [1234]}'

curl -X POST http://localhost:8383/api/v1/spots/reimport \
  -H "X-Api-Key: $ADMIN_API_KEY" -H "Content-Type: application/json" \
  -d '{"spottedAfter": "2026-01-01T00:00:00Z", "spottedBefore": "2026-02-01T00:00:00Z"}'

curl -X POST http://localhost:8383/api/v1/spots/reimport \
  -H "X-Api-Key: $ADMIN_API_KEY" -H "Content-Type: application/json" \
  -d '{"all": true}'

Postgres support

Warning

Postgres support is considered experimental at this time. No migration path is provided from SQLite to Postgres, you will have to start with a fresh database.

It's possible to bring your own Postgres database instead of using the built-in SQLite database. To do so, add the following environment variables:

environment:
  ...
  - "DATABASE__PROVIDER=Postgres"
  - "DATABASE__CONNECTIONSTRING=Host=yourhost;Database=spottarr;Username=postgres;Password=xxxxxxxxxxx"
  ...

Issues, requests and improvements

Issues can be used to submit application errors as long as the issue template is properly filled out.

Requests for new functionality will only be considered if you can at the least provide a technical proposal and preferably a PR.

The aim is to keep Spottarr as simple as possible, but any suggestions to improve indexing are of course welcome.

Motivation

Spotnet provides a great decentralized source for Usenet indexing, but most existing clients are no longer maintained desktop applications, or building on top of a relatively outdated codebase.

While some alternatives like Spotweb are still very much alive, I've personally had some issues matching the search results when searching from *Arrs.

The aim of Spottarr is to provide a more modern application that aims for efficiency and more precise search results, while leaving the media management and browsing to the existing *Arrs.

About

A modern spotnet client and index for your *arr apps.

Topics

Resources

Stars

148 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages