86 lines
3.3 KiB
Markdown
86 lines
3.3 KiB
Markdown
# Dispatch a self-hosted RSS reader
|
|
|
|
A clean, fast RSS/Atom reader you run yourself. Three-pane layout on desktop
|
|
(feeds → articles → reading pane), a single stacked view with swipe-style
|
|
navigation on mobile. Feeds refresh automatically in the background.
|
|
|
|
- Add feeds by URL, organize them into folders
|
|
- Unread / starred / all-articles views, per-feed and per-folder views
|
|
- Full-text search across your fetched articles
|
|
- Clean reading view (images, embeds, and formatting preserved; ads/scripts/trackers stripped)
|
|
- OPML import and export (moving in from another reader, or backing out)
|
|
- Light and dark themes
|
|
- Everything in a single SQLite file
|
|
|
|
## Quick start (Docker Compose)
|
|
|
|
This is the easiest path and what the instructions below assume.
|
|
|
|
1. Copy this whole `dispatch-rss` folder onto your server (or clone it if you put it in git).
|
|
2. Edit `docker-compose.yml` if you want a different port than `8080`, or point the
|
|
`./data` volume at wherever you want the database stored.
|
|
3. From inside the folder:
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
4. Visit `http://<your-server-ip>:8080`.
|
|
|
|
That's it — the container fetches your feeds every 15 minutes by default (configurable
|
|
via `FETCH_INTERVAL_MINUTES`) and stores everything in the mounted `/data` volume, so
|
|
updating or recreating the container never loses your feeds or read state.
|
|
|
|
## Running this on Unraid specifically
|
|
|
|
You have two easy options. Either works — pick whichever you're already using for
|
|
other containers.
|
|
|
|
### Option A: Compose Manager plugin (recommended if you use docker-compose elsewhere)
|
|
|
|
1. Install **Compose Manager** from the Community Applications store, if you don't have it.
|
|
2. Copy this project folder to somewhere on your array, e.g. `/mnt/user/appdata/dispatch-rss/`.
|
|
3. In Compose Manager, add a new stack pointing at that folder's `docker-compose.yml`.
|
|
4. Before starting it, change the volume line to something durable on your array, e.g.:
|
|
|
|
```yaml
|
|
volumes:
|
|
- /mnt/user/appdata/dispatch-rss/data:/data
|
|
```
|
|
|
|
5. Start the stack. The UI will be at `http://<unraid-ip>:8080`.
|
|
|
|
### Option B: Plain Docker (no compose plugin needed)
|
|
|
|
1. Copy the project folder to your server, e.g. `/mnt/user/appdata/dispatch-rss/`.
|
|
2. Open an Unraid terminal and build the image:
|
|
|
|
```bash
|
|
cd /mnt/user/appdata/dispatch-rss
|
|
docker build -t dispatch-rss:latest .
|
|
```
|
|
|
|
3. In the Unraid **Docker** tab, click **Add Container**, and set:
|
|
- **Repository**: `dispatch-rss:latest`
|
|
- **Network Type**: `bridge`
|
|
- **Port**: container `8080` → host `8080` (or any free port you prefer)
|
|
- **Path**: container `/data` → host `/mnt/user/appdata/dispatch-rss/data`
|
|
- **Environment variable** (optional): `FETCH_INTERVAL_MINUTES` = `15`
|
|
|
|
4. Apply, then visit `http://<unraid-ip>:8080`.
|
|
|
|
If you'd rather not build on the Unraid box itself, you can build the image on
|
|
another machine, push it to Docker Hub or a private registry, and just point the
|
|
**Repository** field at that image instead of building locally.
|
|
|
|
## Configuration
|
|
|
|
Environment variables (all optional):
|
|
|
|
| Variable | Default | What it does |
|
|
|---|---|---|
|
|
| `PORT` | `8080` | Port the app listens on inside the container |
|
|
| `DATA_DIR` | `/data` | Where the SQLite database file is stored |
|
|
| `FETCH_INTERVAL_MINUTES` | `15` | How often feeds are refreshed automatically |
|
|
|
|
## Backing up |