Files

671 lines
15 KiB
Groff

.\" Manpage for miniflux.
.TH "MINIFLUX" "1" "April 18, 2026" "\ \&" "\ \&"
.SH NAME
miniflux \- Minimalist and opinionated feed reader
.SH SYNOPSIS
\fBminiflux\fR [\fBoptions\fR]
.SH DESCRIPTION
\fBminiflux\fR is a minimalist and opinionated feed reader.
.SH OPTIONS
.B \-h, \-help
.RS 4
Show usage information and exit\&.
.RE
.PP
.B \-config-dump
.RS 4
Print parsed configuration values.
.br
This will include sensitive information like passwords\&.
.RE
.PP
.B \-c /path/to/miniflux.conf
.RS 4
Load configuration file\&.
.RE
.PP
.B \-config-file /path/to/miniflux.conf
.RS 4
Load configuration file\&.
.RE
.PP
.B \-create-admin
.RS 4
Create an admin user from an interactive terminal\&.
.RE
.PP
.B \-debug
.RS 4
Set log level to debug\&.
.RE
.PP
.B \-export-user-feeds <username>
.RS 4
Export user feeds (provide the username as argument)\&.
.br
Example:
.EX
miniflux -export-user-feeds someone > feeds.xml
.EE
.RE
.PP
.B \-flush-sessions
.RS 4
Flush all sessions (disconnect users)\&.
.RE
.PP
.B \-healthcheck <endpoint>
.RS 4
Perform a health check on the given endpoint\&.
.br
The value "auto" tries to guess the health check endpoint\&.
.RE
.PP
.B \-i
.RS 4
Show build information\&.
.RE
.PP
.B \-info
.RS 4
Show build information\&.
.RE
.PP
.B \-migrate
.RS 4
Run SQL migrations\&.
.RE
.PP
.B \-refresh-feeds
.RS 4
Refresh a batch of feeds and exit\&.
.RE
.PP
.B \-reset-feed-errors
.RS 4
Clear all feed errors for all users\&.
.RE
.PP
.B \-reset-feed-next-check-at
.RS 4
Reset the next check time for all feeds\&.
.RE
.PP
.B \-reset-password
.RS 4
Reset user password\&.
.RE
.PP
.B \-run-cleanup-tasks
.RS 4
Run cleanup tasks (delete old sessions and archive old entries)\&.
.RE
.PP
.B \-v
.RS 4
Show application version\&.
.RE
.PP
.B \-version
.RS 4
Show application version\&.
.RE
.SH CONFIGURATION FILE
The configuration file is a text file that follows these rules:
.LP
- Miniflux expects each line to be in KEY=VALUE format.
.br
- Lines beginning with # are processed as comments and ignored.
.br
- Blank lines are ignored.
.br
- There is no variable interpolation.
.PP
Keys are the same as the environment variables described below\&.
.br
Environment variables override the values defined in the config file\&.
.SH ENVIRONMENT
Boolean options accept the following values (case-insensitive):
1/0, yes/no, true/false, on/off\&.
.br
For variables ending in \fB_FILE\fR, the value is a path to a file
that contains the corresponding secret value\&.
.TP
.B ADMIN_PASSWORD
Admin user password, used only if \fBCREATE_ADMIN\fR is enabled\&.
.br
Default is empty\&.
.TP
.B ADMIN_PASSWORD_FILE
Path to a secret key exposed as a file, it should contain the
\fBADMIN_PASSWORD\fR value\&.
.br
Default is empty\&.
.TP
.B ADMIN_USERNAME
Admin user login, used only if \fBCREATE_ADMIN\fR is enabled\&.
.br
Default is empty\&.
.TP
.B ADMIN_USERNAME_FILE
Path to a secret key exposed as a file, it should contain the
\fBADMIN_USERNAME\fR value\&.
.br
Default is empty\&.
.TP
.B AUTH_PROXY_HEADER
Proxy authentication HTTP header\&.
.br
The option \fBTRUSTED_REVERSE_PROXY_NETWORKS\fR must be configured
to allow the proxy to authenticate users\&.
.br
Default is empty.
.TP
.B AUTH_PROXY_USER_CREATION
Set to 1 to create users based on proxy authentication information\&.
.br
When disabled, users must already exist in Miniflux to sign in
through the proxy\&.
.br
Disabled by default\&.
.TP
.B BASE_URL
Base URL to generate HTML links and base path for cookies\&.
.br
Default is http://localhost\&.
.TP
.B BATCH_SIZE
Number of feeds to send to the queue for each interval\&.
.br
Default is 100 feeds\&.
.TP
.B CERT_DOMAIN
Use Let's Encrypt to get automatically a certificate for this domain\&.
.br
Default is empty\&.
.TP
.B CERT_FILE
Path to SSL certificate\&.
.br
Default is empty\&.
.TP
.B CLEANUP_ARCHIVE_BATCH_SIZE
Number of entries to archive for each job interval\&.
.br
Default is 10000 entries\&.
.TP
.B CLEANUP_ARCHIVE_READ_DAYS
Number of days before the cleanup job archives read entries\&.
.br
Archiving deletes non-bookmarked, non-shared read entries from the
database and records a tombstone to prevent the same entry from being
imported again during a later feed refresh\&.
.br
Set to -1 to disable automatic archiving of read entries\&.
.br
Default is 60 days\&.
.TP
.B CLEANUP_ARCHIVE_UNREAD_DAYS
Number of days before the cleanup job archives unread entries\&.
.br
Archiving deletes non-bookmarked, non-shared unread entries from the
database and records a tombstone to prevent the same entry from being
imported again during a later feed refresh\&.
.br
Set to -1 to disable automatic archiving of unread entries\&.
.br
Default is 180 days\&.
.TP
.B CLEANUP_FREQUENCY_HOURS
Cleanup job frequency. Remove old sessions and archive entries\&.
.br
Default is 24 hours\&.
.TP
.B CLEANUP_REMOVE_SESSIONS_DAYS
Number of days after removing old sessions from the database\&.
.br
Default is 30 days\&.
.TP
.B CREATE_ADMIN
Set to 1 to create an admin user from environment variables\&.
.br
Disabled by default\&.
.TP
.B DATABASE_CONNECTION_LIFETIME
Set the maximum amount of time a connection may be reused\&.
.br
Default is 5 minutes\&.
.TP
.B DATABASE_MAX_CONNS
Maximum number of database connections\&.
.br
Default is 20\&.
.TP
.B DATABASE_MIN_CONNS
Minimum number of database connections\&.
.br
Default is 1\&.
.TP
.B DATABASE_URL
PostgreSQL connection parameters\&.
.br
Default is "user=postgres password=postgres dbname=miniflux2 sslmode=disable"\&.
.TP
.B DATABASE_URL_FILE
Path to a secret key exposed as a file, it should contain the
\fBDATABASE_URL\fR value\&.
.br
Default is empty\&.
.TP
.B DISABLE_API
Disable miniflux's API\&.
.br
Default is false (The API is enabled)\&.
.TP
.B DISABLE_HSTS
Disable HTTP Strict Transport Security header if \fBHTTPS\fR is set\&.
.br
Default is false (The HSTS is enabled)\&.
.TP
.B DISABLE_HTTP_SERVICE
Set the value to 1 to disable the HTTP service\&.
.br
Default is false (The HTTP service is enabled)\&.
.TP
.B DISABLE_LOCAL_AUTH
Disable local authentication\&.
.br
When set to true, the username/password form is hidden from
the login screen, and the options to change username/password
or unlink OAuth2 account are hidden from the settings page.
.br
This option requires an alternative authentication source
such as OAuth2 or auth proxy\&.
.br
If remote user creation is disabled, only existing users can sign in\&.
.br
Default is false\&.
.TP
.B DISABLE_SCHEDULER_SERVICE
Set the value to 1 to disable the internal scheduler service\&.
.br
Default is false (The internal scheduler service is enabled)\&.
.TP
.B FETCHER_ALLOW_PRIVATE_NETWORKS
Set to 1 to allow outgoing fetcher requests to private or loopback networks\&.
.br
Disabled by default, private networks are refused\&.
.TP
.B FETCH_BILIBILI_WATCH_TIME
Set the value to 1 to scrape video duration from Bilibili website and
use it as a reading time\&.
.br
Disabled by default\&.
.TP
.B FETCH_NEBULA_WATCH_TIME
Set the value to 1 to scrape video duration from Nebula website and
use it as a reading time\&.
.br
Disabled by default\&.
.TP
.B FETCH_ODYSEE_WATCH_TIME
Set the value to 1 to scrape video duration from Odysee website and
use it as a reading time\&.
.br
Disabled by default\&.
.TP
.B FETCH_YOUTUBE_WATCH_TIME
Set the value to 1 to scrape video duration from YouTube website and
use it as a reading time\&.
.br
Disabled by default\&.
.TP
.B FORCE_REFRESH_INTERVAL
The minimum interval for manual refresh\&.
.br
Default is 30 minutes\&.
.TP
.B HTTP_CLIENT_MAX_BODY_SIZE
Maximum body size for HTTP requests in Mebibyte (MiB)\&.
.br
Default is 15 MiB\&.
.TP
.B HTTP_CLIENT_PROXIES
Enable proxy rotation for outgoing requests by providing a
comma-separated list of proxy URLs\&.
.br
Default is empty\&.
.TP
.B HTTP_CLIENT_PROXY
Proxy URL to use when the "Fetch via proxy" feed option is enabled\&.
.br
Default is empty\&.
.TP
.B HTTP_CLIENT_TIMEOUT
Time limit in seconds before the HTTP client cancels the request\&.
.br
Default is 20 seconds\&.
.TP
.B HTTP_CLIENT_USER_AGENT
The default User-Agent header to use for the HTTP client.
Can be overridden in per-feed settings\&.
.br
When empty, Miniflux uses a default User-Agent that includes
the Miniflux version\&.
.br
Default is empty.
.TP
.B HTTP_SERVER_TIMEOUT
Read, write, and idle timeout in seconds for the HTTP server\&.
.br
Default is 300 seconds\&.
.TP
.B HTTPS
Forces cookies to use secure flag and send HSTS header\&.
.br
Default is disabled\&.
.TP
.B INTEGRATION_ALLOW_PRIVATE_NETWORKS
Set to 1 to allow outgoing integration requests to private
or loopback networks\&.
.br
Disabled by default, private networks are refused\&.
.TP
.B INVIDIOUS_INSTANCE
Set a custom invidious instance to use\&.
.br
Default is yewtu.be\&.
.TP
.B KEY_FILE
Path to SSL private key\&.
.br
Default is empty\&.
.TP
.B LISTEN_ADDR
Address to listen on.
Use absolute path to listen on Unix socket
(/var/run/miniflux.sock)\&.
.br
Multiple addresses can be specified, separated by commas.
For example: 127.0.0.1:8080, 127.0.0.1:8081\&.
.br
Default is 127.0.0.1:8080\&.
.TP
.B LOG_DATE_TIME
Display the date and time in log messages\&.
.br
Disabled by default\&.
.TP
.B LOG_FILE
Supported values are "stderr", "stdout", or a file name\&.
.br
Default is "stderr"\&.
.TP
.B LOG_FORMAT
Supported log formats are "text" or "json"\&.
.br
Default is "text"\&.
.TP
.B LOG_LEVEL
Supported values are "debug", "info", "warning", or "error"\&.
.br
Default is "info"\&.
.TP
.B MAINTENANCE_MESSAGE
Define a custom maintenance message\&.
.br
Default is "Miniflux is currently under maintenance"\&.
.TP
.B MAINTENANCE_MODE
Set to 1 to enable maintenance mode\&.
.br
Disabled by default\&.
.TP
.B MEDIA_PROXY_CUSTOM_URL
Sets an external server to proxy media through\&.
.br
Default is empty, Miniflux does the proxying\&.
.TP
.B MEDIA_PROXY_HTTP_CLIENT_TIMEOUT
Time limit in seconds before the media proxy HTTP client cancels the request\&.
.br
Default is 120 seconds\&.
.TP
.B MEDIA_PROXY_RESOURCE_TYPES
A comma-separated list of media types to proxify.
Supported values are: image, audio, video\&.
.br
Default is image\&.
.TP
.B MEDIA_PROXY_MODE
Possible values: http-only, all, or none\&.
.br
Default is http-only\&.
.TP
.B MEDIA_PROXY_PRIVATE_KEY
Set a custom private key used to sign proxified media URLs\&.
.br
By default, a secret key is randomly generated during startup\&.
.TP
.B METRICS_ALLOWED_NETWORKS
List of networks allowed to access the metrics endpoint
(comma-separated values)\&.
.br
Default is 127.0.0.1/8\&.
.TP
.B METRICS_COLLECTOR
Set to 1 to enable metrics collector. Expose a /metrics endpoint for Prometheus.
.br
Disabled by default\&.
.TP
.B METRICS_PASSWORD
Metrics endpoint password for basic HTTP authentication\&.
.br
Default is empty\&.
.TP
.B METRICS_PASSWORD_FILE
Path to a file that contains the password for the metrics
endpoint HTTP authentication\&.
.br
Default is empty\&.
.TP
.B METRICS_REFRESH_INTERVAL
Refresh interval to collect database metrics\&.
.br
Default is 60 seconds\&.
.TP
.B METRICS_USERNAME
Metrics endpoint username for basic HTTP authentication\&.
.br
Default is empty\&.
.TP
.B METRICS_USERNAME_FILE
Path to a file that contains the username for the metrics
endpoint HTTP authentication\&.
.br
Default is empty\&.
.TP
.B OAUTH2_CLIENT_ID
OAuth2 client ID\&.
.br
Default is empty\&.
.TP
.B OAUTH2_CLIENT_ID_FILE
Path to a secret key exposed as a file, it should contain the
\fBOAUTH2_CLIENT_ID\fR value\&.
.br
Default is empty\&.
.TP
.B OAUTH2_CLIENT_SECRET
OAuth2 client secret\&.
.br
Default is empty\&.
.TP
.B OAUTH2_CLIENT_SECRET_FILE
Path to a secret key exposed as a file, it should contain the
\fBOAUTH2_CLIENT_SECRET\fR value\&.
.br
Default is empty\&.
.TP
.B OAUTH2_OIDC_DISCOVERY_ENDPOINT
OpenID Connect discovery endpoint\&.
.br
Default is empty\&.
.TP
.B OAUTH2_OIDC_PROVIDER_NAME
Name to display for the OIDC provider\&.
.br
Default is "OpenID Connect"\&.
.TP
.B OAUTH2_PROVIDER
Possible values are "google" or "oidc"\&.
.br
Default is empty\&.
.TP
.B OAUTH2_REDIRECT_URL
OAuth2 redirect URL\&.
.br
This URL must be registered with the provider and is
something like
https://miniflux.example.org/oauth2/oidc/callback\&.
.br
Default is empty\&.
.TP
.B OAUTH2_USER_CREATION
Set to 1 to authorize OAuth2 user creation\&.
.br
When disabled, users must already exist in Miniflux or have
a linked OAuth2 account to sign in\&.
.br
Disabled by default\&.
.TP
.B POLLING_FREQUENCY
Interval in minutes for the background job scheduler.
.br
Determines how often a batch of feeds is selected for refresh,
based on their last refresh time\&.
.br
Default is 60 minutes\&.
.TP
.B POLLING_LIMIT_PER_HOST
Limits the number of concurrent requests to the same hostname
when polling feeds.
.br
This helps prevent overwhelming a single server during batch
processing by the worker pool.
.br
Default is 0 (disabled)\&.
.TP
.B POLLING_PARSING_ERROR_LIMIT
The maximum number of parsing errors that the program will
try before stopping polling a feed.
.br
Once the limit is reached, the user must refresh the feed
manually. Set to 0 for unlimited.
.br
Default is 3\&.
.TP
.B POLLING_SCHEDULER
Determines the strategy used to schedule feed polling.
.br
Supported values are "round_robin" and "entry_frequency".
.br
- "round_robin": Feeds are polled in a fixed, rotating order.
.br
- "entry_frequency": The polling interval for each feed is
based on the average update frequency over the past week.
.br
The number of feeds polled in a given period is limited by
the POLLING_FREQUENCY and BATCH_SIZE settings.
.br
Regardless of the scheduler used, the total number of polled
feeds will not exceed the maximum allowed per polling cycle.
.br
Default is "round_robin"\&.
.TP
.B PORT
Override \fBLISTEN_ADDR\fR to \fB0.0.0.0:$PORT\fR\&.
.br
Default is empty\&.
.TP
.B RUN_MIGRATIONS
Set to 1 to run database migrations\&.
.br
Disabled by default\&.
.TP
.B SCHEDULER_ENTRY_FREQUENCY_FACTOR
Factor to increase refresh frequency for the entry frequency scheduler\&.
.br
Default is 1\&.
.TP
.B SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL
Maximum interval in minutes for the entry frequency scheduler\&.
.br
Default is 1440 minutes (24 hours)\&.
.TP
.B SCHEDULER_ENTRY_FREQUENCY_MIN_INTERVAL
Minimum interval in minutes for the entry frequency scheduler\&.
.br
Default is 5 minutes\&.
.TP
.B SCHEDULER_ROUND_ROBIN_MAX_INTERVAL
Maximum interval in minutes for the round robin scheduler\&.
.br
Default is 1440 minutes (24 hours)\&.
.TP
.B SCHEDULER_ROUND_ROBIN_MIN_INTERVAL
Minimum interval in minutes for the round robin scheduler\&.
.br
Default is 60 minutes\&.
.TP
.B TRUSTED_REVERSE_PROXY_NETWORKS
A comma-separated list of networks (CIDR notation) allowed to use the proxy
authentication header, \fBX-Forwarded-For\fR,
\fBX-Forwarded-Proto\fR, and \fBX-Real-Ip\fR headers\&.
.br
Default is empty\&.
.TP
.B WATCHDOG
Enable or disable Systemd watchdog\&.
.br
Enabled by default\&.
.TP
.B WEBAUTHN
Enable or disable WebAuthn/Passkey authentication\&.
.br
You must provide a username on the login page if you are
using non-residential keys.
However, this is not required for discoverable credentials\&.
.br
Default is disabled\&.
.TP
.B WORKER_POOL_SIZE
Number of background workers\&.
.br
Default is 16 workers\&.
.TP
.B YOUTUBE_API_KEY
YouTube API key for use with FETCH_YOUTUBE_WATCH_TIME.
If nonempty, the duration will be fetched from the YouTube API.
Otherwise, the duration will be fetched from the YouTube
website\&.
.br
Default is empty\&.
.TP
.B YOUTUBE_EMBED_URL_OVERRIDE
YouTube URL which will be used for embeds\&.
.br
Default is https://www.youtube-nocookie.com/embed/\&.
.SH AUTHORS
Miniflux is developed and maintained by Fr\['e]d\['e]ric Guillot
with contributions from the Miniflux community\&.
.SH "COPYRIGHT"
Miniflux is released under the Apache 2.0 license\&.