Multiple nodebb sites on the same server


  • What should be the content of the nginx configuration file that I need to use to set up multiple nodebb sites on a server using a MongoDB database?

  • Community Rep

    @kurulumu-Net said in Multiple nodebb sites on the same server:

    What should be the content of the nginx configuration file that I need to use to set up multiple nodebb sites on a server using a MongoDB database?

    Wowzers! Much depends on how you set them up. Do you favor the subdomains or sub folder approach? I personally prefer subdomains, e.g. "forums.yourdom.tld" - helps keep rewrite rules and such a big "cleaner".

    Caveat emptor... 😜 🐕 🌴 🌴 🌴 🌻


  • @gotwf I'm wondering how to setup multiple domains like forum.domain.com. I create two separate databases in MongoDb and set up two sites. When I type the domain name of the sites I set up in the browser, it sees that both sites use the same data. It's like two sites but one site. 😄

    This is how I create the database. I think it's wrong here.

    > use admin
    
    > db.createUser( { user: "admin", pwd: "pass", roles: [ { role: "root", db: "admin" } ] } )
    
     > use nodebb1 
     
     > db.createUser( { user: "nodebb1", pwd: "pass", roles: [ { role: "readWrite", db: "nodebb1" }, { role: "clusterMonitor", db: "admin" } ] } )
    
    > use nodebb2
    
    > db.createUser( { user: "nodebb2", pwd: "pass", roles: [ { role: "readWrite", db: "nodebb2" }, { role: "clusterMonitor", db: "admin" } ] } )
    

    Nginx Conf file:

    server {
        listen [::]:443 ssl ipv6only=on; 
        listen 443 ssl; 
    	
            ssl_certificate /etc/ssl/cert.pem;
            ssl_certificate_key /etc/ssl/key.pem;
    	ssl_client_certificate /etc/ssl/cloudflare.crt;
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    	
    	server_name forum.domain.com;
        
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4567;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    	location /ads.txt {
            root /home/nodebb/nodebb/public/;
    }
    
            real_ip_header CF-Connecting-IP;
    	set_real_ip_from 103.21.244.0/22;
    	set_real_ip_from 103.22.200.0/22;
    	set_real_ip_from 103.31.4.0/22;
    	set_real_ip_from 104.16.0.0/12;
    	set_real_ip_from 108.162.192.0/18;
    	set_real_ip_from 131.0.72.0/22;
    	set_real_ip_from 141.101.64.0/18;
    	set_real_ip_from 162.158.0.0/15;
    	set_real_ip_from 172.64.0.0/13;
    	set_real_ip_from 173.245.48.0/20;
    	set_real_ip_from 188.114.96.0/20;
    	set_real_ip_from 190.93.240.0/20;
    	set_real_ip_from 197.234.240.0/22;
    	set_real_ip_from 198.41.128.0/17;
    	set_real_ip_from 2400:cb00::/32;
    	set_real_ip_from 2606:4700::/32;
    	set_real_ip_from 2803:f800::/32;
    	set_real_ip_from 2405:b500::/32;
    	set_real_ip_from 2405:8100::/32;
    	set_real_ip_from 2c0f:f248::/32;
    	set_real_ip_from 2a06:98c0::/29;
    	
    	add_header X-Frame-Options "SAMEORIGIN";
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Content-Type-Options "nosniff";
    }
    server {
        listen 80;
        listen [::]:80;
    	
        ssl_certificate /etc/ssl/cert.pem;
        ssl_certificate_key /etc/ssl/key.pem;
        ssl_client_certificate /etc/ssl/cloudflare.crt;
    	
        server_name forum.domain.com;
    	
    	return 301 https://forum.domain.com$request_uri;
    }
    
  • Global Moderator Plugin & Theme Dev

    Have you selected different databases in the config.json

  • Community Rep

    @kurulumu-Net Also, I presume you have properly configured DNS records? 👍

  • Global Moderator Plugin & Theme Dev

    It also looks like you only have one server block in your nginx config.


  • They are different scripts. Accordingly, they should have different database names, different ports, different nodebb services, different nginx conf files.
    And preferably different users


  • @volanar

    Steps:

    1. I create A record for two domains forum1.domain1.com and forum2.domain2.com for both forums. I confirm DNS forwarding.
    2. Create two different non-sudo users.
    3. Create two different databases in the first message.
    4. Make two separate nodeBB installations and enter separate database information for each installation.
    5. Create forum1.conf and forum2.conf nginx conf.

    In the result browser both domains show the same nodebb instance.

    As file path in Nginx conf file;

    first site nginx.conf

    server {
         listen [::]:443 ssl ipv6only=on;
         listen 443 ssl;
    
             ssl_certificate /etc/ssl/cert.pem;
             ssl_certificate_key /etc/ssl/key.pem;
            ssl_client_certificate /etc/ssl/cloudflare.crt;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    root /home/user1/nodebb/public;
    
    server_name forum1.domain1.com;
    .
    .
    .
    

    first site nginx.conf

    server {
         listen [::]:443 ssl ipv6only=on;
         listen 443 ssl;
    
             ssl_certificate /etc/ssl/cert2.pem;
             ssl_certificate_key /etc/ssl/key2.pem;
             ssl_client_certificate /etc/ssl/cloudflare.crt;
             ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    root /home/user2/nodebb/public;
    
    server_name forum1.domain1.com;
    .
    .
    .
    

  • @kurulumu-Net forum 1 port 4567, forum2 port 45xx.
    2 different platforms cannot use the same port


  • @volanar ahh yes you are right. I'll have to use a different reverse proxy for the second forum then.

  • Global Moderator Plugin & Theme Dev

    @kurulumu-Net you can use nginx to listen on one port, but forward the traffic to two different ports based on the requested site.


  • @PitaJ Is there a sample configuration?

  • Community Rep

    nginx.confs

    server {
      server_name serenitymc.net;
    
      location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4567;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
      }
    
      listen [::]:443 ssl ipv6only=on;
      listen 443 ssl;
      include serenitymc.ssl;
    }
    
    server {
      server_name onpu.serenitymc.net;
    
      location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:4566;
            proxy_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
      }
    
      listen [::]:443 ssl;
      listen 443 ssl;
      include serenitymc.ssl;
    }
    

    config.json

    {
        "url": "https://serenitymc.net",
        "secret": "xxx",
        "database": "mongo",
        "mongo": {
            "host": "127.0.0.1",
            "port": "27017",
            "username": "nodebb-serenity",
            "password": "xxx",
            "database": "nodebb-serenity"
        },
        "port": "4567"
    }
    
    {
        "url": "https://onpu.serenitymc.net",
        "secret": "xxx",
        "database": "mongo",
        "mongo": {
            "host": "127.0.0.1",
            "port": "27017",
            "username": "nodebb-onpu",
            "password": "xxx",
            "database": "nodebb-onpu"
        },
        "port": "4566"
    }
    
  • GNU/Linux Gamers

    Yeah @kurulumu-Net you can change port in config.json in one of the NodeBBs and change to the same port in the proxy-pass part of the corresponding nginx config.

    Default port is 4567, one will need to be changed.


Suggested Topics

  • 1
  • 1
  • 3
  • 5
  • 12
| | |

© 2014 – 2022 NodeBB, Inc. — Made in Canada.