-
Notifications
You must be signed in to change notification settings - Fork 71
Installation
Notifo is provided as container image and can be installed in kubernetes, docker, docker-swarm and every platform that supports containers.
Notifo has the following requirements:
At the moment only MongoDB is supported as a database. For high available requirements it is recommended to setup a replica set with at least 3 members or to use Mongo Atlas.
You can configure the connection string with:
-
STORAGE__MONGODB__CONNECTIONSTRING=mongodb://localhost
(Remember the two underscores).
If you want to have support for another database, you can create an issue in Github.
Chrome and Google has increased the requirements in the last year. Some redirects are only possible for https websites. Therefore Notifo needs a valid https certificate. The docker-compose setup uses caddy and lets encrypt to configure the SSL certificate automatically and free of charge.
Notifo provides a web plugin that is connected with SignalR to the web server. It is a framework from Microsoft for realtime applications, that provides several communication methods.
For the initial handshake SignalR needs sticky sessions: https://docs.microsoft.com/en-us/aspnet/core/signalr/scale. You can turn off sticky sessions (which is the default), then the web plugin can only use web sockets and will fail to connect, when the browser does not support it.
Use the following setting to turn on sticky sessions:
-
WEB__SIGNALR__STICKY=true
(Remember the two underscores).
For scale out scenarios (you have more than one Notifo instance) you need a backplane for SignalR. This backplane is used to establish a communication between your instances. For example when you have two nodes (node1 and node2). The user is connected to node1, but the notification is received from node2. Then node2 has to send the notification to node1, which then sends it to browser of the user.
You can configure the connection string to your redis instance with:
-
CLUSTERING__MODE=redis
(Remember the two underscores) CLUSTERING__REDIS__CONNECTIONSTRING=localhost
If you do not want to use Redis, you can turn off SignalR. Then the web plugin uses polling to get the updates from the server. It creates more load, but it is easier to scale. You can just ignore this setting.
You can turn off SignalR with:
WEB__SIGNALR__ENABLED=false
Notifo uses a lot of queues to distribute the load. Therefore a messaging solution is needed.
You can configure the messaging solution with these app settings: https://github.com/notifo-io/notifo/blob/main/backend/src/Notifo/appsettings.json#L70
If you want to have support for another messaging solution, you can create an issue in Github.