![]() |
7 years ago | |
---|---|---|
backend | 7 years ago | |
frontend | 7 years ago | |
.editorconfig | 8 years ago | |
.env | 8 years ago | |
.gitignore | 7 years ago | |
LICENCE | 8 years ago | |
README.md | 8 years ago | |
docker-compose.yml | 8 years ago | |
fallback.html | 8 years ago | |
windows-start.cmd | 8 years ago |
This is a rewrite of the original Musare in NodeJS, Express, SocketIO and React.
The site is available at https://musare.com.
The frontend is a React single page app that uses react-router, served over Nginx or express. The Nginx server not only serves the frontend, but also serves as a load balancer for requests going to the backend.
The backend is a scalable NodeJS / Redis / MongoDB app. Each backend server handles a group of SocketIO connections. User sessions are stored in a central Redis server. All data is stored in a central MongoDB server. The Redis and MongoDB servers are replicated to several secondary nodes, which can become the primary node if the current primary node goes down.
We currently only have 1 backend, 1 MongoDB server and 1 Redis server running for production, though it is relatively easy to expand.
npm install -g nodemon
Once you've installed the required tools:
git clone https://github.com/Musare/MusareNode.git
cd MusareNode
cp backend/config/template.json backend/config/default.json
Values:
secret
: Can be anything. It's used by express's session module.
domain
: Should be the url where the site will be accessible from, usually http://localhost
locally.
serverDomain
: Should be the url where the backend will be accessible from, usually http://localhost:8080
locally.
serverPort
: Should be the port where the backend will listen on, usually 8080
locally.
isDocker
: If you are using Docker or not.
apis.youtube.key
: Can be obtained by setting up a YouTube API Key.
apis.recaptcha.secret
: Value can be obtained by setting up a ReCaptcha Site.
apis.github
: Values can be obtained by setting up a GitHub OAuth Application.
apis.discord.token
: The token for the Discord bot.
apis.discord.loggingServer
: The Discord logging server id.
apis.discord.loggingChannel
: The Discord logging channel id.
apis.mailgun
: Values can be obtained by setting up a Mailgun account.
redis.url
: Should be redis://localhost:6379/0
for local use.
redis.password
: Should be the Redis password you put in your startRedis.cmd
file for Windows.
mongo.url
: Needs to have the proper password for the MongoDB musare user.
cookie.domain
: Value should be the uri you use to access the site, without protocols (http/https), so for example localhost
.
cookie.secure
: Value should be true
for SSL connections, and false
for normal http connections.
Setting up GitHub:
To set up a GitHub OAuth Application, you need to fill in some value's. The homepage is the homepage of frontend. The authorization callback url is the backend url with /auth/github/authorize/callback
added at the end. For example http://localhost:8080/auth/github/authorize/callback
.
These values should be put in the apis.github.client
, apis.github.secret
and apis.github.redirect_uri
.
cp frontend/build/config/template.json frontend/build/config/default.json
Values:
The serverDomain
should be the url where the backend will be accessible from, usually http://localhost:8080
for non-Docker.
The recaptcha.key
value can be obtained by setting up a ReCaptcha Site.
The cookie.domain
value should be the ip or address you use to access the site, without protocols (http/https), so for example localhost
.
The cookie.secure
value should be true
for SSL connections, and false
for normal http connections.
In the root folder, create a folder called database
Create a file called startMongo.cmd
in the root folder with the contents:
"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath "D:\Programming\HTML\MusareNode\.database"
Make sure to adjust your paths accordingly.
Set up the MongoDB database
Start the database by executing the script startMongo.cmd
you just made
Connect to Mongo from a command prompt
mongo admin
Create an admin user
db.createUser({user: 'admin', pwd: 'PASSWORD_HERE', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})
Connect to the Musare database
use musare
Create the musare user
db.createUser({user: 'musare', pwd: 'OTHER_PASSWORD_HERE', roles: [{role: 'readWrite', db: 'musare'}]})
Exit
exit
Add the authentication
In startMongo.cmd
add --auth
at the end of the first line
In the folder where you installed Redis, edit the redis.windows.conf
file. In there, look for the property notify-keyspace-events
. Make sure that property is uncommented and has the value Ex
. It should look like notify-keyspace-events Ex
when done.
Create a file called startRedis.cmd
in the main folder with the contents:
"D:\Redis\redis-server.exe" "D:\Redis\redis.windows.conf"
And again, make sure that the paths lead to the proper config and executable.
Install nodemon globally
npm install nodemon -g
npm install webpack -g
npm install node-gyp -g
.
frontend
and backend
folders, do npm install
.Automatic
windows-start.cmd
and all servers will automatically start up.Manual
Run startRedis.cmd
and startMongo.cmd
to start Redis and Mongo.
In the frontend folder, run npm run dev
.
In the backend folder, run nodemon
.
There are multiple ways to contact us. You can send an email to core@musare.com.
You can also message us on Facebook, Twitter or on our Discord Guild.