MonitoRSS-Clone
A control panel for the news-delivering MonitoRSS (formerly known as Discord.RSS) bot.
Creates a Container which runs synzen’s MonitoRSS-Clone, with lsiobase/alpine as the base image, as seen on https://monitorss.xyz/.
The lsiobase/alpine image is a custom base image built with Alpine linux and S6 overlay. Using this image allows us to use the same user/group ids in the container as on the host, making file transfers much easier
Deployment
Tags | Description |
---|---|
latest | Using the latest tag will pull the latest image for amd64/x86_64 architecture. |
Pre-built images
version: "3.5"
services:
mrss-redis:
container_name: mrss-redis
restart: unless-stopped
image: redis:alpine
mrss-mongo:
container_name: mrss-mongodb
restart: unless-stopped
command: mongod --port 27017
image: mongo:latest
volumes:
- ./path/to/config/db:/data/db
mrss-bot:
container_name: mrss-bot
restart: unless-stopped
image: griefed/monitorss-clone
depends_on:
- mrss-mongo
environment:
- TZ=Europe/Berlin
- PUID=1000 # User ID
- PGID=1000 # Group ID
- DRSS_START=bot
- DRSS_BOT_TOKEN=
- DRSS_DATABASE_URI=mongodb://mrss-mongo:27017/rss
volumes:
- ./path/to/config/bot:/config
mrss-web:
container_name: mrss-web
image: griefed/monitorss-clone
restart: unless-stopped
depends_on:
- mrss-redis
- mrss-mongo
ports:
- "8081:8081"
environment:
- TZ=Europe/Berlin
- PUID=1000 # User ID
- PGID=1000 # Group ID
- DRSS_START=web
- DRSSWEB_BOT_TOKEN=
- DRSSWEB_DATABASE_REDIS=redis://mrss-redis:6379
- DRSSWEB_DATABASE_URI=mongodb://mrss-mongo:27017/rss
- DRSSWEB_BOT_REDIRECTURI=
- DRSSWEB_BOT_CLIENTID=
- DRSSWEB_BOT_CLIENTSECRET=
volumes:
- ./path/to/config/web:/config
Raspberry Pi
Due to MongoDB not having an armv7 compatible container, I won’t provide an arm compatible image for MonitoRSS-Clone.
Configuration
Configuration | Explanation |
---|---|
Restart policy | “no”, always, on-failure, unless-stopped |
config volume | Contains config files and logs. |
data volume | Contains your/the containers important data. |
TZ | Timezone |
PUID | for UserID |
PGID | for GroupID |
ports | The port where the service will be available at. |
DRSS_START=bot | Whether the container should start as bot, web, or bot-web. One container must use bot and one container must use web |
DRSS_BOT_TOKEN= | Your Discord Bot Token |
DRSS_DATABASE_URI= | Address of your MongoDB. Keep default unless you know what you are doing. |
DRSSWEB_BOT_TOKEN= | Your Discord Bot Token |
DRSSWEB_DATABASE_REDIS= | Address of your Redis Instance. Keep default unless you know what you are doing. |
DRSSWEB_DATABASE_URI= | Address of your MongoDB. Keep default unless you know what you are doing. |
DRSSWEB_BOT_REDIRECTURI= | Redirect URL for the webinterface. See https://docs.monitorss.xyz/configuration/web-interface. |
DRSSWEB_BOT_CLIENTID= | Client ID Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface |
DRSSWEB_BOT_CLIENTSECRET= | Client Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface |
User / Group Identifiers
When using volumes, permissions issues can arise between the host OS and the container. Linuxserver.io avoids this issue by allowing you to specify the user PUID
and group PGID
.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance PUID=1000
and PGID=1000
, to find yours use id user
as below:
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
Standalone
docker-compose
version: "2"
services:
monitorss-clone:
image: griefed/monitorss-clone:latest
container_name: monitorss-clone
restart: unless-stopped
environment:
- PUID=1000 # User ID
- PGID=1000 # Group ID
- DRSS_START=web # Whether the container should start as bot, web, or bot-web
- DRSS_DATABASE_URI=mongodb://mrss-mongo:27017/rss # Address of your MongoDB. Keep default unless you know what you are doing.
- DRSS_BOT_TOKEN=123456 # Discord Bot Token
- DRSSWEB_DATABASE_REDIS=redis://mrss-redis:6379 # Address of your Redis Instance. Keep default unless you know what you are doing.
- DRSSWEB_BOT_TOKEN=123456 # Discord Bot Token
- DRSSWEB_BOT_REDIRECTURI=http://localhost:8081/authorize # Redirect URL for the webinterface. See https://docs.monitorss.xyz/configuration/web-interface.
- DRSSWEB_BOT_CLIENTSECRET=123456 # Client Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface
- DRSSWEB_BOT_CLIENTID=123456 # Client ID Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface
volumes:
- /host/path/to/config:/config # Where config files will be stored
ports:
- 8081:8081/tcp # (When using web) Port at which the web interface will be available at
cli
docker create \
--name=monitorss-clone \
-e PUID=1000 `# User ID` \
-e PGID=1000 `# Group ID` \
-e DRSS_START=web `# Whether the container should start as bot, web, or bot-web` \
-e DRSS_DATABASE_URI=mongodb://mrss-mongo:27017/rss `# Address of your MongoDB. Keep default unless you know what you are doing.` \
-e DRSS_BOT_TOKEN=123456 `# Discord Bot Token` \
-e DRSSWEB_DATABASE_REDIS=redis://mrss-redis:6379 `# Address of your Redis Instance. Keep default unless you know what you are doing.` \
-e DRSSWEB_BOT_TOKEN=123456 `# Discord Bot Token` \
-e DRSSWEB_BOT_REDIRECTURI=http://localhost:8081/authorize `# Redirect URL for the webinterface. See https://docs.monitorss.xyz/configuration/web-interface.` \
-e DRSSWEB_BOT_CLIENTSECRET=123456 `# Client Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface` \
-e DRSSWEB_BOT_CLIENTID=123456 `# Client ID Secret of your Discord App. See https://docs.monitorss.xyz/configuration/web-interface` \
-v /host/path/to/config:/config `# Where config files will be stored` \
-p 8081:8081/tcp `# (When using web) Port at which the web interface will be available at` \
--restart unless-stopped \
griefed/monitorss-clone:latest
Building the image yourself
Use the Dockerfile to build the image yourself, in case you want to make any changes to it
docker-compose.yml:
version: "3.5"
services:
mrss-redis:
container_name: mrss-redis-container
restart: unless-stopped
image: redis:alpine
mrss-mongo:
container_name: mrss-mongodb-container
restart: unless-stopped
command: mongod --port 27017
image: mongo:latest
volumes:
- 'db-data:/data/db'
mrss-bot:
container_name: mrss-bot-container
restart: unless-stopped
build: ./MonitoRSS-Clone/.
depends_on:
- mrss-mongo
environment:
- TZ=Europe/Berlin
- PUID=1000 # User ID
- PGID=1000 # Group ID
- DRSS_START=bot
- DRSS_BOT_TOKEN=
- DRSS_DATABASE_URI=mongodb://mrss-mongo:27017/rss
volumes:
- ./path/to/config:/config
mrss-web:
container_name: mrss-web-container
build: ./MonitoRSS-Clone/.
restart: unless-stopped
depends_on:
- mrss-redis
- mrss-mongo
ports:
- "8081:8081"
environment:
- TZ=Europe/Berlin
- PUID=1000 # User ID
- PGID=1000 # Group ID
- DRSS_START=web
- DRSSWEB_BOT_TOKEN=
- DRSSWEB_DATABASE_REDIS=redis://mrss-redis:6379
- DRSSWEB_DATABASE_URI=mongodb://mrss-mongo:27017/rss
- DRSSWEB_BOT_REDIRECTURI=
- DRSSWEB_BOT_CLIENTID=
- DRSSWEB_BOT_CLIENTSECRET=
volumes:
- ./path/to/config:/config
volumes:
db-data:
- Clone the repository:
git clone https://github.com/Griefed/MonitoRSS-Clone.git ./MonitoRSS-Clone
- Prepare docker-compose.yml file as seen above
docker-compose up -d --build monitorss-clone
- Visit IP.ADDRESS.OF.HOST:8080
- ???
- Profit!
Information from the original repository by synzen
MonitoRSS Clone (Formerly Discord.RSS)
Driven by the lack of comprehensive RSS bots available, I have decided to try my hand at creating one of my own. Designed with as much customization as possible for both users and bot hosters, while also (or should be) easy to understand.
All documentation can be found at https://docs.monitorss.xyz/.
Publicly Hosted Instance
Don’t want to bother hosting your own instance? Use the publicly hosted one!
https://discordapp.com/oauth2/authorize?client_id=268478587651358721&scope=bot&permissions=19456
Web Interface
MonitoRSS also comes with a web interface! To run the web interface, see the documentation.
Deploy to Heroku
You can deploy the bot in a simple way to Heroku using the button below. Click here for detailed instructions – you must have MongoDB hosted with its URI ready to also insert into DRSS_DATABASE_URI
environment variable.
If you want to deploy manually without the button, you can follow this guide instead.
Hosting on Glitch
MonitoRSS requires node.js v12.16. As of 23 May 2020, Glitch does not install v12.16 automatically, and must be manually installed. For MonitoRSS to work on Glitch, follow these steps.
Setup
- Click the remix button and wait for the setup to complete. Be sure to make your project private to protect your configs.
- Open terminal and run the following command. Adding the git remote will let you pull updates from the clone repo.
git remote add origin https://github.com/synzen/MonitoRSS-Clone.git && npm install --no-save node@12.16.3
- Set up your configs. You can use MongoDB Atlas for the MongoDB database and Redis for the Redis database.
- Use a tool like Uptime Robot to prevent the bot from going offline.
If you want the web interface, you will need to follow the web configuration and add the following in a file named .env:
The web port for Glitch is 3000.
Updating
See https://docs.monitorss.xyz/setting-up/staying-updated. Since using npm install
will remove the required node v12.16 automatically, you must install it again after updating:
git reset --hard origin/master && npm install && npm install --no-save node@12.16.3