Skip to main content

The documentation here is for an unreleased version of Recyclarr.

Visit the documentation site for the Current Version instead.

Server

server:
port: 7982
bind_address: localhost
management:
port: 7983
metrics: true
logging:
format: json # leave out to detect from the console
files: true
schedule:
enabled: true
cron: 0 0 * * *

The server section configures the persistent Recyclarr server, which is what runs when you start recyclarr serve or the Docker image. The server listens for HTTP requests from the CLI and other clients, and it runs syncs on a built-in schedule.

The server reads settings.yml once at startup. Restart the server after changing these settings.

port​

Optional. Default: 7982

The TCP port the server listens on. Valid values are 1 through 65535.

The Docker image ignores this setting and always listens on port 7982 inside the container. To use a different port on the host, change the Docker port mapping instead (for example, 8000:7982).

bind_address​

Optional. Default: localhost

The network address the server listens on. Use localhost to accept connections only from the same machine, or 0.0.0.0 to accept connections on all network interfaces.

The Docker image ignores this setting and always listens on all interfaces inside the container.

management​

Optional.

Controls the management port, a separate port that serves health probes and Prometheus metrics without an API key. The server never serves these endpoints on the API port. Only a persistent server opens a management port; the temporary server started by a CLI command does not. See Monitoring for the endpoints and how to use them.

port​

Optional. Default: 7983

The TCP port for health probes and metrics. Valid values are 1 through 65535. The management port listens on the same address as the API (bind_address).

This port does not change when you change port. It must differ from the API port; if both are the same, the server does not start.

The Docker image ignores this setting and always uses port 7983 inside the container. To use a different port on the host, change the Docker port mapping instead (for example, 8001:7983).

metrics​

Optional. Default: true

Serves Prometheus metrics at /metrics on the management port. Set to false to turn metrics off; /metrics then responds 404 Not Found. Health probes keep working either way.

logging​

Optional.

Controls where and how the server writes its log.

format​

Optional. Default: Detected from the console

The format of the persistent server's console output (standard output). When you leave it out, the server writes text when its output goes to a terminal, and JSON when its output is redirected, as it is under Docker, Kubernetes, systemd, a Windows service, or a Homebrew service. Set a value to use that format everywhere:

  • json: one JSON object per line, for log collectors such as the container runtime or journald. Each object starts with timestamp (UTC), level (trace, debug, info, warn, error, or fatal), message, and message_template. Events inside a trace add trace_id and span_id, and events with an error add exception.type, exception.message, and exception.stacktrace. The event's own properties follow as more keys.
  • text: human-readable lines.

The temporary server started by a CLI command ignores this setting. It writes only errors to its console and the rest to log files.

files​

Optional. Default: true

Writes log files to logs/server/ in the data directory. Every server writes them by default, however you run it. These files hold the debug logs you attach to a bug report. Log Janitor limits how many files the server keeps.

Set to false when something else already collects the console output and you do not want the files, for example in Kubernetes.

schedule​

Optional.

Controls the built-in sync schedule. Each scheduled sync covers every configured Sonarr and Radarr instance. The schedule does nothing when the CLI starts its own temporary server.

Only one sync runs at a time. If a sync is already queued or running when a scheduled time arrives, the server skips that scheduled sync and records it as skipped. The server does not run syncs it missed while it was stopped; it waits for the next scheduled time.

enabled​

Optional. Default: true

Set to false to turn off the built-in schedule. Use this when an external scheduler, such as a cron job on the host, starts syncs through the API instead.

cron​

Optional. Default: 0 0 * * * (every day at midnight)

A standard 5-field cron expression (minute, hour, day of month, month, day of week). A seconds field is not supported. Macros such as @daily, @hourly, and @weekly are also accepted.

Times use the system time zone. In a container, set the TZ environment variable; without it, the container uses UTC.

If the expression is not valid and the schedule is enabled, the server does not start.