Skip to content

Athou/commafeed

Repository files navigation

CommaFeed

Google Reader inspired self-hosted RSS reader, based on Dropwizard and React/TypeScript.

preview

Features

  • 4 different layouts
  • Light/Dark theme
  • Fully responsive
  • Keyboard shortcuts for almost everything
  • Support for right-to-left feeds
  • Translated in 25+ languages
  • Supports thousands of users and millions of feeds
  • OPML import/export
  • REST API and a Fever-compatible API for native mobile apps
  • Browser extension

Deployment

Docker

Docker is the easiest way to get started with CommaFeed.

Docker images are built automatically and are available athttps://hub.docker /r/athou/commafeed

Cloud hosting

PikaPodsoffers 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.

PikaPods

Download precompiled package

mkdir commafeed && cd commafeed
wget https://github /Athou/commafeed/releases/latest/download/commafeed.jar
wget https://github /Athou/commafeed/releases/latest/download/config.yml.example -O config.yml
java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server config.yml

The server will listen onhttp://localhost:8082.The default user isadminand the default password isadmin.

Build from sources

git clone https://github /Athou/commafeed.git
cd commafeed
./mvnw clean package
cp commafeed-server/config.yml.example config.yml
java -Djava.net.preferIPv4Stack=true -jar commafeed-server/target/commafeed.jar server config.yml

The server will listen onhttp://localhost:8082.The default user isadminand the default password isadmin.

Memory management

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.

Hard limit

The JVM can be configured to use a maximum amount of memory with the-Xmxparameter. For example, to limit the JVM to 256MB of memory, use-Xmx256m.

Dynamic sizing

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

Seehere andherefor more information.

OpenJ9

TheOpenJ9JVM is a more memory-efficient alternative to the HotSpot JVM, at the cost of slightly slower throughput.

IBM provides precompiled binaries for OpenJ9 namedSemeru. This is the JVM used in theDocker image.

Translation

Files for internationalization are locatedhere.

To add a new language:

  • add the new locale to thelocalesarray in:
    • commafeed-client/.linguirc
    • commafeed-client/src/i18n.ts
  • runnpm run i18n:extract
  • add translations to the newly createdcommafeed-client/src/locales/[locale]/messages.pofile

The name of the locale should be the two-lettersISO-639-1 language code.

Local development

Backend

  • Opencommafeed-serverin your preferred Java IDE.
    • CommaFeed uses Lombok, you need the Lombok plugin for your IDE.
  • StartCommaFeedApplication.javain debug mode withserver config.dev.ymlas arguments

Frontend

  • Opencommafeed-clientin your preferred JavaScript IDE.
  • runnpm install
  • runnpm run dev

The frontend server is now running athttp://localhost:8082and is proxying REST requests to the backend running on port 8083