Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Check port availability

    1. Connect to the SSH console.

    2. Run the command: `ss -tuln` to check if ports 3001 and 8081 are available.

  2. Create the redeem folder
    mkdir redeem-dashboard
    cd redeem-dashboard

  3. Clone the redeem respositories
    git clone https://github.com/openvino/redeem_dashboard.git
    git clone https://github.com/openvino/openvino_redeem_notifier.git

  4. Install node.js
    sudo dnf install nodejs -y

  5. Navigate to the notifier folder:
    cd openvino_redeem_notifier

  6. Install dependencies:
    npm install

  7. Run Test run the server with pm2
    pm2 start npm --name "server" -- start

  8. Change to the dashboard folder and install dependencies:
    cd ../redeem_dashboard
    npm install --force

  9. Make a build
    npm run build

  10. Start Test start the app with pm2
    pm2 start npm --name "dashboard" -- startCheck pm2 status, to see both apps running

    Code Block
    redeem_dashboard]$ pm2 status
    ┌─────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
    │ id  │ name         │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
    ├─────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 1   │ dashboard    │ default     │ N/A     │ fork    │ 2291356  │ 6s     │ 0    │ online    │ 0%       │ 67.7mb   │ mtb      │ disabled │
    │ 0   │ server       │ default     │ N/A     │ fork    │ 2291031  │ 4m     │ 0    │ online    │ 0%       │ 87.6mb   │ mtb      │ disabled │
    └─────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
    
  11. configure pm2 to start when the server boots:
    sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u mtb --hp /home/mtb

  12. Reboot and check pm2 status again:

    Code Block
    reboot
    pm2 status
  13. Configure environmental variables with the file .env.local
    Paste the following and change db credentials if you want to point to the real db and NEXT_PUBLIC_WS_SERVER_URL should be the ip of the current project:
    Code Block
    DB_HOST= containers-us-west-156.railway.app
        DB_PORT= 7131
        DB_USER= postgres
        DB_PASSWORD= OYrwzmuM1ckJlqkhz
        DB_DATABASE= database
        NEXT_PUBLIC_WS_SERVER_URL = 147.12.205.152
        JWT_SECRET = "vY,aM6@^6\_\_rYMeu"
        NEXT_PUBLIC_API_URL = http://147.182.25.152:3001
        NEXT_AUTH_SECRET = "7CxzxhD[rQNr!g"
        NEXTAUTH_URL = http://147.182.205.12:3001

    Edit the package.json file to reflect the correct ports:

    Code Block
     "scripts": {
        "dev": "next dev --port 3002",
        "build": "next build",
        "start": "next start --port 3002",
        "lint": "next lint"
      },
  14. Add port 3002 to the firewall

    Code Block
     sudo firewall-cmd --zone=public --add-port=3002/tcp
  15. Configure nginx

    Code Block
    cd /etc/nginx/sites-available
    vi ferment.openvino.org.conf
    
    server {
    
        server_name ferment.openvino.org;
        # maintain the .well-known directory alias for renewals
    
        location /.well-known {
            alias /usr/share/nginx/html/ferment.openvino.org/.well-known;
        }
    
        location /{
             proxy_pass http://64.225.10.229:3002;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Host $host;
             proxy_cache_bypass $http_upgrade;
         }
    
    
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/ferment.openvino.org/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/ferment.openvino.org/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    
        add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot
    
    
        ssl_trusted_certificate /etc/letsencrypt/live/ferment.openvino.org/chain.pem; # managed by Certbot
        ssl_stapling on; # managed by Certbot
        ssl_stapling_verify on; # managed by Certbot
    
    }
    server {
        if ($host = ferment.openvino.org) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
        server_name ferment.openvino.org;
        # maintain the .well-known directory alias for renewals
    
        location /.well-known {
            alias /usr/share/nginx/html/ferment.openvino.org/.well-known;
        }
    
        location /{
             proxy_pass http://64.225.10.229:3002;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Host $host;
             proxy_cache_bypass $http_upgrade;
    
       }
    
        listen 80; # managed by Certbot
    
    
    
    cd sites-enabled
    sudo ln -s /etc/nginx/sites-available/sites /etc/nginx/sites-enabled/sites
  16. restart nginx

    Code Block
    sudo nginx -t 
    sudo service nginx restart     
    sudo service nginx status
  17. Update the database structure

    Code Block
    ALTER TABLE "public"."wineries"
    ADD COLUMN "email" varchar,
    ADD COLUMN "public_key" char(42),
    ADD COLUMN "isAdmin" bool;
  18. Create the ferment user

    Code Block
    groupadd -g 2224 ferment
    useradd -u 2224 -g 2224 -s /sbin/nologin ferment
    
    chown -R ferment:ferment /var/bloock/ferment 
  19. Edit /etc/systemd/system/ferment.service

    Code Block
    [Unit]
    Description=OpenVino Ferment dashboard
    After=network.target
    [Service]
    User=root
    Environment=localhost
    WorkingDirectory=/var/bloock/ferment/redeem_dashboard
    ExecStart=/usr/bin/npm start
    [Install]
    WantedBy=multi-user.target
  20. Configure systemd to automatically start the ferment dashboard on boot:

    Code Block
    systemctl daemon-reload
    systemctl enable ferment
    systemctl start ferment
  21. Edit /etc/systemd/system/ferment_notifier.service

    Code Block
    [Unit]
    Description=OpenVino Ferment dashboard notifier
    After=network.target
    [Service]
    User=ferment
    Environment=localhost
    WorkingDirectory=/var/bloock/ferment/openvino_redeem_notifier
    ExecStart=/usr/bin/npm start
    [Install]
    WantedBy=multi-user.target
  22. Configure systemd to automatically start the ferment_notifier on boot:

    Code Block
    systemctl daemon-reload
    systemctl enable ferment
    systemctl start ferment
  23. Check the systemd status

    Code Block
    # systemctl status ferment
    
    ● ferment.service - OpenVino Ferment dashboard
       Loaded: loaded (/etc/systemd/system/ferment.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2023-09-07 13:52:19 UTC; 41s ago
     Main PID: 726201 (npm start)
        Tasks: 40 (limit: 49224)
       Memory: 163.1M
       CGroup: /system.slice/ferment.service
               ├─726201 npm start
               ├─726212 node /var/bloock/ferment/redeem_dashboard/node_modules/.bin/next start --port 3002
               ├─726223 /usr/bin/node /var/bloock/ferment/redeem_dashboard/node_modules/next/dist/compiled/jest-worker/pro>
               └─726234 /usr/bin/node /var/bloock/ferment/redeem_dashboard/node_modules/next/dist/compiled/jest-worker/pro>
    
    Sep 07 13:52:19 sierra systemd[1]: Started OpenVino Ferment dashboard.
    Sep 07 13:52:20 sierra npm[726201]: > openvino-dashboard@0.1.0 start
    Sep 07 13:52:20 sierra npm[726201]: > next start --port 3002
    Sep 07 13:52:20 sierra npm[726212]: - ready started server on 0.0.0.0:3002, url: http://localhost:3002
    Sep 07 13:52:20 sierra npm[726212]: - info Loaded env from /var/bloock/ferment/redeem_dashboard/.env.local
    
    systemctl status ferment_notifier
    ● ferment_notifier.service - OpenVino Ferment dashboard notifier
       Loaded: loaded (/etc/systemd/system/ferment_notifier.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2023-09-07 18:03:20 UTC; 8s ago
     Main PID: 729758 (npm start)
        Tasks: 18 (limit: 49224)
       Memory: 46.5M
       CGroup: /system.slice/ferment_notifier.service
               ├─729758 npm start
               └─729769 node server.js
    
    Sep 07 18:03:20 sierra systemd[1]: Started OpenVino Ferment dashboard notifier.
    Sep 07 18:03:20 sierra npm[729758]: > server@1.0.0 start
    Sep 07 18:03:20 sierra npm[729758]: > node server.js
    Sep 07 18:03:20 sierra npm[729769]: Express server listening on port 8081