Skip to content

Mongodb or Redis

General
  • Now the text task will be to migrate data from Redis to Mongodb and setup the multithread that @phenomlab has setup for this site.

  • @phenomlab how do you have it setup to have this sight start up automatically if the server gets rebooted? I attempted to follow nodebb’s instructions but can’t seem to get the systemd nodebb.service instructions to work. I have also tried a few others that I googled for and it just doesn’t seem to want to run as a service.

  • @Madchatthew can you post the configuration you have for the service?

  • @phenomlab

    This is the Nginx conf file

    upstream io_nodes {
            ip_hash;
            server 127.0.0.1:4567;
            server 127.0.0.1:4568;
            server 127.0.0.1:4569;
    }
    
    server {
    
            listen 80;
            server_name nodebb.lan;
            root /home/nodebb/public_html;
            index index.php index.html index.htm;
    
            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_redirect off;
    
            # Socket.IO Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            location @nodebb {
                    proxy_pass http://io_nodes;
            }
    
            location ~ ^/assets/(.*) {
                    root /home/nodebb/public_html/;
                    try_files /build/public/$1 /public/$1 @nodebb;
            }
    
            location / {
                    proxy_pass http://io_nodes;
            }
    }
    

    This is the current nodebb.service file

    [Unit]
    Description=NodeBB forum for Node.js.
    Documentation=http://nodebb.readthedocs.io/en/latest/
    After=system.slice multi-user.target
    
    [Service]
    Type=simple
    User=nodebb
    
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=nodebb
    
    Environment=NODE_ENV=production
    WorkingDirectory=/home/nodebb/public_html/
    
    # Call with exec to be able to redirect output: http://stackoverflow.com/a/33036589/1827734
    ExecStart=/usr/bin/node /home/nodebb/public_html/loader.js
    Restart=on-failure
    
    [Install]
    Alias=forum
    WantedBy=multi-user.target
    

    I started with this code and the above code is from a google search. This code below, I did also try it with the correct path for node.

    [Unit]
    Description=NodeBB
    Documentation=https://docs.nodebb.org
    After=system.slice multi-user.target mongod.service
    
    [Service]
    Type=forking
    User=nodebb
    
    WorkingDirectory=/path/to/nodebb
    PIDFile=/path/to/nodebb/pidfile
    ExecStart=/usr/bin/env node loader.js --no-silent
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    

    The “/usr/bin/env node” is where node is located that I found from using a command.
    I also get a 502 Bad Gateway when I start either ./nodebb start or node loader.js.

    When I do “sudo systemctl status nodebb” after using “sudo systemctl start nodebb”, I get the following.

    ○ nodebb.service - NodeBB forum for Node.js.
         Loaded: loaded (/etc/systemd/system/nodebb.service; disabled; preset: disabled)
         Active: inactive (dead)
           Docs: http://nodebb.readthedocs.io/en/latest/
    
    Aug 11 20:53:16 morecowbell.lan systemd[1]: /etc/systemd/system/nodebb.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    Aug 11 20:53:16 morecowbell.lan systemd[1]: /etc/systemd/system/nodebb.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    Aug 11 20:53:16 morecowbell.lan systemd[1]: Started NodeBB forum for Node.js..
    Aug 11 20:53:16 morecowbell.lan nodebb[2605]: Process "1298" from pidfile already running, exiting
    Aug 11 20:53:16 morecowbell.lan systemd[1]: nodebb.service: Deactivated successfully.
    Aug 11 20:53:24 morecowbell.lan systemd[1]: /etc/systemd/system/nodebb.service:10: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    Aug 11 20:53:24 morecowbell.lan systemd[1]: /etc/systemd/system/nodebb.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    

    Sorry this post is so long and thank you for your help.

    Update: I just ran the status for nginx and received the below. So the 192.168.1.10 is my windows PC and the connection was refused. Would I need to add the port to ufw in order for this to work, or is this a different issue.

    Aug 11 20:49:54 morecowbell.lan nginx[576]: 2024/08/11 20:49:54 [error] 576#576: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4568/", host: "nodebb.lan"
    Aug 11 20:49:54 morecowbell.lan nginx[576]: 2024/08/11 20:49:54 [error] 576#576: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4569/", host: "nodebb.lan"
    Aug 11 20:49:54 morecowbell.lan nginx[576]: 2024/08/11 20:49:54 [error] 576#576: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4567/", host: "nodebb.lan"
    Aug 11 20:49:55 morecowbell.lan nginx[576]: 2024/08/11 20:49:55 [error] 576#576: *1 no live upstreams while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET /favicon.ico HTTP/1.1", upstream: "http://io_nodes/favicon.ico", host: "nodebb.lan", referrer: "http://nodebb.lan/"
    Aug 11 20:51:57 morecowbell.lan nginx[577]: 2024/08/11 20:51:57 [error] 577#577: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4568/", host: "nodebb.lan"
    Aug 11 20:51:57 morecowbell.lan nginx[577]: 2024/08/11 20:51:57 [error] 577#577: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4569/", host: "nodebb.lan"
    Aug 11 20:51:57 morecowbell.lan nginx[577]: 2024/08/11 20:51:57 [error] 577#577: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4567/", host: "nodebb.lan"
    Aug 11 20:51:57 morecowbell.lan nginx[577]: 2024/08/11 20:51:57 [error] 577#577: *6 no live upstreams while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET /favicon.ico HTTP/1.1", upstream: "http://io_nodes/favicon.ico", host: "nodebb.lan", referrer: "http://nodebb.lan/"
    Aug 11 20:51:59 morecowbell.lan nginx[577]: 2024/08/11 20:51:59 [error] 577#577: *6 no live upstreams while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET / HTTP/1.1", upstream: "http://io_nodes/", host: "nodebb.lan"
    Aug 11 20:51:59 morecowbell.lan nginx[577]: 2024/08/11 20:51:59 [error] 577#577: *6 no live upstreams while connecting to upstream, client: 192.168.1.10, server: nodebb.lan, request: "GET /favicon.ico HTTP/1.1", upstream: "http://io_nodes/favicon.ico", host: "nodebb.lan", referrer: "http://nodebb.lan/"
    

    Update: adding those ports to ufw did not fix it.

  • @Madchatthew connection refused typically means that port is being used elsewhere.

    What’s the output of

    ./nodebb log
    
  • @phenomlab

    [nodebb@morecowbell public_html]$ ./nodebb log
    
    Hit Ctrl-C to exit
    
    
    tail: cannot open './logs/output.log' for reading: No such file or directory
    
  • @Madchatthew hmm. That doesn’t look like it’s properly installed, or you have a permissions issue. What user are launching NodeBB as?

    Can you try

    ./nodebb dev
    
  • @phenomlab said in Mongodb or Redis:

    @Madchatthew hmm. That doesn’t look like it’s properly installed, or you have a permissions issue. What user are launching NodeBB as?

    Can you try

    ./nodebb dev
    

    I will give this a try this evening. At work now.

  • @Madchatthew thanks. Let me know.

  • @phenomlab here are those results. It is a little long but I wanted to make sure you were getting the whole picture.

    [nodebb@morecowbell public_html]$ ./nodebb dev
    
    NodeBB v3.8.4 Copyright (C) 2013-2024 NodeBB Inc.
    This program comes with ABSOLUTELY NO WARRANTY.
    This is free software, and you are welcome to redistribute it under certain conditions.
    For the full license, please visit: http://www.gnu.org/copyleft/gpl.html
    
    Clustering enabled: Spinning up 3 process(es).
    
    2024-08-13T01:03:42.527Z [4568/7624] - verbose: * using configuration stored in: /home/nodebb/public_html/config.json
    2024-08-13T01:03:42.539Z [4567/7623] - verbose: * using configuration stored in: /home/nodebb/public_html/config.json
    2024-08-13T01:03:42.547Z [4567/7623] - info: Initializing NodeBB v3.8.4 http://localhost:4567
    2024-08-13T01:03:42.548Z [4567/7623] - verbose: * using mongo store at 127.0.0.1:27017
    2024-08-13T01:03:42.548Z [4567/7623] - verbose: * using themes stored in: /home/nodebb/public_html/node_modules
    2024-08-13T01:03:42.556Z [4569/7625] - verbose: * using configuration stored in: /home/nodebb/public_html/config.json
    2024-08-13T01:03:42.961Z [4568/7624] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:42.966Z [4568/7624] - error: uncaughtException: NOAUTH Authentication required.
    ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14) {"date":"Mon Aug 12 2024 20:03:42 GMT-0500 (Central Daylight Time)","error":{"command":{"args":[],"name":"info"}},"exception":true,"os":{"loadavg":[0.12,0.1,0.08],"uptime":84039.1},"process":{"argv":["/usr/bin/node","/home/nodebb/public_html/app.js"],"cwd":"/home/nodebb/public_html","execPath":"/usr/bin/node","gid":1006,"memoryUsage":{"arrayBuffers":18535346,"external":20792656,"heapTotal":55267328,"heapUsed":25627808,"rss":141299712},"pid":7624,"uid":1006,"version":"v22.6.0"},"stack":"ReplyError: NOAUTH Authentication required.\n    at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)\n    at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)","trace":[{"column":12,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseError","line":179,"method":null,"native":false},{"column":14,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseType","line":302,"method":null,"native":false}]}
    2024-08-13T01:03:42.967Z [4568/7624] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:42.970Z [4567/7623] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:42.973Z [4569/7625] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:42.974Z [4567/7623] - error: uncaughtException: NOAUTH Authentication required.
    ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14) {"date":"Mon Aug 12 2024 20:03:42 GMT-0500 (Central Daylight Time)","error":{"command":{"args":[],"name":"info"}},"exception":true,"os":{"loadavg":[0.12,0.1,0.08],"uptime":84039.11},"process":{"argv":["/usr/bin/node","/home/nodebb/public_html/app.js"],"cwd":"/home/nodebb/public_html","execPath":"/usr/bin/node","gid":1006,"memoryUsage":{"arrayBuffers":18535345,"external":20792655,"heapTotal":55267328,"heapUsed":25973952,"rss":142553088},"pid":7623,"uid":1006,"version":"v22.6.0"},"stack":"ReplyError: NOAUTH Authentication required.\n    at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)\n    at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)","trace":[{"column":12,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseError","line":179,"method":null,"native":false},{"column":14,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseType","line":302,"method":null,"native":false}]}
    2024-08-13T01:03:42.975Z [4567/7623] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:42.978Z [4569/7625] - error: uncaughtException: NOAUTH Authentication required.
    ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14) {"date":"Mon Aug 12 2024 20:03:42 GMT-0500 (Central Daylight Time)","error":{"command":{"args":[],"name":"info"}},"exception":true,"os":{"loadavg":[0.12,0.1,0.08],"uptime":84039.12},"process":{"argv":["/usr/bin/node","/home/nodebb/public_html/app.js"],"cwd":"/home/nodebb/public_html","execPath":"/usr/bin/node","gid":1006,"memoryUsage":{"arrayBuffers":18535345,"external":20792655,"heapTotal":55005184,"heapUsed":25626160,"rss":141709312},"pid":7625,"uid":1006,"version":"v22.6.0"},"stack":"ReplyError: NOAUTH Authentication required.\n    at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)\n    at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)","trace":[{"column":12,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseError","line":179,"method":null,"native":false},{"column":14,"file":"/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js","function":"parseType","line":302,"method":null,"native":false}]}
    2024-08-13T01:03:42.980Z [4569/7625] - error: ReplyError: NOAUTH Authentication required.
        at parseError (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/home/nodebb/public_html/node_modules/redis-parser/lib/parser.js:302:14)
    2024-08-13T01:03:44.687Z [4567/7623] - verbose: [minifier] utilizing a maximum of 2 additional threads
    2024-08-13T01:03:44.707Z [4569/7625] - verbose: [minifier] utilizing a maximum of 2 additional threads
    2024-08-13T01:03:44.712Z [4567/7623] - info: [app] Shutdown (SIGTERM/SIGINT/SIGQUIT) Initialised.
    2024-08-13T01:03:44.720Z [4569/7625] - info: [app] Shutdown (SIGTERM/SIGINT/SIGQUIT) Initialised.
    2024-08-13T01:03:44.767Z [4568/7624] - verbose: [minifier] utilizing a maximum of 2 additional threads
    2024-08-13T01:03:44.780Z [4568/7624] - info: [app] Shutdown (SIGTERM/SIGINT/SIGQUIT) Initialised.
    (node:7625) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
    (Use `node --trace-deprecation ...` to show where the warning was created)
    2024-08-13T01:03:45.068Z [4569/7625] - error: Error [ERR_SERVER_NOT_RUNNING]: Server is not running.
        at Server.close (node:net:2278:12)
        at Object.onceWrapper (node:events:634:28)
        at Server.emit (node:events:520:28)
        at emitCloseNT (node:net:2338:8)
        at process.processTicksAndRejections (node:internal/process/task_queues:81:21)
    (node:7623) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
    (Use `node --trace-deprecation ...` to show where the warning was created)
    2024-08-13T01:03:45.073Z [4567/7623] - error: Error [ERR_SERVER_NOT_RUNNING]: Server is not running.
        at Server.close (node:net:2278:12)
        at Object.onceWrapper (node:events:634:28)
        at Server.emit (node:events:520:28)
        at emitCloseNT (node:net:2338:8)
        at process.processTicksAndRejections (node:internal/process/task_queues:81:21)
    [cluster] Child Process (7625) has exited (code: 1, signal: null)
    [cluster] Spinning up another process...
    [cluster] Child Process (7623) has exited (code: 1, signal: null)
    [cluster] Spinning up another process...
    (node:7624) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
    (Use `node --trace-deprecation ...` to show where the warning was created)
    2024-08-13T01:03:45.129Z [4568/7624] - error: Error [ERR_SERVER_NOT_RUNNING]: Server is not running.
        at Server.close (node:net:2278:12)
        at Object.onceWrapper (node:events:634:28)
        at Server.emit (node:events:520:28)
        at emitCloseNT (node:net:2338:8)
        at process.processTicksAndRejections (node:internal/process/task_queues:81:21)
    [cluster] Child Process (7624) has exited (code: 1, signal: null)
    [cluster] Spinning up another process...
    
  • Woot, I figured it out man!!! First off, in the config.json, i forgot to put the redis password on it. Then I was having trouble connecting to mongodb. I was googling, changing the config and finally did a sudo systemctl status mongodb to find out it wasn’t even running. So I enabled it, then started it and boom using ./nodebb dev started it right now.

    So then I went back in and configured my nodebb.service file to match what nodebb had on their site and BOOOM it is working. By using the scaling method, nodebb runs even faster and I don’t get the 503 error when refreshing.

    I have learned a lot by going through all of this and it is pretty awesome! Now having this complete, I have some more testing to do, but I am many steps closer to using Arch as my production server.

  • @Madchatthew Excellent! I looked at the error message above, and it does seem that your MongoDB configuration has been set to require authentication (which is correct), but seems the password was missing.

  • @phenomlab yeah I looked through the error log more carefully and found the Redis auth part first, then when that was cleared up I found the Mongodb auth error. Probably should have figured that one out first, but oh well hahah

  • @Madchatthew still a great catch.


Related Topics
  • Is my Mongodb installation correct?

    Solved General
    27
    13 Votes
    27 Posts
    3k Views

    yuuuuu.png

  • mongodb backup problem

    Moved Configure
    3
    1 Votes
    3 Posts
    236 Views

    You might want to also review this post

    https://sudonix.org/topic/389/mongodb-backup-script

  • mongodb replica set

    Configure
    11
    2 Votes
    11 Posts
    517 Views

    @veronikya said in mongodb replica set:

    The host’s local dns resolution is not configured. The problem of the host’s hosts being unable to be resolved in docker has been solved. Surprisingly
    Solution:
    Edit the /etc/resovel.conf file
    Add 127.0.0.53

    One immediate issue I can think of here is that editing resolv.conf directly is no longer supported and not recommended (because the changes do not survive a reboot) - unless you install the resolvconf package?

  • 3 Votes
    2 Posts
    192 Views

    @DownPW This isn’t something I have readily available, and because I’m not entirely familiar with the database structure of NodeBB, it’s something that would require research and development in terms of script.

    I think it’d be quicker to ask this in the NodeBB forums.

  • Nodebb: failed to restore a mongo dump

    Solved Configure
    2
    1 Votes
    2 Posts
    211 Views

    @phenomlab

    In fact I specified the sub rep and not the rep

    DON’T DO THIS:

    nodebb@nodebbpwclonedb:~/nodebb$ sudo mongorestore --username admin --password XXXXXXXXXXXXXX --nsInclude nodebb.objects --drop /home/nodebb/nodebb_DB_20230107/nodebb/

    BUT THIS :

    nodebb@nodebbpwclonedb:~/nodebb$ sudo mongorestore --username admin --password XXXXXXXXXXXXXX --nsInclude nodebb.objects --drop /home/nodebb/nodebb_DB_20230107/

    🙂

  • Mongodb Authorisation.

    Solved General
    17
    2 Votes
    17 Posts
    757 Views

    @Sampo2910 I just saw this on the NodeBB community site and it seems very much in line with the issue you are experiencing. Worth a look I think

    https://community.nodebb.org/topic/16826/does-nodebb-work-with-mongodb-6-0

  • 4 Votes
    8 Posts
    1k Views

    @phenomlab
    Sorry to delay in responding, yes as i mentioned above, i had to remove my redis from docker and reinstall a new image with this command

    docker run --name=redis -p 127.0.0.1:6379:6379 -d -t redis:alpine

    and now when i test my ip and port on
    https://www.yougetsignal.com/tools/open-ports/

    the status of my redis port is closed. I think which to configure firewall in droplet digital ocean is a good idea too, and i will configure soon.
    Thanks for the help!

  • API database project? ideas?

    Chitchat
    1
    0 Votes
    1 Posts
    300 Views
    No one has replied