diff --git a/README.md b/README.md index 83c71c4f..a3887730 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ There are multiple ways to configure CommaFeed: The properties file is recommended because CommaFeed will be able to warn about invalid properties and typos. -All [CommaFeed settings](commafeed-server/doc/commafeed.adoc) are optional and have sensible default values. +All [CommaFeed settings](commafeed-server/doc/commafeed.md) are optional and have sensible default values. When logging in, credentials are stored in an encrypted cookie. The encryption key is randomly generated at startup, meaning that you will have to log back in after each restart of the application. To prevent this, you can set the diff --git a/commafeed-server/doc/commafeed.adoc b/commafeed-server/doc/commafeed.adoc deleted file mode 100644 index 9bcfc05f..00000000 --- a/commafeed-server/doc/commafeed.adoc +++ /dev/null @@ -1,687 +0,0 @@ -[.configuration-legend] -icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime -[.configuration-reference.searchable, cols="80,.^10,.^10"] -|=== - -h|[.header-title]##Configuration property## -h|Type -h|Default - -a| [[commafeed-server_commafeed-hide-from-web-crawlers]] [.property-path]##link:#commafeed-server_commafeed-hide-from-web-crawlers[`commafeed.hide-from-web-crawlers`]## - -[.description] --- -Whether to expose a robots.txt file that disallows web crawlers and search engine indexers. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HIDE_FROM_WEB_CRAWLERS+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HIDE_FROM_WEB_CRAWLERS+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`true` - -a| [[commafeed-server_commafeed-image-proxy-enabled]] [.property-path]##link:#commafeed-server_commafeed-image-proxy-enabled[`commafeed.image-proxy-enabled`]## - -[.description] --- -If enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser. This is useful if commafeed is accessed through a restricting proxy that blocks some feeds that are followed. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_IMAGE_PROXY_ENABLED+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_IMAGE_PROXY_ENABLED+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`false` - -a| [[commafeed-server_commafeed-password-recovery-enabled]] [.property-path]##link:#commafeed-server_commafeed-password-recovery-enabled[`commafeed.password-recovery-enabled`]## - -[.description] --- -Enable password recovery via email. Quarkus mailer will need to be configured. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_PASSWORD_RECOVERY_ENABLED+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_PASSWORD_RECOVERY_ENABLED+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`false` - -a| [[commafeed-server_commafeed-announcement]] [.property-path]##link:#commafeed-server_commafeed-announcement[`commafeed.announcement`]## - -[.description] --- -Message displayed in a notification at the bottom of the page. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_ANNOUNCEMENT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_ANNOUNCEMENT+++` -endif::add-copy-button-to-env-var[] --- -|string -| - -a| [[commafeed-server_commafeed-google-analytics-tracking-code]] [.property-path]##link:#commafeed-server_commafeed-google-analytics-tracking-code[`commafeed.google-analytics-tracking-code`]## - -[.description] --- -Google Analytics tracking code. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_GOOGLE_ANALYTICS_TRACKING_CODE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_GOOGLE_ANALYTICS_TRACKING_CODE+++` -endif::add-copy-button-to-env-var[] --- -|string -| - -a| [[commafeed-server_commafeed-google-auth-key]] [.property-path]##link:#commafeed-server_commafeed-google-auth-key[`commafeed.google-auth-key`]## - -[.description] --- -Google Auth key for fetching Youtube channel favicons. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_GOOGLE_AUTH_KEY+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_GOOGLE_AUTH_KEY+++` -endif::add-copy-button-to-env-var[] --- -|string -| - -h|[[commafeed-server_section_commafeed-http-client]] [.section-name.section-level0]##link:#commafeed-server_section_commafeed-http-client[HTTP client configuration]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-http-client-user-agent]] [.property-path]##link:#commafeed-server_commafeed-http-client-user-agent[`commafeed.http-client.user-agent`]## - -[.description] --- -User-Agent string that will be used by the http client, leave empty for the default one. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_USER_AGENT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_USER_AGENT+++` -endif::add-copy-button-to-env-var[] --- -|string -| - -a| [[commafeed-server_commafeed-http-client-connect-timeout]] [.property-path]##link:#commafeed-server_commafeed-http-client-connect-timeout[`commafeed.http-client.connect-timeout`]## - -[.description] --- -Time to wait for a connection to be established. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_CONNECT_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_CONNECT_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`5S` - -a| [[commafeed-server_commafeed-http-client-ssl-handshake-timeout]] [.property-path]##link:#commafeed-server_commafeed-http-client-ssl-handshake-timeout[`commafeed.http-client.ssl-handshake-timeout`]## - -[.description] --- -Time to wait for SSL handshake to complete. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_SSL_HANDSHAKE_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_SSL_HANDSHAKE_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`5S` - -a| [[commafeed-server_commafeed-http-client-socket-timeout]] [.property-path]##link:#commafeed-server_commafeed-http-client-socket-timeout[`commafeed.http-client.socket-timeout`]## - -[.description] --- -Time to wait between two packets before timeout. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_SOCKET_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_SOCKET_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`10S` - -a| [[commafeed-server_commafeed-http-client-response-timeout]] [.property-path]##link:#commafeed-server_commafeed-http-client-response-timeout[`commafeed.http-client.response-timeout`]## - -[.description] --- -Time to wait for the full response to be received. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_RESPONSE_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_RESPONSE_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`10S` - -a| [[commafeed-server_commafeed-http-client-connection-time-to-live]] [.property-path]##link:#commafeed-server_commafeed-http-client-connection-time-to-live[`commafeed.http-client.connection-time-to-live`]## - -[.description] --- -Time to live for a connection in the pool. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_CONNECTION_TIME_TO_LIVE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_CONNECTION_TIME_TO_LIVE+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`30S` - -a| [[commafeed-server_commafeed-http-client-idle-connections-eviction-interval]] [.property-path]##link:#commafeed-server_commafeed-http-client-idle-connections-eviction-interval[`commafeed.http-client.idle-connections-eviction-interval`]## - -[.description] --- -Time between eviction runs for idle connections. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_IDLE_CONNECTIONS_EVICTION_INTERVAL+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_IDLE_CONNECTIONS_EVICTION_INTERVAL+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`1M` - -a| [[commafeed-server_commafeed-http-client-max-response-size]] [.property-path]##link:#commafeed-server_commafeed-http-client-max-response-size[`commafeed.http-client.max-response-size`]## - -[.description] --- -If a feed is larger than this, it will be discarded to prevent memory issues while parsing the feed. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_MAX_RESPONSE_SIZE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_MAX_RESPONSE_SIZE+++` -endif::add-copy-button-to-env-var[] --- -|MemorySize link:#memory-size-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the MemorySize format]] -|`5M` - -h|[[commafeed-server_section_commafeed-http-client-cache]] [.section-name.section-level1]##link:#commafeed-server_section_commafeed-http-client-cache[HTTP client cache configuration]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-http-client-cache-enabled]] [.property-path]##link:#commafeed-server_commafeed-http-client-cache-enabled[`commafeed.http-client.cache.enabled`]## - -[.description] --- -Whether to enable the cache. This cache is used to avoid spamming feeds in short bursts (e.g. when subscribing to a feed for the first time or when clicking "fetch all my feeds now"). - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_CACHE_ENABLED+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_CACHE_ENABLED+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`true` - -a| [[commafeed-server_commafeed-http-client-cache-maximum-memory-size]] [.property-path]##link:#commafeed-server_commafeed-http-client-cache-maximum-memory-size[`commafeed.http-client.cache.maximum-memory-size`]## - -[.description] --- -Maximum amount of memory the cache can use. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_CACHE_MAXIMUM_MEMORY_SIZE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_CACHE_MAXIMUM_MEMORY_SIZE+++` -endif::add-copy-button-to-env-var[] --- -|MemorySize link:#memory-size-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the MemorySize format]] -|`10M` - -a| [[commafeed-server_commafeed-http-client-cache-expiration]] [.property-path]##link:#commafeed-server_commafeed-http-client-cache-expiration[`commafeed.http-client.cache.expiration`]## - -[.description] --- -Duration after which an entry is removed from the cache. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_HTTP_CLIENT_CACHE_EXPIRATION+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_HTTP_CLIENT_CACHE_EXPIRATION+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`1M` - - - -h|[[commafeed-server_section_commafeed-feed-refresh]] [.section-name.section-level0]##link:#commafeed-server_section_commafeed-feed-refresh[Feed refresh engine settings]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-feed-refresh-interval]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-interval[`commafeed.feed-refresh.interval`]## - -[.description] --- -Amount of time CommaFeed will wait before refreshing the same feed. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_INTERVAL+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_INTERVAL+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`5M` - -a| [[commafeed-server_commafeed-feed-refresh-interval-empirical]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-interval-empirical[`commafeed.feed-refresh.interval-empirical`]## - -[.description] --- -If true, CommaFeed will calculate the next refresh time based on the feed's average time between entries and the time since the last entry was published. The interval will be somewhere between the default refresh interval and 24h. See `FeedRefreshIntervalCalculator` for details. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_INTERVAL_EMPIRICAL+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_INTERVAL_EMPIRICAL+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`false` - -a| [[commafeed-server_commafeed-feed-refresh-http-threads]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-http-threads[`commafeed.feed-refresh.http-threads`]## - -[.description] --- -Amount of http threads used to fetch feeds. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_HTTP_THREADS+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_HTTP_THREADS+++` -endif::add-copy-button-to-env-var[] --- -|int -|`3` - -a| [[commafeed-server_commafeed-feed-refresh-database-threads]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-database-threads[`commafeed.feed-refresh.database-threads`]## - -[.description] --- -Amount of threads used to insert new entries in the database. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_DATABASE_THREADS+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_DATABASE_THREADS+++` -endif::add-copy-button-to-env-var[] --- -|int -|`1` - -a| [[commafeed-server_commafeed-feed-refresh-user-inactivity-period]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-user-inactivity-period[`commafeed.feed-refresh.user-inactivity-period`]## - -[.description] --- -Duration after which a user is considered inactive. Feeds for inactive users are not refreshed until they log in again. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_USER_INACTIVITY_PERIOD+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_USER_INACTIVITY_PERIOD+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`0S` - -a| [[commafeed-server_commafeed-feed-refresh-filtering-expression-evaluation-timeout]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-filtering-expression-evaluation-timeout[`commafeed.feed-refresh.filtering-expression-evaluation-timeout`]## - -[.description] --- -Duration after which the evaluation of a filtering expresion to mark an entry as read is considered to have timed out. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_FILTERING_EXPRESSION_EVALUATION_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_FILTERING_EXPRESSION_EVALUATION_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`500MS` - -a| [[commafeed-server_commafeed-feed-refresh-force-refresh-cooldown-duration]] [.property-path]##link:#commafeed-server_commafeed-feed-refresh-force-refresh-cooldown-duration[`commafeed.feed-refresh.force-refresh-cooldown-duration`]## - -[.description] --- -Duration after which the "Fetch all my feeds now" action is available again after use to avoid spamming feeds. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_FEED_REFRESH_FORCE_REFRESH_COOLDOWN_DURATION+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_FEED_REFRESH_FORCE_REFRESH_COOLDOWN_DURATION+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`0S` - - -h|[[commafeed-server_section_commafeed-database]] [.section-name.section-level0]##link:#commafeed-server_section_commafeed-database[Database settings]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-database-query-timeout]] [.property-path]##link:#commafeed-server_commafeed-database-query-timeout[`commafeed.database.query-timeout`]## - -[.description] --- -Timeout applied to all database queries. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_QUERY_TIMEOUT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_QUERY_TIMEOUT+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`0S` - -h|[[commafeed-server_section_commafeed-database-cleanup]] [.section-name.section-level1]##link:#commafeed-server_section_commafeed-database-cleanup[Database cleanup settings]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-database-cleanup-entries-max-age]] [.property-path]##link:#commafeed-server_commafeed-database-cleanup-entries-max-age[`commafeed.database.cleanup.entries-max-age`]## - -[.description] --- -Maximum age of feed entries in the database. Older entries will be deleted. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_CLEANUP_ENTRIES_MAX_AGE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_CLEANUP_ENTRIES_MAX_AGE+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`365D` - -a| [[commafeed-server_commafeed-database-cleanup-statuses-max-age]] [.property-path]##link:#commafeed-server_commafeed-database-cleanup-statuses-max-age[`commafeed.database.cleanup.statuses-max-age`]## - -[.description] --- -Maximum age of feed entry statuses (read/unread) in the database. Older statuses will be deleted. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_CLEANUP_STATUSES_MAX_AGE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_CLEANUP_STATUSES_MAX_AGE+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`0S` - -a| [[commafeed-server_commafeed-database-cleanup-max-feed-capacity]] [.property-path]##link:#commafeed-server_commafeed-database-cleanup-max-feed-capacity[`commafeed.database.cleanup.max-feed-capacity`]## - -[.description] --- -Maximum number of entries per feed to keep in the database. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_CLEANUP_MAX_FEED_CAPACITY+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_CLEANUP_MAX_FEED_CAPACITY+++` -endif::add-copy-button-to-env-var[] --- -|int -|`500` - -a| [[commafeed-server_commafeed-database-cleanup-max-feeds-per-user]] [.property-path]##link:#commafeed-server_commafeed-database-cleanup-max-feeds-per-user[`commafeed.database.cleanup.max-feeds-per-user`]## - -[.description] --- -Limit the number of feeds a user can subscribe to. 0 to disable. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_CLEANUP_MAX_FEEDS_PER_USER+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_CLEANUP_MAX_FEEDS_PER_USER+++` -endif::add-copy-button-to-env-var[] --- -|int -|`0` - -a| [[commafeed-server_commafeed-database-cleanup-batch-size]] [.property-path]##link:#commafeed-server_commafeed-database-cleanup-batch-size[`commafeed.database.cleanup.batch-size`]## - -[.description] --- -Rows to delete per query while cleaning up old entries. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_DATABASE_CLEANUP_BATCH_SIZE+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_DATABASE_CLEANUP_BATCH_SIZE+++` -endif::add-copy-button-to-env-var[] --- -|int -|`100` - - - -h|[[commafeed-server_section_commafeed-users]] [.section-name.section-level0]##link:#commafeed-server_section_commafeed-users[Users settings]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-users-allow-registrations]] [.property-path]##link:#commafeed-server_commafeed-users-allow-registrations[`commafeed.users.allow-registrations`]## - -[.description] --- -Whether to let users create accounts for themselves. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_USERS_ALLOW_REGISTRATIONS+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_USERS_ALLOW_REGISTRATIONS+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`false` - -a| [[commafeed-server_commafeed-users-strict-password-policy]] [.property-path]##link:#commafeed-server_commafeed-users-strict-password-policy[`commafeed.users.strict-password-policy`]## - -[.description] --- -Whether to enable strict password validation (1 uppercase char, 1 lowercase char, 1 digit, 1 special char). - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_USERS_STRICT_PASSWORD_POLICY+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_USERS_STRICT_PASSWORD_POLICY+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`true` - -a| [[commafeed-server_commafeed-users-create-demo-account]] [.property-path]##link:#commafeed-server_commafeed-users-create-demo-account[`commafeed.users.create-demo-account`]## - -[.description] --- -Whether to create a demo account the first time the app starts. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_USERS_CREATE_DEMO_ACCOUNT+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_USERS_CREATE_DEMO_ACCOUNT+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`false` - - -h|[[commafeed-server_section_commafeed-websocket]] [.section-name.section-level0]##link:#commafeed-server_section_commafeed-websocket[Websocket settings]## -h|Type -h|Default - -a| [[commafeed-server_commafeed-websocket-enabled]] [.property-path]##link:#commafeed-server_commafeed-websocket-enabled[`commafeed.websocket.enabled`]## - -[.description] --- -Enable websocket connection so the server can notify web clients that there are new entries for feeds. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_WEBSOCKET_ENABLED+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_WEBSOCKET_ENABLED+++` -endif::add-copy-button-to-env-var[] --- -|boolean -|`true` - -a| [[commafeed-server_commafeed-websocket-ping-interval]] [.property-path]##link:#commafeed-server_commafeed-websocket-ping-interval[`commafeed.websocket.ping-interval`]## - -[.description] --- -Interval at which the client will send a ping message on the websocket to keep the connection alive. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_WEBSOCKET_PING_INTERVAL+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_WEBSOCKET_PING_INTERVAL+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`15M` - -a| [[commafeed-server_commafeed-websocket-tree-reload-interval]] [.property-path]##link:#commafeed-server_commafeed-websocket-tree-reload-interval[`commafeed.websocket.tree-reload-interval`]## - -[.description] --- -If the websocket connection is disabled or the connection is lost, the client will reload the feed tree at this interval. - - -ifdef::add-copy-button-to-env-var[] -Environment variable: env_var_with_copy_button:+++COMMAFEED_WEBSOCKET_TREE_RELOAD_INTERVAL+++[] -endif::add-copy-button-to-env-var[] -ifndef::add-copy-button-to-env-var[] -Environment variable: `+++COMMAFEED_WEBSOCKET_TREE_RELOAD_INTERVAL+++` -endif::add-copy-button-to-env-var[] --- -|link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html[Duration] link:#duration-note-anchor-commafeed-server_commafeed[icon:question-circle[title=More information about the Duration format]] -|`30S` - - -|=== - -ifndef::no-duration-note[] -[NOTE] -[id=duration-note-anchor-commafeed-server_commafeed] -.About the Duration format -==== -To write duration values, use the standard `java.time.Duration` format. -See the link:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence)[Duration#parse() Java API documentation] for more information. - -You can also use a simplified format, starting with a number: - -* If the value is only a number, it represents time in seconds. -* If the value is a number followed by `ms`, it represents time in milliseconds. - -In other cases, the simplified format is translated to the `java.time.Duration` format for parsing: - -* If the value is a number followed by `h`, `m`, or `s`, it is prefixed with `PT`. -* If the value is a number followed by `d`, it is prefixed with `P`. -==== -endif::no-duration-note[] -ifndef::no-memory-size-note[] -[NOTE] -[id=memory-size-note-anchor-commafeed-server_commafeed] -.About the MemorySize format -==== -A size configuration option recognizes strings in this format (shown as a regular expression): `[0-9]+[KkMmGgTtPpEeZzYy]?`. - -If no suffix is given, assume bytes. -==== -ifndef::no-memory-size-note[] diff --git a/commafeed-server/doc/commafeed.md b/commafeed-server/doc/commafeed.md new file mode 100644 index 00000000..003eaf8c --- /dev/null +++ b/commafeed-server/doc/commafeed.md @@ -0,0 +1,799 @@ +🔒: Configuration property fixed at build time - All other configuration properties are overridable at runtime + +
| Configuration property | +Type | +Default | +
|---|---|---|
| + +`commafeed.hide-from-web-crawlers` + +Whether to expose a robots.txt file that disallows web crawlers and search engine indexers. + + + +Environment variable: `COMMAFEED_HIDE_FROM_WEB_CRAWLERS` | ++ +boolean + | ++ +`true` + | +
| + +`commafeed.image-proxy-enabled` + +If enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser. + +This is useful if commafeed is accessed through a restricting proxy that blocks some feeds that are followed. + + + +Environment variable: `COMMAFEED_IMAGE_PROXY_ENABLED` | ++ +boolean + | ++ +`false` + | +
| + +`commafeed.password-recovery-enabled` + +Enable password recovery via email. + +Quarkus mailer will need to be configured. + + + +Environment variable: `COMMAFEED_PASSWORD_RECOVERY_ENABLED` | ++ +boolean + | ++ +`false` + | +
| + +`commafeed.announcement` + +Message displayed in a notification at the bottom of the page. + + + +Environment variable: `COMMAFEED_ANNOUNCEMENT` | ++ +string + | ++ + + | +
| + +`commafeed.google-analytics-tracking-code` + +Google Analytics tracking code. + + + +Environment variable: `COMMAFEED_GOOGLE_ANALYTICS_TRACKING_CODE` | ++ +string + | ++ + + | +
| + +`commafeed.google-auth-key` + +Google Auth key for fetching Youtube channel favicons. + + + +Environment variable: `COMMAFEED_GOOGLE_AUTH_KEY` | ++ +string + | ++ + + | +
| +HTTP client configuration + | +||
| + +`commafeed.http-client.user-agent` + +User-Agent string that will be used by the http client, leave empty for the default one. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_USER_AGENT` | ++ +string + | ++ + + | +
| + +`commafeed.http-client.connect-timeout` + +Time to wait for a connection to be established. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_CONNECT_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`5S` + | +
| + +`commafeed.http-client.ssl-handshake-timeout` + +Time to wait for SSL handshake to complete. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_SSL_HANDSHAKE_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`5S` + | +
| + +`commafeed.http-client.socket-timeout` + +Time to wait between two packets before timeout. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_SOCKET_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`10S` + | +
| + +`commafeed.http-client.response-timeout` + +Time to wait for the full response to be received. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_RESPONSE_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`10S` + | +
| + +`commafeed.http-client.connection-time-to-live` + +Time to live for a connection in the pool. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_CONNECTION_TIME_TO_LIVE` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`30S` + | +
| + +`commafeed.http-client.idle-connections-eviction-interval` + +Time between eviction runs for idle connections. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_IDLE_CONNECTIONS_EVICTION_INTERVAL` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`1M` + | +
| + +`commafeed.http-client.max-response-size` + +If a feed is larger than this, it will be discarded to prevent memory issues while parsing the feed. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_MAX_RESPONSE_SIZE` | ++ +MemorySize [🛈](#memory-size-note-anchor) + | ++ +`5M` + | +
| + HTTP client cache configuration + | +||
| + +`commafeed.http-client.cache.enabled` + +Whether to enable the cache. This cache is used to avoid spamming feeds in short bursts (e.g. when subscribing to a feed for the +first time or when clicking "fetch all my feeds now"). + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_CACHE_ENABLED` | ++ +boolean + | ++ +`true` + | +
| + +`commafeed.http-client.cache.maximum-memory-size` + +Maximum amount of memory the cache can use. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_CACHE_MAXIMUM_MEMORY_SIZE` | ++ +MemorySize [🛈](#memory-size-note-anchor) + | ++ +`10M` + | +
| + +`commafeed.http-client.cache.expiration` + +Duration after which an entry is removed from the cache. + + + +Environment variable: `COMMAFEED_HTTP_CLIENT_CACHE_EXPIRATION` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`1M` + | +
| +Feed refresh engine settings + | +||
| + +`commafeed.feed-refresh.interval` + +Amount of time CommaFeed will wait before refreshing the same feed. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_INTERVAL` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`5M` + | +
+
+`commafeed.feed-refresh.interval-empirical`
+
+If true, CommaFeed will calculate the next refresh time based on the feed's average time between entries and the time since the
+last entry was published. The interval will be somewhere between the default refresh interval and 24h.
+
+See FeedRefreshIntervalCalculator for details.
+
+
+
+Environment variable: `COMMAFEED_FEED_REFRESH_INTERVAL_EMPIRICAL` |
++ +boolean + | ++ +`false` + | +
| + +`commafeed.feed-refresh.http-threads` + +Amount of http threads used to fetch feeds. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_HTTP_THREADS` | ++ +int + | ++ +`3` + | +
| + +`commafeed.feed-refresh.database-threads` + +Amount of threads used to insert new entries in the database. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_DATABASE_THREADS` | ++ +int + | ++ +`1` + | +
| + +`commafeed.feed-refresh.user-inactivity-period` + +Duration after which a user is considered inactive. Feeds for inactive users are not refreshed until they log in again. + +0 to disable. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_USER_INACTIVITY_PERIOD` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`0S` + | +
| + +`commafeed.feed-refresh.filtering-expression-evaluation-timeout` + +Duration after which the evaluation of a filtering expresion to mark an entry as read is considered to have timed out. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_FILTERING_EXPRESSION_EVALUATION_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`500MS` + | +
| + +`commafeed.feed-refresh.force-refresh-cooldown-duration` + +Duration after which the "Fetch all my feeds now" action is available again after use to avoid spamming feeds. + + + +Environment variable: `COMMAFEED_FEED_REFRESH_FORCE_REFRESH_COOLDOWN_DURATION` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`0S` + | +
| +Database settings + | +||
| + +`commafeed.database.query-timeout` + +Timeout applied to all database queries. + +0 to disable. + + + +Environment variable: `COMMAFEED_DATABASE_QUERY_TIMEOUT` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`0S` + | +
| + Database cleanup settings + | +||
| + +`commafeed.database.cleanup.entries-max-age` + +Maximum age of feed entries in the database. Older entries will be deleted. + +0 to disable. + + + +Environment variable: `COMMAFEED_DATABASE_CLEANUP_ENTRIES_MAX_AGE` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`365D` + | +
| + +`commafeed.database.cleanup.statuses-max-age` + +Maximum age of feed entry statuses (read/unread) in the database. Older statuses will be deleted. + +0 to disable. + + + +Environment variable: `COMMAFEED_DATABASE_CLEANUP_STATUSES_MAX_AGE` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`0S` + | +
| + +`commafeed.database.cleanup.max-feed-capacity` + +Maximum number of entries per feed to keep in the database. + +0 to disable. + + + +Environment variable: `COMMAFEED_DATABASE_CLEANUP_MAX_FEED_CAPACITY` | ++ +int + | ++ +`500` + | +
| + +`commafeed.database.cleanup.max-feeds-per-user` + +Limit the number of feeds a user can subscribe to. + +0 to disable. + + + +Environment variable: `COMMAFEED_DATABASE_CLEANUP_MAX_FEEDS_PER_USER` | ++ +int + | ++ +`0` + | +
| + +`commafeed.database.cleanup.batch-size` + +Rows to delete per query while cleaning up old entries. + + + +Environment variable: `COMMAFEED_DATABASE_CLEANUP_BATCH_SIZE` | ++ +int + | ++ +`100` + | +
| +Users settings + | +||
| + +`commafeed.users.allow-registrations` + +Whether to let users create accounts for themselves. + + + +Environment variable: `COMMAFEED_USERS_ALLOW_REGISTRATIONS` | ++ +boolean + | ++ +`false` + | +
| + +`commafeed.users.strict-password-policy` + +Whether to enable strict password validation (1 uppercase char, 1 lowercase char, 1 digit, 1 special char). + + + +Environment variable: `COMMAFEED_USERS_STRICT_PASSWORD_POLICY` | ++ +boolean + | ++ +`true` + | +
| + +`commafeed.users.create-demo-account` + +Whether to create a demo account the first time the app starts. + + + +Environment variable: `COMMAFEED_USERS_CREATE_DEMO_ACCOUNT` | ++ +boolean + | ++ +`false` + | +
| +Websocket settings + | +||
| + +`commafeed.websocket.enabled` + +Enable websocket connection so the server can notify web clients that there are new entries for feeds. + + + +Environment variable: `COMMAFEED_WEBSOCKET_ENABLED` | ++ +boolean + | ++ +`true` + | +
| + +`commafeed.websocket.ping-interval` + +Interval at which the client will send a ping message on the websocket to keep the connection alive. + + + +Environment variable: `COMMAFEED_WEBSOCKET_PING_INTERVAL` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`15M` + | +
| + +`commafeed.websocket.tree-reload-interval` + +If the websocket connection is disabled or the connection is lost, the client will reload the feed tree at this interval. + + + +Environment variable: `COMMAFEED_WEBSOCKET_TREE_RELOAD_INTERVAL` | ++ +[Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html) [🛈](#duration-note-anchor) + | ++ +`30S` + | +