Google Reader inspired self-hosted RSS reader, based on Quarkus and React/TypeScript.
Docker is the easiest way to get started with CommaFeed.
Docker images are built automatically and are available at https://hub.docker.com/r/athou/commafeed
PikaPods offers 1-click cloud hosting solutions starting at $1/month with a free $5 welcome credit and officially supports CommaFeed. PikaPods shares 20% of the revenue back to CommaFeed.
Go to the release page and download the latest version for your operating system and database of choice.
There are two types of packages:
linux-x86_64
and windows-x86_64
packages are compiled natively and contain an executable that can be run
directly.jvm
package is a zip file containing all .jar
files required to run the application. This package works on all
platforms and is started with java -jar quarkus-run.jar
.If available for your operating system, the native package is recommended because it has a faster startup time and lower memory usage.
./mvnw clean package [-P<database>] [-Pnative] [-DskipTests]
<database>
can be one of h2
, postgresql
, mysql
or mariadb
. The default is h2
.-Pnative
compiles the application to native code. This requires GraalVM to be installed (GRAALVM_HOME
environment
variable pointing to a GraalVM installation).-DskipTests
to speed up the build process by skipping tests.When the build is complete:
commafeed-server/target/commafeed-<version>-<database>-jvm.zip
. Extract it and run the application with
java -jar quarkus-run.jar
commafeed-server/target/commafeed-<version>-<database>-<platform>-<arch>-runner[.exe]
CommaFeed doesn't require any configuration to run with its embedded database (H2). The database file will be stored in
the data
directory of the current directory.
To use a different database, you will need to configure the following properties:
quarkus.datasource.jdbc.url
jdbc:h2:./data/db;DEFRAG_ALWAYS=TRUE
jdbc:postgresql://localhost:5432/commafeed
jdbc:mysql://localhost/commafeed?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true&timezone=UTC
jdbc:mariadb://localhost/commafeed?autoReconnect=true&failOverReadOnly=false&maxReconnects=20&rewriteBatchedStatements=true&timezone=UTC
quarkus.datasource.username
quarkus.datasource.password
There are multiple ways to configure CommaFeed:
config/application.properties
properties file relative to the working
directory (keys in kebab-case)-D
(keys in kebab-case).env
file in the working directory (keys in UPPER_CASE)The properties file is recommended because CommaFeed will be able to warn about invalid properties and typos.
All CommaFeed settings 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
quarkus.http.auth.session.encryption-key
property to a fixed value (min. 16 characters).
All other Quarkus settings can be found here.
When started, the server will listen on http://localhost:8082.
The default user is admin
and the default password is admin
.
When CommaFeed is up and running, you can subscribe to this feed to be notified of new releases.
The Java Virtual Machine (JVM) is rather greedy by default and will not release unused memory to the operating system. This is because acquiring memory from the operating system is a relatively expensive operation. This can be problematic on systems with limited memory.
native
and jvm
packages)The JVM can be configured to use a maximum amount of memory with the -Xmx
parameter.
For example, to limit the JVM to 256MB of memory, use -Xmx256m
.
jvm
package)In addition to the previous setting, the JVM can be configured to release unused memory to the operating system with the following parameters:
-Xms20m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:G1PeriodicGCInterval=10000 -XX:-G1PeriodicGCInvokesConcurrent -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10
See here and here for more information.
jvm
package)The OpenJ9 JVM is a more memory-efficient alternative to the HotSpot JVM, at the cost of slightly slower throughput.
IBM provides precompiled binaries for OpenJ9 named Semeru. This is the JVM used in the Docker image.
Files for internationalization are located here.
To add a new language:
locales
array in:
commafeed-client/.linguirc
commafeed-client/src/i18n.ts
npm run i18n:extract
commafeed-client/src/locales/[locale]/messages.po
fileThe name of the locale should be the two-letters ISO-639-1 language code.
commafeed-server
in your preferred Java IDE.
./mvnw quarkus:dev
commafeed-client
in your preferred JavaScript IDE.npm install
npm run dev
The frontend server is now running at http://localhost:8082 and is proxying REST requests to the backend running on port 8083