RSS/Atom reader for OpenCloud. It speaks the Nextcloud News API (v1.3), so the official Nextcloud News app for Android works against it, and it ships as a web extension that lives inside the OpenCloud UI.
This is beta software. It is in active development, APIs and behavior may change, and you may hit bugs. Point it at your test server first and keep a backup of the data directory.
I have been a big Nextcloud fan for many years. I run it, I like the ecosystem, and the apps I use every day are Nextcloud apps. But over the years the stack underneath became too much for me: PHP, a web server, a database, cron jobs, app upgrades that pull half of Composer. Every machine I put it on ends up feeling like a small datacenter.
OpenCloud takes a different route: everything it does, including what Nextcloud does in PHP, runs inside a single Go binary. Light on resources, quick to install, trivial to update, easy to reason about when something breaks. It is younger, it has fewer apps, a smaller community, and less maturity. I don't know yet whether it will win. But the foundation is a good starting point, so I am following it closely, testing it in real use, and contributing what I miss.
This reader is the first piece. The goal is to move the Nextcloud experience I care about to OpenCloud while staying as compatible with existing Nextcloud clients as possible. That is why the backend implements the News REST API v1.3 instead of inventing its own: if you already use the Nextcloud News app on Android, you can point it at ocnews and keep your workflow.
Backend (part of ocapps, a single static Go binary, SQLite, no external services):
- Full News API v1.3: folders, feeds, items, read/unread/starred state,
sync endpoints (
/items,/items/updated, bulk marking) - Multi-user: each OpenCloud account gets its own feeds, folders and rules automatically. Login validates against the server's Graph API (app passwords for clients, session tokens for the web).
- Feed daemon: adaptive refresh intervals (quiet feeds back off, busy ones stay fresh), exponential backoff on errors, jitter so feeds never sync up, nightly retention of old read items
- HTML sanitization of every body at ingest (whitelist policy)
- Signed media proxy: feed images and audio/video play inside the app even under strict CSP setups, with HTTP Range streaming for seeking
- Full article extraction: feeds that only ship summaries can be fetched from the origin and extracted server side (readability), cached forever; feeds that already ship full text are detected and left alone
- OPML import/export, favicon cache, updater routes from the spec
- Spanish/English error messages negotiated per user
- WebSub support, saved searches, filter rules, push notifications (ntfy)
Web extension (Vue 3, installed like any OpenCloud web app):
- Sidebar with folders, feeds and unread counts; subscribe, rename, move, delete, mark-as-read per feed or folder
- Article list with unread/all filter, oldest/newest order, pagination
- Reading pane with real typography, images, in-app audio/video players, starred and read/unread toggles, open-original link
- OPML import/export from the UI
Android: the official Nextcloud News client works. Create an app token in your OpenCloud account settings, then configure the app with your server URL, username and that token. Display name, sync, marking, podcast enclosures: all tested against it.
OpenCloud web extensions are frontend only, so the feed engine lives in a
companion service (the same pattern Collabora or the webmail extensions
use). Since 2026, the backend is part of ocapps, a unified server that
also covers Notes and ocphotos:
┌─────────────────────────────────────────────────────────────┐
│ OpenCloud Web │
│ web-app-news (Vue 3 extension, in the app switcher) │
│ │ same-origin REST, session auth │
└────────┼────────────────────────────────────────────────────┘
│ /index.php/apps/news/api/v1-3/ (reverse proxy)
▼
ocapps backend (Go, single binary)
• News API v1.3 • feed fetcher daemon
• sanitization • signed media proxy
• SQLite (multi-user) • OpenCloud Graph auth
• Notes API v1.4 • Photos API
▲
│ Basic auth (app password)
Nextcloud News Android app (unmodified)
Download the latest release zip from the releases page:
# Download news-X.Y.Z.zip and extract to your OpenCloud apps folder
# (commonly /var/lib/opencloud/web/assets/apps or /etc/opencloud/web/assets/apps)Add to /etc/opencloud/apps.yaml:
news:
config: {}Restart OpenCloud. The News app appears in the app switcher.
cd extension
pnpm install && pnpm buildCopy dist/ to the OpenCloud apps folder as news/.
The backend lives in the ocapps repo.
See its deploy/README.md for the full installation guide (systemd,
environment variables, reverse proxy snippets).
Quick reference for the proxy:
location /index.php/apps/news/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8096;
}Do not route /api/ or other prefixes to the news backend; the OpenCloud web client
uses them.
Releases are built automatically by GitHub Actions when a tag news-v* is pushed.
The workflow installs dependencies, builds the extension, creates the zip with the
official layout (news/manifest.json + news/js/remoteEntry-*.mjs), and attaches it
to the GitHub release.
| Reader | Reader (dark) |
|---|---|
![]() |
![]() |
| Article with images and full text | Article (dark) |
|---|---|
![]() |
![]() |
Captured from a local development instance with the English UI.
Ideas and rough order, not promises:
- Extension polish: Spanish/English UI translations, mobile layout, keyboard navigation
- Feed article filters (title/body/keyword rules, like the News 28.4 filter API)
- Full-text search across items
- Release engineering: CI, goreleaser builds, install script
- A standalone PWA client for mobile browsers (parked; the Android app covers the use case for now)
- Track OpenCloud itself as it matures and adapt (the extension SDK is still moving)
Issues and pull requests are welcome, in English. Keep in mind this is a one-person project run in spare time: with collaborations or support it could grow faster, but I can't promise anything.
AGPL-3.0. See LICENSE.



