Delivers highly-customized news feeds to Discord!
To use the publicly hosted instance for free, visit https://monitorss.xyz!
Docker is required to easily coordinate and run multiple services at once.
Note
General knowledge of how Docker, Docker volumes, and docker compose works is highly recommended to avoid accidental data loss
- Install Docker Engine
- Install Docker Compose
- Clone this repo's
main
(the default) branch -git clone https://github.com/synzen/MonitoRSS.git
- Create a Discord application through Discord's developer portal if you do not already have one
- Create a copy of the existing
.env.example
file and rename it to.env.prod
- Replace all relevant values in the
.env.prod
file with your own values- If you have your own MongoDB instance, set
BACKEND_API_MONGODB_URI
to your MongoDB URI - Add your email at the end of
FEED_REQUESTS_FEED_REQUEST_DEFAULT_USER_AGENT
for feed hosts to be able to contact you if you violate their usage policies. For example,MonitoRSS [Self-Hosted]/1.0 youremail@email.com
. - Replace all instances of "BOT_TOKEN_HERE" with your Discord bot application token
- Replace all instances of "BOT_CLIENT_ID_HERE" with your Discord bot application ID
- Replace all instances of "BOT_CLIENT_SECRET_HERE" with your Discord bot application secret
- Set
BACKEND_API_SESSION_SECRET
to a random 64-character string - Set
BACKEND_API_SESSION_SALT
to a random 16-character string - Add
http://localhost:8000/api/v1/discord/callback-v2
to the list of redirect URIs in your Discord application in the OAuth2 page
- If you have your own MongoDB instance, set
- Run
docker compose up -d
- If you run into issues with network timeouts, pass the parallel flag to only build 1 container at once:
docker compose --parallel 1 up -d
- Any containers ending in
-migration
do not need to be running
- If you run into issues with network timeouts, pass the parallel flag to only build 1 container at once:
- Access the control panel via http://localhost:8000
- Set up your domain to point to the server running the control panel on localhost
- Update all references to
http://localhost:8000
in your.env.prod
to your desired domain. For example,https://mynewdomain.com
. - Add
{DOMAIN_HERE}/api/v1/discord/callback-v2
to the list of redirect URIs in your Discord application in the OAuth2 page, replacing{DOMAIN_HERE}
with the value you set in step 1
While email notifications are available so that you may get notified when feeds are disabled for various reasons (permission erorrs, request errors, etc), credentials must be set to be able to send them out. Set the three variables below with your email provider's SMTP settings in your env file:
BACKEND_API_SMTP_HOST
BACKEND_API_SMTP_USERNAME
BACKEND_API_SMTP_PASSWORD
BACKEND_API_SMTP_FROM
Make sure to opt into email notifications in the control panel's user settings page afterwards.
- Create a Reddit application at https://www.reddit.com/prefs/apps as a "web app".
- Add
{DOMAIN_HERE}/api/v1/reddit/callback
to the list of redirect URIs in your Reddit application settings, replacing{DOMAIN_HERE}
with your domain that you're using to access the control panel. - Copy the redirect URI you just added and set it as
BACKEND_API_REDDIT_REDIRECT_URI
in your.env.prod
file. - Copy the Reddit application's client ID (under "web app" label) and set it as
BACKEND_API_REDDIT_CLIENT_ID
in your.env.prod
file. - Copy the Reddit application's secret and set it as
BACKEND_API_REDDIT_CLIENT_SECRET
in your.env.prod
file. - Generate a random 64-digit hexadecimal string and set it as
BACKEND_API_ENCRYPTION_KEY_HEX
in your.env.prod
file. One option is to use an online generator such as this one.
Images are automatically built and pushed to Docker Hub on every commit to the main
branch, so there is technically no need to pull the latest files in. To update your local instance:
- Make a backup of your MongoDB data just in case since data migrations may occur
- Stop containers with
docker compose rm --stop -f
- Pull latest images with
docker compose pull
- Start containers with
docker compose up -d
If you've been using MonitoRSS v6 (used by the repo https://github.com/synzen/MonitoRSS-Clone), then these are instructions to migrate off of that repo to use the latest changes.
It's recommended that you don't delete your v6 files until you've confirmed that all your feeds are working as expected post-migration.
- Follow the instructions above to self host. Be sure to clone this repo - the clone repo is no longer used or maintained.
- In your
.env.prod
file, setBACKEND_API_MONGODB_URI
to your MongoDB URI - Run
docker compose --parallel 1 up -d --build
- If you run into issues with network timeouts, pass the parallel flag to only build 1 container at once:
docker compose --parallel 1 up -d
- If you run into issues with network timeouts, pass the parallel flag to only build 1 container at once:
- Access the control panel via http://localhost:8000/servers and convert all your legacy feeds to personal feeds. Legacy feed articles will not be fetched/delivered until they are converted to personal feeds.
- After verifying that all is working as expected, you may delete your v6 files.