### Start Miniflux Application Source: https://github.com/miniflux/website/blob/main/content/docs/binary.md This command starts the Miniflux application after setup and configuration. ```bash miniflux ``` -------------------------------- ### Configuration File Example Source: https://github.com/miniflux/website/blob/main/content/docs/configuration.md This example shows the basic format for a Miniflux configuration file. Each line should be in KEY=VALUE format, and lines starting with '#' are treated as comments. ```properties LOG_LEVEL=debug WORKER_POOL_SIZE=20 ``` -------------------------------- ### Get Feed Entries Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md This example demonstrates how to request entries for a specific feed using query parameters to filter and sort the results. ```text GET /v1/feeds/42/entries?limit=1&order=id&direction=asc ``` -------------------------------- ### Install Golang Miniflux Client Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Install the official Golang client library for Miniflux to interact with the API programmatically. ```bash go get -u miniflux.app/v2/client ``` -------------------------------- ### Enable and Start Miniflux Systemd Service Source: https://github.com/miniflux/website/blob/main/content/docs/rhel.md Enable the Miniflux service to start on boot and then start the service immediately. Systemd manages the Miniflux daemon. ```bash systemctl enable miniflux ``` ```bash systemctl start miniflux ``` -------------------------------- ### Start Miniflux Service on Alpine Source: https://github.com/miniflux/website/blob/main/content/docs/alpine.md Starts the Miniflux application service using OpenRC. This command assumes the service script is correctly installed and configured. ```bash service miniflux start ``` -------------------------------- ### Miniflux Configuration File Example Source: https://github.com/miniflux/website/blob/main/content/docs/alpine.md Example of a Miniflux configuration file. This file is used instead of environment variables on Alpine Linux when supervised by OpenRC. Adjust database credentials and listen address as needed. ```bash # /etc/miniflux.conf LOG_DATE_TIME=yes LISTEN_ADDR=127.0.0.1:8080 DATABASE_URL=user=postgres password=secret dbname=miniflux2 sslmode=disable # Run SQL migrations automatically: # RUN_MIGRATIONS=1 ``` -------------------------------- ### Install Python Miniflux Client Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Install the official Python client library for Miniflux using pip. ```bash pip install miniflux ``` -------------------------------- ### Get Category Entries Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md This example demonstrates how to retrieve entries belonging to a specific category. Various filters are available to refine the results, including status, limit, order, and date ranges. ```http GET /v1/categories/22/entries?limit=1&order=id&direction=asc ``` -------------------------------- ### Install Miniflux on RPM Systems Source: https://github.com/miniflux/website/blob/main/content/docs/upgrade.md Install the Miniflux package on RPM-based systems using rpm. ```bash rpm -Uvh miniflux-2.x.x-1.0.x86_64.rpm ``` -------------------------------- ### Install Miniflux using DNF Source: https://github.com/miniflux/website/blob/main/content/docs/rhel.md Install the Miniflux package after configuring the YUM repository. The `-y` flag automatically confirms the installation. ```bash dnf install -y miniflux ``` -------------------------------- ### Golang Client Usage Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Demonstrates how to initialize and use the Golang Miniflux client for authentication and fetching feeds. ```go package main import ( "fmt" miniflux "miniflux.app/v2/client" ) func main() { // Authentication using username/password. client := miniflux.NewClient("https://miniflux.example.org", "admin", "secret") // Authentication using API token. client := miniflux.NewClient("https://miniflux.example.org", "My secret token") // Fetch all feeds. feeds, err := client.Feeds() if err != nil { fmt.Println(err) return } fmt.Println(feeds) } ``` -------------------------------- ### Install Miniflux and PostgreSQL on Alpine Source: https://github.com/miniflux/website/blob/main/content/docs/alpine.md Installs the Miniflux application, its OpenRC service script, documentation, and PostgreSQL database packages. Ensure the Edge repository is enabled and updated before running. ```bash apk add miniflux miniflux-openrc miniflux-doc ``` ```bash apk add postgresql postgresql-contrib ``` -------------------------------- ### Install PostgreSQL on Debian Source: https://github.com/miniflux/website/blob/main/content/docs/database.md Use this command to install PostgreSQL and its contrib package on Debian-based systems. ```bash sudo apt install postgresql postgresql-contrib ``` -------------------------------- ### Readiness and Readyz Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Use GET /readiness or GET /readyz to check if the service is ready to accept requests. These endpoints check database connectivity and are available at the root path. ```http GET /readiness ``` ```http GET /readyz ``` -------------------------------- ### Configure Kanidm with OIDC Source: https://github.com/miniflux/website/blob/main/content/docs/howto.md Example configuration for Kanidm. Set the OIDC discovery endpoint to the provided URL. ```ini OAUTH2_PROVIDER=oidc OAUTH2_CLIENT_ID=replace_me OAUTH2_CLIENT_SECRET=replace_me OAUTH2_REDIRECT_URL=https://miniflux.example.org/oauth2/oidc/callback OAUTH2_OIDC_DISCOVERY_ENDPOINT=https://kanidm.example.org/oauth2/openid/miniflux OAUTH2_USER_CREATION=1 ``` -------------------------------- ### Install Miniflux on Debian Source: https://github.com/miniflux/website/blob/main/content/docs/upgrade.md Install the Miniflux package on Debian systems using dpkg or apt. ```bash dpkg -i miniflux_2.x.x_amd64.deb ``` ```bash apt upgrade miniflux ``` -------------------------------- ### Golang Client Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Instructions and usage examples for the official Golang client library for the Miniflux API. ```APIDOC ### Golang Client - Repository: - Reference: Installation: ```bash go get -u miniflux.app/v2/client ``` Usage Example: ```go package main import ( "fmt" miniflux "miniflux.app/v2/client" ) func main() { // Authentication using username/password. client := miniflux.NewClient("https://miniflux.example.org", "admin", "secret") // Authentication using API token. client := miniflux.NewClient("https://miniflux.example.org", "My secret token") // Fetch all feeds. feeds, err := client.Feeds() if err != nil { fmt.Println(err) return } fmt.Println(feeds) } ``` ``` -------------------------------- ### Configure Authentik with OIDC Source: https://github.com/miniflux/website/blob/main/content/docs/howto.md Example configuration for Authentik. Note the specific format for the discovery endpoint, which requires a trailing slash. ```ini OAUTH2_PROVIDER=oidc OAUTH2_CLIENT_ID=replace_me OAUTH2_CLIENT_SECRET=replace_me OAUTH2_REDIRECT_URL=https://miniflux.example.org/oauth2/oidc/callback OAUTH2_OIDC_DISCOVERY_ENDPOINT=https://authentik.example.org/application/o/miniflux/ OAUTH2_USER_CREATION=1 ``` -------------------------------- ### Build Docker Image (amd64) Source: https://github.com/miniflux/website/blob/main/content/docs/development.md Builds the Docker image for the amd64 architecture. Ensure Docker is installed and configured. ```bash make docker-image ``` -------------------------------- ### Install Miniflux via APT Source: https://github.com/miniflux/website/blob/main/content/docs/debian.md Installs Miniflux using the APT package manager after the repository has been added and the package list updated. ```bash apt install miniflux ``` -------------------------------- ### New Entries Event Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/webhooks.md Example of the JSON payload and request headers for the 'new_entries' webhook event. ```APIDOC ## New Entries Event Request ``` POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json User-Agent: Miniflux/2.0.48 X-Miniflux-Signature: 7ff170cfd8c173fd5084e0f51ee6ac3eae8acff443f11f9168961cebf836e38f X-Miniflux-Event-Type: new_entries { "event_type": "new_entries", "feed": { "id": 8, "user_id": 1, "feed_url": "https://example.org/feed.xml", "site_url": "https://example.org", "title": "Example website", "checked_at": "2023-09-10T12:48:43.428196-07:00" }, "entries": [ { "id": 231, "user_id": 1, "feed_id": 3, "status": "unread", "hash": "1163a93ef12741b558a3b86d7e975c4c1de0152f3439915ed185eb460e5718d7", "title": "Example", "url": "https://example.org/article", "comments_url": "", "published_at": "2023-08-17T19:29:22Z", "created_at": "2023-09-10T12:48:43.428196-07:00", "changed_at": "2023-09-10T12:48:43.428196-07:00", "content": "

Some HTML content

", "share_code": "", "starred": false, "reading_time": 1, "enclosures": [ { "id": 158, "user_id": 1, "entry_id": 231, "url": "https://example.org/podcast.mp3", "mime_type": "audio/mpeg", "size": 63451045, "media_progression": 0 } ], "tags": ["Some category", "Another label"] } ] } ``` ``` -------------------------------- ### Save Entry Event Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/webhooks.md Example of the JSON payload and request headers for the 'save_entry' webhook event. ```APIDOC ## Save Entry Event Request ``` POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json User-Agent: Miniflux/2.0.48 X-Miniflux-Signature: 7ff170cfd8c173fd5084e0f51ee6ac3eae8acff443f11f9168961cebf836e38f X-Miniflux-Event-Type: save_entry { "event_type": "save_entry", "entry": { "id": 592, "user_id": 1, "feed_id": 9, "status": "read", "hash": "ed97d338e7ea23fd82d14f0623c1953a22ddda32ce406f0cdfbd14632db8ff8b", "title": "Some example", "url": "https://example.org/article", "comments_url": "", "published_at": "2023-09-10T19:13:40Z", "created_at": "2023-09-10T20:06:23.000332Z", "changed_at": "2023-09-11T00:39:49.615812Z", "content": "Some HTML content", "author": "", "share_code": "", "starred": false, "reading_time": 1, "enclosures": [ { "id": 1492, "user_id": 1, "entry_id": 592, "url": "https://example.org/file.zip", "mime_type": "application/octet-stream", "size": 0, "media_progression": 0 } ], "tags": [], "feed": { "id": 9, "user_id": 1, "feed_url": "https://example.org/feed.xml", "site_url": "https://example.org", "title": "Example website", "checked_at": "2023-09-10T20:07:22.956279Z" } } } ``` ``` -------------------------------- ### API Token Authentication Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Authenticate API requests by providing your Miniflux API token in the X-Auth-Token header. ```bash curl -H "X-Auth-Token: your-token" https://miniflux.example.org/v1/me ``` -------------------------------- ### Python Client Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Instructions and usage examples for the official Python client library for the Miniflux API. ```APIDOC ### Python Client - Repository: - PyPi: Installation: ```bash pip install miniflux ``` Usage example: ``` -------------------------------- ### New Entries Event Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/webhooks.md This is an example of an HTTP POST request sent by Miniflux for the 'new_entries' event. It includes feed details and a list of newly discovered entries. ```http POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json User-Agent: Miniflux/2.0.48 X-Miniflux-Signature: 7ff170cfd8c173fd5084e0f51ee6ac3eae8acff443f11f9168961cebf836e38f X-Miniflux-Event-Type: new_entries { "event_type": "new_entries", "feed": { "id": 8, "user_id": 1, "feed_url": "https://example.org/feed.xml", "site_url": "https://example.org", "title": "Example website", "checked_at": "2023-09-10T12:48:43.428196-07:00" }, "entries": [ { "id": 231, "user_id": 1, "feed_id": 3, "status": "unread", "hash": "1163a93ef12741b558a3b86d7e975c4c1de0152f3439915ed185eb460e5718d7", "title": "Example", "url": "https://example.org/article", "comments_url": "", "published_at": "2023-08-17T19:29:22Z", "created_at": "2023-09-10T12:48:43.428196-07:00", "changed_at": "2023-09-10T12:48:43.428196-07:00", "content": "

Some HTML content

", "share_code": "", "starred": false, "reading_time": 1, "enclosures": [ { "id": 158, "user_id": 1, "entry_id": 231, "url": "https://example.org/podcast.mp3", "mime_type": "audio/mpeg", "size": 63451045, "media_progression": 0 } ], "tags": ["Some category", "Another label"] } ] } ``` -------------------------------- ### Fetch Original Article Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md This example shows how to request the original content of an article using its entry ID. The `update_content` query parameter can be used to replace the stored title and content with the fetched version. ```http GET /v1/entries/{entryID}/fetch-content?update_content=true ``` -------------------------------- ### Run Integration Tests Source: https://github.com/miniflux/website/blob/main/content/docs/development.md Executes integration tests that validate API endpoints with a real database. Requires PostgreSQL setup. ```bash make integration-test ; make clean-integration-test ``` -------------------------------- ### Run Miniflux Database Migrations Source: https://github.com/miniflux/website/blob/main/content/docs/debian.md Manually runs the SQL database migrations for Miniflux. This is a required step after installation or upgrades. ```bash miniflux -migrate -config-file /etc/miniflux.conf ``` -------------------------------- ### Get Entry API Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example of a GET request to retrieve a specific entry by its ID. ```http GET /v1/entries/888 ``` -------------------------------- ### Get Feed Entry API Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example of a GET request to retrieve a specific entry within a feed. ```http GET /v1/feeds/42/entries/888 ``` -------------------------------- ### Get Feeds API Response Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example JSON response from the GET /v1/feeds endpoint, detailing a single feed's properties. ```json [ { "id": 42, "user_id": 123, "title": "Example Feed", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 793, "user_id": 123, "title": "Some category" }, "icon": { "feed_id": 42, "icon_id": 84 } } ] ``` -------------------------------- ### Initialize Miniflux Database and Create Admin User Source: https://github.com/miniflux/website/blob/main/content/docs/alpine.md Runs SQL migrations to create the database schema and then creates the initial administrator user for Miniflux. Ensure the configuration file path and database settings are correct. ```bash miniflux -c /etc/miniflux.conf -migrate ``` ```bash miniflux -c /etc/miniflux.conf -create-admin ``` -------------------------------- ### Get Category Feeds API Response Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example JSON response from the GET /v1/categories/{id}/feeds endpoint, listing feeds within a specific category. ```json [ { "id": 42, "user_id": 123, "title": "Example Feed", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 40, "user_id": 123, "title": "Some category" }, "icon": { "feed_id": 42, "icon_id": 84 } } ] ``` -------------------------------- ### Run Local PostgreSQL Database (Default) Source: https://github.com/miniflux/website/blob/main/content/docs/development.md Starts a PostgreSQL database container for local development and testing. Uses default credentials and database name. ```bash docker run --rm --name local-miniflux2-db -p 5432:5432 -e POSTGRES_DB=miniflux2 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres postgres ``` -------------------------------- ### Show Build Information Source: https://github.com/miniflux/website/blob/main/content/docs/cli.md Displays detailed build information about the Miniflux binary, including version, build date, and Go version. The `-i` flag is a shorthand. ```bash miniflux -info # or -i Version: 2.0.15 Build Date: 2019-03-16T18:26:30-0700 Go Version: go1.12 Compiler: gc Arch: amd64 OS: darwin ``` -------------------------------- ### Get Feed Entry API Response Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example JSON response when retrieving a specific feed entry. ```json { "id": 888, "user_id": 123, "feed_id": 42, "title": "Entry Title", "url": "http://example.org/article.html", "comments_url": "", "author": "Foobar", "content": "

HTML contents

", "hash": "29f99e4074cdacca1766f47697d03c66070ef6a14770a1fd5a867483c207a1bb", "published_at": "2016-12-12T16:15:19Z", "created_at": "2016-12-27T16:15:19Z", "status": "unread", "share_code": "", "starred": false, "reading_time": 1, "enclosures": null, "feed": { "id": 42, "user_id": 123, "title": "New Feed Title", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 22, "user_id": 123, "title": "Another category" }, "icon": { "feed_id": 42, "icon_id": 84 } } } ``` -------------------------------- ### Get Entries Request with Filters Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieve a list of entries with various filtering options. This example shows fetching unread entries in descending order. ```http GET /v1/entries?status=unread&direction=desc ``` -------------------------------- ### HTTP Basic Authentication Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Use this command to authenticate API requests using your Miniflux username and password with HTTP Basic authentication. ```bash curl -u your-miniflux-username https://miniflux.example.org/v1/me ``` -------------------------------- ### Get Feed Example Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves details for a specific feed by its ID. The response includes feed metadata, checking status, and category information. The 'icon' field may be null if no favicon is associated. ```http GET /v1/feeds/42 ``` ```json { "id": 42, "user_id": 123, "title": "Example Feed", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 793, "user_id": 123, "title": "Some category" }, "icon": { "feed_id": 42, "icon_id": 84 } } ``` -------------------------------- ### Run SQL Migrations Source: https://github.com/miniflux/website/blob/main/content/docs/binary.md Execute this command to apply necessary SQL migrations for the Miniflux database. ```bash miniflux -migrate ``` -------------------------------- ### Create Admin User Source: https://github.com/miniflux/website/blob/main/content/docs/binary.md Run this command to create the initial administrator user for Miniflux. ```bash miniflux -create-admin ``` -------------------------------- ### Build Windows (amd64) Binary Source: https://github.com/miniflux/website/blob/main/content/docs/development.md Use this command to build the Miniflux binary for Windows (amd64) architecture. ```bash make windows-amd64 ``` -------------------------------- ### Make Binary Executable Source: https://github.com/miniflux/website/blob/main/content/docs/binary.md Use this command to make the downloaded Miniflux binary executable on your server. ```bash chmod +x miniflux ``` -------------------------------- ### Install Miniflux Debian Package Source: https://github.com/miniflux/website/blob/main/content/docs/debian.md Installs the Miniflux Debian package. Ensure you have downloaded the correct .deb file from the GitHub Releases page. ```bash dpkg -i miniflux_2.0.13_amd64.deb ``` -------------------------------- ### Validating Signatures from Miniflux (PHP Example) Source: https://github.com/miniflux/website/blob/main/content/docs/webhooks.md Example code in PHP demonstrating how to validate the HMAC signature of incoming webhook requests from Miniflux. ```APIDOC ## Validating Signatures from Miniflux Miniflux will sign all inbound requests to your application with an `X-Miniflux-Signature` HTTP header. The signature uses the HMAC-SHA256 hashing algorithm with the request body and the auto-generated secret key visible in **Settings > Integrations > Webhook**. Example in PHP: ```php // The secret value is visible in Settings > Integrations > Webhook $secret = 'c4fdaf87900d72777cbe8e97d17b97a87d28ae078a462ef4ac5f2541fcf00ce6'; // Payload is the request body $payload = file_get_contents('php://input'); $hmac = hash_hmac('sha256', $payload, $secret); if (! hash_equals($hmac, $_SERVER['HTTP_X_MINIFLUX_SIGNATURE'])) { die('Incorrect signature!'); } ``` ``` -------------------------------- ### Liveness and Healthz Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Use GET /liveness or GET /healthz to check if the service is running. These endpoints do not check database connectivity and are available at the root path. ```http GET /liveness ``` ```http GET /healthz ``` -------------------------------- ### Save Entry Event Request Example Source: https://github.com/miniflux/website/blob/main/content/docs/webhooks.md This is an example of an HTTP POST request sent by Miniflux for the 'save_entry' event. It contains details about the saved entry and its associated feed. ```http POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json User-Agent: Miniflux/2.0.48 X-Miniflux-Signature: 7ff170cfd8c173fd5084e0f51ee6ac3eae8acff443f11f9168961cebf836e38f X-Miniflux-Event-Type: save_entry { "event_type": "save_entry", "entry": { "id": 592, "user_id": 1, "feed_id": 9, "status": "read", "hash": "ed97d338e7ea23fd82d14f0623c1953a22ddda32ce406f0cdfbd14632db8ff8b", "title": "Some example", "url": "https://example.org/article", "comments_url": "", "published_at": "2023-09-10T19:13:40Z", "created_at": "2023-09-10T20:06:23.000332Z", "changed_at": "2023-09-11T00:39:49.615812Z", "content": "Some HTML content", "author": "", "share_code": "", "starred": false, "reading_time": 1, "enclosures": [ { "id": 1492, "user_id": 1, "entry_id": 592, "url": "https://example.org/file.zip", "mime_type": "application/octet-stream", "size": 0, "media_progression": 0 } ], "tags": [], "feed": { "id": 9, "user_id": 1, "feed_url": "https://example.org/feed.xml", "site_url": "https://example.org", "title": "Example website", "checked_at": "2023-09-10T20:07:22.956279Z" } } } ``` -------------------------------- ### Application Version and Build Information Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Use GET /v1/version to retrieve detailed build information including version, commit hash, and build date. ```http GET /v1/version ``` -------------------------------- ### Configure Miniflux YUM Repository Source: https://github.com/miniflux/website/blob/main/content/docs/rhel.md Create this file to add the Miniflux YUM repository. This allows for easy installation and updates using DNF. ```ini [miniflux] name=Miniflux Repository baseurl=https://repo.miniflux.app/yum/ enabled=1 gpgcheck=0 ``` -------------------------------- ### Get Entry Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves a specific entry by its ID. This endpoint provides detailed information about a single entry, similar to getting an entry from a specific feed, but identified solely by the entry's unique ID. ```APIDOC ## GET /v1/entries/{entryID} ### Description Retrieves a specific entry by its ID. ### Method GET ### Endpoint /v1/entries/{entryID} ### Parameters #### Path Parameters - **entryID** (integer) - Required - The ID of the entry. ``` -------------------------------- ### Use a Configuration File Source: https://github.com/miniflux/website/blob/main/content/docs/cli.md Specify a custom configuration file for Miniflux. The `-c` flag is a shorthand for `-config-file`. ```bash miniflux -config-file /etc/miniflux.conf ``` ```bash miniflux -c /etc/miniflux.conf ``` -------------------------------- ### Create Admin User Source: https://github.com/miniflux/website/blob/main/content/docs/cli.md Initiates the creation of an administrator user. You will be prompted to enter the username and password. ```bash miniflux -create-admin Enter Username: root Enter Password: **** ``` -------------------------------- ### Get Entry IDs Request Source: https://github.com/miniflux/website/blob/main/content/docs/api.md This GET request retrieves a list of entry IDs based on specified filters like status, starred status, offset, and limit. The response includes the total count and an array of entry IDs. ```http GET /v1/entries/ids?status=unread ``` -------------------------------- ### Run Database Migrations Source: https://github.com/miniflux/website/blob/main/content/docs/cli.md Applies pending database schema migrations. Ensure the DATABASE_URL environment variable is set correctly before running. ```bash export DATABASE_URL=replace_me miniflux -migrate Current schema version: 0 Latest schema version: 12 Migrating to version: 1 Migrating to version: 2 Migrating to version: 3 Migrating to version: 4 Migrating to version: 5 Migrating to version: 6 Migrating to version: 7 Migrating to version: 8 Migrating to version: 9 Migrating to version: 10 Migrating to version: 11 Migrating to version: 12 ``` -------------------------------- ### Entry Filtering: Title Blocking Examples Source: https://github.com/miniflux/website/blob/main/content/docs/rules.md Examples of block rules for entry titles using regex. These rules ignore articles based on title content, including case-insensitive matching and specific patterns like discounts or deals. ```regex EntryTitle=(?i)miniflux EntryTitle=(?i)\b(save|take|get)\s+\$\d{2,5}\b EntryTitle=(?i)\$\d{2,5}\s+(off|discount)\b EntryTitle=(?i)\bbest\s+.*\bdeals?\b EntryTitle=(?i)\bgift\s+(guide|ideas|list)\b ``` -------------------------------- ### Get Feed Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves details of a specific feed by its ID. ```APIDOC ## GET /v1/feeds/{feedID} ### Description Retrieves details of a specific feed by its ID. ### Method GET ### Endpoint /v1/feeds/{feedID} ### Parameters #### Path Parameters - **feedID** (int) - Required - The ID of the feed to retrieve. ### Response #### Success Response (200) - **id** (int) - The unique identifier of the feed. - **user_id** (int) - The ID of the user who owns the feed. - **title** (string) - The title of the feed. - **site_url** (string) - The URL of the website the feed is from. - **feed_url** (string) - The URL of the feed. - **checked_at** (string) - The timestamp when the feed was last checked. - **etag_header** (string) - The ETag header value from the last feed check. - **last_modified_header** (string) - The Last-Modified header value from the last feed check. - **parsing_error_message** (string) - Any error message encountered during feed parsing. - **parsing_error_count** (int) - The number of parsing errors. - **scraper_rules** (string) - CSS selectors for scraping content. - **rewrite_rules** (string) - Rules for rewriting feed content. - **crawler** (boolean) - Whether the feed is crawled. - **blocklist_rules** (string) - Rules for blocking specific content. - **keeplist_rules** (string) - Rules for keeping specific content. - **user_agent** (string) - The user agent used for fetching the feed. - **username** (string) - Username for feed authentication. - **password** (string) - Password for feed authentication. - **disabled** (boolean) - Whether the feed is disabled. - **ignore_http_cache** (boolean) - Whether to ignore HTTP cache. - **fetch_via_proxy** (boolean) - Whether to fetch the feed via a proxy. - **category** (object) - Information about the feed's category. - **id** (int) - The category ID. - **user_id** (int) - The user ID associated with the category. - **title** (string) - The title of the category. - **icon** (object) - Information about the feed's icon. - **feed_id** (int) - The ID of the feed the icon belongs to. - **icon_id** (int) - The ID of the icon. ### Response Example ```json { "id": 42, "user_id": 123, "title": "Example Feed", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 793, "user_id": 123, "title": "Some category" }, "icon": { "feed_id": 42, "icon_id": 84 } } ``` ``` -------------------------------- ### Get Users Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves a list of all users. Requires administrator privileges. ```APIDOC ## GET /v1/users ### Description Retrieves a list of all users. Requires administrator privileges. ### Method GET ### Endpoint /v1/users ### Response #### Success Response (200) - **id** (integer) - User ID - **username** (string) - Username - **is_admin** (boolean) - Whether the user is an administrator - **theme** (string) - User's theme preference - **language** (string) - User's language preference - **timezone** (string) - User's timezone - **entry_sorting_direction** (string) - Default sorting direction for entries - **stylesheet** (string) - Custom stylesheet - **google_id** (string) - Google ID for authentication - **openid_connect_id** (string) - OpenID Connect ID for authentication - **entries_per_page** (integer) - Number of entries to display per page - **keyboard_shortcuts** (boolean) - Whether keyboard shortcuts are enabled - **show_reading_time** (boolean) - Whether reading time is displayed - **entry_swipe** (boolean) - Whether entry swipe gestures are enabled - **last_login_at** (string) - Timestamp of the last login #### Response Example [ { "id": 270, "username": "test", "is_admin": false, "theme": "light_serif", "language": "en_US", "timezone": "America/Los_Angeles", "entry_sorting_direction": "desc", "stylesheet": "", "google_id": "", "openid_connect_id": "", "entries_per_page": 100, "keyboard_shortcuts": true, "show_reading_time": true, "entry_swipe": true, "last_login_at": "2021-01-04T20:57:34.447789-08:00" } ] ``` -------------------------------- ### Configure Keycloak with OIDC Source: https://github.com/miniflux/website/blob/main/content/docs/howto.md Example configuration for Keycloak using the default 'master' realm. The discovery endpoint typically matches the issuer URL. ```ini OAUTH2_PROVIDER=oidc OAUTH2_CLIENT_SECRET=replace_me OAUTH2_CLIENT_ID=replace_me OAUTH2_REDIRECT_URL=https://miniflux.example.org/oauth2/oidc/callback OAUTH2_OIDC_DISCOVERY_ENDPOINT=https://keycloak.example.org/realms/master OAUTH2_USER_CREATION=1 ``` -------------------------------- ### Get Enclosure Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves details for a specific enclosure using its ID. ```APIDOC ## GET /v1/enclosures/{enclosureID} ### Description Retrieves details for a specific enclosure using its ID. ### Method GET ### Endpoint /v1/enclosures/{enclosureID} ### Response #### Success Response (200) - **id** (integer) - **user_id** (integer) - **entry_id** (integer) - **url** (string) - **mime_type** (string) - **size** (integer) - **media_progression** (integer) #### Response Example ```json { "id": 278, "user_id": 1, "entry_id": 195, "url": "https://example.org/file", "mime_type": "application/octet-stream", "size": 0, "media_progression": 0 } ``` ``` -------------------------------- ### Create User Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Creates a new user. Requires administrator privileges. Available fields include username, password, and optional admin status. ```json { "username": "bob", "password": "test123", "is_admin": false } ``` ```json { "id": 270, "username": "bob", "theme": "system_serif", "language": "en_US", "timezone": "UTC", "entry_sorting_direction": "desc", "stylesheet": "", "google_id": "", "openid_connect_id": "", "entries_per_page": 100, "keyboard_shortcuts": true, "show_reading_time": true, "entry_swipe": true, "last_login_at": null } ``` -------------------------------- ### Running the Application Locally Source: https://github.com/miniflux/website/blob/main/content/docs/i18n.md Compiles and runs the application from the source code, necessary for testing translation changes. ```bash make run ``` -------------------------------- ### Get Feeds Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Retrieves a list of all feeds associated with the authenticated user. ```APIDOC ## GET /v1/feeds ### Description Retrieves a list of all feeds. ### Method GET ### Endpoint /v1/feeds ### Response #### Success Response (200) - **id** (integer) - The unique identifier of the feed. - **user_id** (integer) - The identifier of the user who owns the feed. - **title** (string) - The title of the feed. - **site_url** (string) - The URL of the website the feed is for. - **feed_url** (string) - The URL of the feed. - **checked_at** (string) - The timestamp when the feed was last checked. - **etag_header** (string) - The ETag header value from the last feed check. - **last_modified_header** (string) - The Last-Modified header value from the last feed check. - **parsing_error_message** (string) - Message detailing any parsing errors. - **parsing_error_count** (integer) - Number of parsing errors encountered. - **scraper_rules** (string) - CSS or XPath rules for scraping content. - **rewrite_rules** (string) - Rules for rewriting feed content. - **crawler** (boolean) - Whether the crawler is enabled for this feed. - **blocklist_rules** (string) - Rules to block specific entries. - **keeplist_rules** (string) - Rules to keep specific entries. - **user_agent** (string) - The user agent used for fetching the feed. - **username** (string) - Username for feed authentication. - **password** (string) - Password for feed authentication. - **disabled** (boolean) - Whether the feed is disabled. - **ignore_http_cache** (boolean) - Whether to ignore HTTP cache. - **fetch_via_proxy** (boolean) - Whether to fetch the feed via a proxy. - **category** (object) - Information about the feed's category. - **icon** (object) - Information about the feed's favicon. ### Response Example ```json [ { "id": 42, "user_id": 123, "title": "Example Feed", "site_url": "http://example.org", "feed_url": "http://example.org/feed.atom", "checked_at": "2017-12-22T21:06:03.133839-05:00", "etag_header": "KyLxEflwnTGF5ecaiqZ2G0TxBCc", "last_modified_header": "Sat, 23 Dec 2017 01:04:21 GMT", "parsing_error_message": "", "parsing_error_count": 0, "scraper_rules": "", "rewrite_rules": "", "crawler": false, "blocklist_rules": "", "keeplist_rules": "", "user_agent": "", "username": "", "password": "", "disabled": false, "ignore_http_cache": false, "fetch_via_proxy": false, "category": { "id": 793, "user_id": 123, "title": "Some category" }, "icon": { "feed_id": 42, "icon_id": 84 } } ] ``` ``` -------------------------------- ### Deprecated Application Version Response Source: https://github.com/miniflux/website/blob/main/content/docs/api.md Example response from the deprecated /version endpoint. ```text 2.0.22 ``` -------------------------------- ### Create Miniflux User and Database Source: https://github.com/miniflux/website/blob/main/content/docs/database.md Optionally, create a dedicated user for the Miniflux database and then create the database owned by that user. ```bash # Create a new user for our miniflux database createuser -P miniflux Enter password for new role: ****** Enter it again: ****** # Create a database owned by the miniflux user createdb -O miniflux miniflux2 ```