2022-10-25 13:40:39 +02:00
|
|
|
# CommaFeed
|
2014-12-05 08:22:00 +01:00
|
|
|
|
2023-04-25 15:34:20 +02:00
|
|
|
Google Reader inspired self-hosted RSS reader, based on Dropwizard and React/TypeScript.
|
2014-10-27 04:44:21 -04:00
|
|
|
|
2023-05-01 11:20:35 +02:00
|
|
|

|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
- 4 different layouts
|
2023-11-24 08:37:41 +01:00
|
|
|
- Light/Dark theme
|
2023-05-01 11:20:35 +02:00
|
|
|
- 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
|
2023-11-24 08:37:41 +01:00
|
|
|
- REST API and a Fever-compatible API for native mobile apps
|
2023-05-31 17:55:47 +02:00
|
|
|
- [Browser extension](https://github.com/Athou/commafeed-browser-extension)
|
2014-10-27 04:44:21 -04:00
|
|
|
|
2023-10-01 15:13:10 +02:00
|
|
|
## Deployment
|
2014-12-05 08:22:00 +01:00
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
### Docker
|
|
|
|
|
|
2023-10-01 15:13:10 +02:00
|
|
|
Docker is the easiest way to get started with CommaFeed.
|
|
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
Docker images are built automatically and are available at https://hub.docker.com/r/athou/commafeed
|
|
|
|
|
|
2023-10-01 15:13:10 +02:00
|
|
|
### Cloud hosting
|
|
|
|
|
|
|
|
|
|
[PikaPods](https://www.pikapods.com) 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.
|
|
|
|
|
|
|
|
|
|
[](https://www.pikapods.com/pods?run=commafeed)
|
|
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
### Download precompiled package
|
2015-06-19 08:32:25 +02:00
|
|
|
|
|
|
|
|
mkdir commafeed && cd commafeed
|
2023-05-01 17:26:16 +02:00
|
|
|
wget https://github.com/Athou/commafeed/releases/latest/download/commafeed.jar
|
|
|
|
|
wget https://github.com/Athou/commafeed/releases/latest/download/config.yml.example -O config.yml
|
2022-07-25 17:13:28 +02:00
|
|
|
java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server config.yml
|
2015-06-19 08:32:25 +02:00
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
The server will listen on http://localhost:8082. The default
|
|
|
|
|
user is `admin` and the default password is `admin`.
|
|
|
|
|
|
|
|
|
|
### Build from sources
|
2014-12-05 08:22:00 +01:00
|
|
|
|
|
|
|
|
git clone https://github.com/Athou/commafeed.git
|
2015-06-26 14:13:14 +02:00
|
|
|
cd commafeed
|
2015-07-04 17:08:53 +02:00
|
|
|
./mvnw clean package
|
2022-10-25 13:40:39 +02:00
|
|
|
cp commafeed-server/config.yml.example config.yml
|
|
|
|
|
java -Djava.net.preferIPv4Stack=true -jar commafeed-server/target/commafeed.jar server config.yml
|
2014-12-05 08:22:00 +01:00
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
The server will listen on http://localhost:8082. The default
|
|
|
|
|
user is `admin` and the default password is `admin`.
|
2014-10-27 04:44:21 -04:00
|
|
|
|
2024-01-09 09:39:56 +01:00
|
|
|
### 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.
|
2024-07-13 11:06:45 +02:00
|
|
|
This can be problematic on systems with limited memory.
|
2024-01-09 09:39:56 +01:00
|
|
|
|
|
|
|
|
#### Hard limit
|
|
|
|
|
|
|
|
|
|
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`.
|
|
|
|
|
|
|
|
|
|
#### Dynamic sizing
|
|
|
|
|
|
2024-07-13 11:06:45 +02:00
|
|
|
In addition to the previous setting, the JVM can be configured to release unused memory to the operating system with the
|
|
|
|
|
following parameters:
|
2024-01-09 09:39:56 +01:00
|
|
|
|
2024-07-13 10:25:32 +02:00
|
|
|
-Xms20m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:G1PeriodicGCInterval=10000 -XX:-G1PeriodicGCInvokesConcurrent -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10
|
2024-01-09 09:39:56 +01:00
|
|
|
|
|
|
|
|
See [here](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-g1-garbage-collector1.html)
|
|
|
|
|
and [here](https://docs.oracle.com/en/java/javase/17/gctuning/factors-affecting-garbage-collection-performance.html) for
|
|
|
|
|
more
|
|
|
|
|
information.
|
|
|
|
|
|
2024-07-13 11:06:45 +02:00
|
|
|
#### OpenJ9
|
|
|
|
|
|
|
|
|
|
The [OpenJ9](https://eclipse.dev/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](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/).
|
|
|
|
|
This is the JVM used in the [Docker image](https://github.com/Athou/commafeed/blob/master/Dockerfile).
|
|
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
## Translation
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
Files for internationalization are
|
|
|
|
|
located [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/src/locales).
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2022-10-25 13:40:39 +02:00
|
|
|
To add a new language:
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2023-05-24 18:53:30 +02:00
|
|
|
- add the new locale to the `locales` array in:
|
|
|
|
|
- `commafeed-client/.linguirc`
|
|
|
|
|
- `commafeed-client/src/i18n.ts`
|
|
|
|
|
- run `npm run i18n:extract`
|
|
|
|
|
- add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2023-04-25 08:57:55 +02:00
|
|
|
The name of the locale should be the
|
|
|
|
|
two-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2022-10-25 13:40:39 +02:00
|
|
|
## Local development
|
2014-10-27 04:56:07 -04:00
|
|
|
|
2022-10-25 13:40:39 +02:00
|
|
|
### Backend
|
|
|
|
|
|
|
|
|
|
- Open `commafeed-server` in your preferred Java IDE.
|
2023-04-25 08:57:55 +02:00
|
|
|
- CommaFeed uses Lombok, you need the Lombok plugin for your IDE.
|
2022-10-25 13:40:39 +02:00
|
|
|
- Start `CommaFeedApplication.java` in debug mode with `server config.dev.yml` as arguments
|
|
|
|
|
|
|
|
|
|
### Frontend
|
2014-10-27 04:44:21 -04:00
|
|
|
|
2022-10-25 13:40:39 +02:00
|
|
|
- Open `commafeed-client` in your preferred JavaScript IDE.
|
|
|
|
|
- run `npm install`
|
|
|
|
|
- run `npm run dev`
|
2023-05-01 17:26:16 +02:00
|
|
|
|
|
|
|
|
The frontend server is now running at http://localhost:8082 and is proxying REST requests to the backend running on
|
|
|
|
|
port 8083
|