.\" Manpage for miniflux. .TH "MINIFLUX" "1" "March 1, 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 .PP .B \-h, \-help .RS 4 Show usage information and exit\&. .RE .PP .B \-config-dump .RS 4 Print parsed configuration values. 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 .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 .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 .PP 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 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 after marking read entries as removed\&. .br Set to -1 to keep all read entries. .br Default is 60 days\&. .TP .B CLEANUP_ARCHIVE_UNREAD_DAYS Number of days after marking unread entries as removed\&. .br Set to -1 to keep all 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 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 Disabled by default\&. .TP .B POLLING_FREQUENCY Interval 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 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 .P Miniflux is developed and maintained by Fr\['e]d\['e]ric Guillot with contributions from the Miniflux community\&. .SH "COPYRIGHT" .P Miniflux is released under the Apache 2.0 license\&.