title
Node.js & Express From Scratch [FINAL] - Deploying Our App

description
In this final video [FOR NOW], we will deploy our Node.js and Express application to Digital Ocean. We will install a Node process manager and even connect a domain name 2 FREE MONTHS OF DIGITAL OCEAN: https://m.do.co/c/5424d440c63a CODE: Full code for this series https://github.com/bradtraversy/nodekb COURSE: Full course this project is based on http://www.traversymedia.com/course/p... SUPPORT: We spend massive amounts of time creating these free videos, please donate to show your support: http://www.paypal.me/traversymedia http://www.patreon.com/traversymedia FOLLOW TRAVERSY MEDIA: http://www.facebook.com/traversymedia http://www.twitter.com/traversymedia http://www.linkedin.com/bradtraversy

detail
{'title': 'Node.js & Express From Scratch [FINAL] - Deploying Our App', 'heatmap': [{'end': 761.804, 'start': 748.436, 'weight': 0.701}, {'end': 799.691, 'start': 768.267, 'weight': 0.818}, {'end': 918.04, 'start': 891.412, 'weight': 0.711}], 'summary': 'Learn to deploy an application on digitalocean, create a $5 per month digitalocean droplet with ubuntu, set up ssh key using putty, install node.js and mongodb on ubuntu, configure node.js for port 80 using pm2, and set up domain and dns records, while also focusing on strategies for increasing twitter followers for content sharing and updates.', 'chapters': [{'end': 99.318, 'segs': [{'end': 26.098, 'src': 'embed', 'start': 0.765, 'weight': 0, 'content': [{'end': 6.207, 'text': "Alright guys so in this video what I want to try to do is deploy the application that we've been building.", 'start': 0.765, 'duration': 5.442}, {'end': 18.551, 'text': "Now I haven't done anything to kind of prepare for this, so I'm just giving you a heads up that we may run into some issues and have some hiccups,", 'start': 6.747, 'duration': 11.804}, {'end': 26.098, 'text': "but I think it's good to show the whole process from scratch, because that's how it is in the real world.", 'start': 18.551, 'duration': 7.547}], 'summary': 'Deploying the application from scratch with possible issues and hiccups.', 'duration': 25.333, 'max_score': 0.765, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0765.jpg'}, {'end': 80.294, 'src': 'embed', 'start': 46.639, 'weight': 1, 'content': [{'end': 57.222, 'text': 'I would definitely suggest DigitalOcean for pretty much any kind of application, Node.js, Express, Python, PHP, pretty much anything.', 'start': 46.639, 'duration': 10.583}, {'end': 61.584, 'text': "They're a really great company, and they're really cheap.", 'start': 57.242, 'duration': 4.342}, {'end': 66.326, 'text': "If you compare them to other VPSs, they're very cheap.", 'start': 61.684, 'duration': 4.642}, {'end': 70.267, 'text': "So I have an account already, so I'm going to log in here.", 'start': 67.006, 'duration': 3.261}, {'end': 73.553, 'text': "Let's see what I do.", 'start': 72.433, 'duration': 1.12}, {'end': 80.294, 'text': 'tech guy, info and Password.', 'start': 73.553, 'duration': 6.741}], 'summary': 'Digitalocean is recommended for various applications, as it offers great services at competitive prices.', 'duration': 33.655, 'max_score': 46.639, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS046639.jpg'}], 'start': 0.765, 'title': 'Deploying on digitalocean', 'summary': 'Focuses on deploying an application on digitalocean, emphasizing the importance of learning through challenges and recommending digitalocean for its affordability and versatility.', 'chapters': [{'end': 99.318, 'start': 0.765, 'title': 'Deploying application on digitalocean', 'summary': 'Focuses on deploying an application on digitalocean, emphasizing the importance of learning through challenges and recommending digitalocean for its affordability and versatility.', 'duration': 98.553, 'highlights': ['The chapter emphasizes the importance of learning through challenges and showcases the process of deploying an application from scratch.', 'The speaker recommends DigitalOcean for various applications, highlighting its affordability and quality compared to other VPS providers.', 'The speaker demonstrates logging into DigitalOcean and navigating the two-factor authentication process, showcasing a practical example of account access.']}], 'duration': 98.553, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0765.jpg', 'highlights': ['The chapter emphasizes the importance of learning through challenges and showcases the process of deploying an application from scratch.', 'The speaker recommends DigitalOcean for various applications, highlighting its affordability and quality compared to other VPS providers.', 'The speaker demonstrates logging into DigitalOcean and navigating the two-factor authentication process, showcasing a practical example of account access.']}, {'end': 304.405, 'segs': [{'end': 195.214, 'src': 'embed', 'start': 99.318, 'weight': 0, 'content': [{'end': 106.649, 'text': "you can see, I don't have any droplets, and So, if you've never worked with DigitalOcean, they have droplets and a droplet is basically just a VPS.", 'start': 99.318, 'duration': 7.331}, {'end': 110.434, 'text': "It's a it's a virtual server and you have full access to it.", 'start': 106.729, 'duration': 3.705}, {'end': 114.118, 'text': 'You can log in through the shell and you can run any commands you want.', 'start': 110.474, 'duration': 3.644}, {'end': 117.202, 'text': 'You can install whatever you want, just like we did on our local machine.', 'start': 114.138, 'duration': 3.064}, {'end': 120.787, 'text': "OK, so what we're going to do is create a new droplet.", 'start': 117.883, 'duration': 2.904}, {'end': 125.103, 'text': "And there's a couple different Linux distributions you can choose.", 'start': 122.179, 'duration': 2.924}, {'end': 126.545, 'text': "We're going to stick with Ubuntu.", 'start': 125.123, 'duration': 1.422}, {'end': 133.493, 'text': 'And as far as the payment goes, you can add funds to your account, and then you can purchase packages with those funds.', 'start': 127.226, 'duration': 6.267}, {'end': 137.238, 'text': "All right, so let's say we want the lowest one, which is $5 a month.", 'start': 134.074, 'duration': 3.164}, {'end': 141.944, 'text': 'more than enough for testing and prototyping.', 'start': 139, 'duration': 2.944}, {'end': 147.292, 'text': 'If you are running a production application you may want to add some more resources and go a little higher.', 'start': 142.465, 'duration': 4.827}, {'end': 157.385, 'text': "So let's go down here and we want to add an SSH key because you want to be able to to secure your account,", 'start': 148.593, 'duration': 8.792}, {'end': 162.949, 'text': 'and I would suggest SSHing into it instead of using a username and password,', 'start': 157.385, 'duration': 5.564}, {'end': 170.676, 'text': 'and you can actually disable login functionality so that only your machine can tunnel into your SSH.', 'start': 162.949, 'duration': 7.727}, {'end': 173.759, 'text': "so let's say new SSH key now to generate it.", 'start': 170.676, 'duration': 3.083}, {'end': 176.361, 'text': "since we're in Windows, it's a little more difficult.", 'start': 173.759, 'duration': 2.602}, {'end': 178.503, 'text': "what we're going to do is download a tool called Putty.", 'start': 176.361, 'duration': 2.142}, {'end': 183.726, 'text': "So there's actually two programs we need.", 'start': 181.824, 'duration': 1.902}, {'end': 191.852, 'text': "One is PuTTY that's used to connect through SSH, and then PuTTYgen is used to generate an SSH key.", 'start': 183.906, 'duration': 7.946}, {'end': 193.673, 'text': "So let's go ahead and click.", 'start': 192.492, 'duration': 1.181}, {'end': 195.214, 'text': 'You can download PuTTY here.', 'start': 193.973, 'duration': 1.241}], 'summary': 'Digitalocean offers vps droplets, starting at $5/month, supports ubuntu, and recommends adding ssh key for security.', 'duration': 95.896, 'max_score': 99.318, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS099318.jpg'}], 'start': 99.318, 'title': 'Creating digitalocean droplet and setting up ssh key with putty', 'summary': 'Covers the process of creating a digitalocean droplet with ubuntu as the linux distribution, highlighting the $5 per month package for testing and prototyping. it also explains setting up an ssh key using putty to secure the account, disable login functionality, and ensure secure connections, including downloading putty and puttygen, generating the key, and saving the public and private keys.', 'chapters': [{'end': 141.944, 'start': 99.318, 'title': 'Creating a digitalocean droplet', 'summary': 'Explains the process of creating a digitalocean droplet, highlighting the use of ubuntu as the linux distribution, the payment options, and the suitability of the lowest package priced at $5 a month for testing and prototyping.', 'duration': 42.626, 'highlights': ['You can create a new droplet on DigitalOcean, with the option to choose from various Linux distributions, and in this case, Ubuntu is the selected one.', 'The payment method involves adding funds to the account and then purchasing packages, with the lowest package priced at $5 a month, which is deemed suitable for testing and prototyping.', 'A droplet in DigitalOcean is equivalent to a VPS, providing full access to a virtual server for running commands and installing software.']}, {'end': 304.405, 'start': 142.465, 'title': 'Setting up ssh key with putty', 'summary': 'Explains how to generate and set up an ssh key using putty to secure the account, disable login functionality, and ensure secure connections, including downloading putty and puttygen, generating the key, and saving the public and private keys.', 'duration': 161.94, 'highlights': ['The chapter explains how to generate and set up an SSH key using PuTTY to secure the account Generating an SSH key using PuTTY to secure the account and ensure secure connections.', 'Disabling login functionality so that only your machine can tunnel into your SSH Demonstrating how to disable login functionality to allow only specific machines to tunnel into the SSH, enhancing security.', 'Downloading PuTTY and PuTTYgen, generating the key, and saving the public and private keys Providing steps for downloading PuTTY and PuTTYgen, generating the SSH key, and saving both the public and private keys for secure access.']}], 'duration': 205.087, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS099318.jpg', 'highlights': ['You can create a new droplet on DigitalOcean, with the option to choose from various Linux distributions, and in this case, Ubuntu is the selected one.', 'The payment method involves adding funds to the account and then purchasing packages, with the lowest package priced at $5 a month, suitable for testing and prototyping.', 'A droplet in DigitalOcean is equivalent to a VPS, providing full access to a virtual server for running commands and installing software.', 'The chapter explains how to generate and set up an SSH key using PuTTY to secure the account and ensure secure connections.', 'Disabling login functionality so that only your machine can tunnel into your SSH, enhancing security.', 'Downloading PuTTY and PuTTYgen, generating the key, and saving the public and private keys for secure access.']}, {'end': 850.453, 'segs': [{'end': 329.791, 'src': 'embed', 'start': 304.405, 'weight': 0, 'content': [{'end': 309.986, 'text': "so let's close that up, let's continue on with this and then we'll open up putty and we'll connect.", 'start': 304.405, 'duration': 5.581}, {'end': 312.027, 'text': 'so for a hostname you can pick whatever you want.', 'start': 309.986, 'duration': 2.041}, {'end': 327.63, 'text': "I'm just going to leave the default and then let's just click create and now it's going to go ahead and set up our server or droplet and And now it's all set.", 'start': 312.027, 'duration': 15.603}, {'end': 329.791, 'text': 'So you can see we have an IP address.', 'start': 327.75, 'duration': 2.041}], 'summary': 'Droplet setup completed, server ready with an ip address.', 'duration': 25.386, 'max_score': 304.405, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0304405.jpg'}, {'end': 400.606, 'src': 'embed', 'start': 349.639, 'weight': 1, 'content': [{'end': 357.984, 'text': 'you can upgrade if you want, if you want to pay more and get more resources, backups, snapshots if you want to destroy it,', 'start': 349.639, 'duration': 8.345}, {'end': 362.767, 'text': "you can just go ahead and click on destroy and that'll wipe it clean.", 'start': 357.984, 'duration': 4.783}, {'end': 364.868, 'text': 'so what we want to do now is connect.', 'start': 362.767, 'duration': 2.101}, {'end': 371.529, 'text': "so we're going to open up putty exe And if you're on Mac or Linux, you can just use the SSH command.", 'start': 364.868, 'duration': 6.661}, {'end': 375.595, 'text': "And there's ways to use it on Windows too, but we're just going to use PuTTY.", 'start': 372.31, 'duration': 3.285}, {'end': 378.62, 'text': "So let's grab the IP address here.", 'start': 376.737, 'duration': 1.883}, {'end': 382.876, 'text': "Let's copy that actually and paste that in.", 'start': 380.435, 'duration': 2.441}, {'end': 387.439, 'text': 'Now we need to use our key that we generated.', 'start': 383.537, 'duration': 3.902}, {'end': 389.34, 'text': "So we're going to go down to data.", 'start': 387.519, 'duration': 1.821}, {'end': 400.606, 'text': "And let's see, we're going to use for auto login username, we'll say root and then go down to SSH and off.", 'start': 390.661, 'duration': 9.945}], 'summary': 'Upgrade for more resources, connect using putty or ssh, and use auto login username as root.', 'duration': 50.967, 'max_score': 349.639, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0349639.jpg'}, {'end': 453.953, 'src': 'embed', 'start': 427.052, 'weight': 3, 'content': [{'end': 432.214, 'text': "So let's click on open and it's going to give us this, um, this, uh, box.", 'start': 427.052, 'duration': 5.162}, {'end': 434.155, 'text': "The first time we connect, we're just going to say yes.", 'start': 432.274, 'duration': 1.881}, {'end': 439.598, 'text': "And now we're in and you see, we didn't even have to put in a password because we use the SSH key.", 'start': 435.336, 'duration': 4.262}, {'end': 448.331, 'text': 'So now we can use this just like we would on our local machine and we can install stuff and, you know, set everything up.', 'start': 441.488, 'duration': 6.843}, {'end': 453.953, 'text': "So it's going to be a little different because I was using Windows on my client machine.", 'start': 448.491, 'duration': 5.462}], 'summary': 'Using ssh key for passwordless access to remote machine', 'duration': 26.901, 'max_score': 427.052, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0427052.jpg'}, {'end': 518.765, 'src': 'embed', 'start': 483.568, 'weight': 4, 'content': [{'end': 491.231, 'text': "At least I don't have to worry about you guys not seeing it So let's see first thing we're gonna do here is install node.js.", 'start': 483.568, 'duration': 7.663}, {'end': 504.292, 'text': "So installing node.js on Ubuntu is pretty easy If we go down to Let's see.", 'start': 491.491, 'duration': 12.801}, {'end': 506.334, 'text': 'Yeah, right here.', 'start': 504.312, 'duration': 2.022}, {'end': 512.078, 'text': "So we want to run this curl command because by default it's not in the repository.", 'start': 506.414, 'duration': 5.664}, {'end': 516.082, 'text': "So let's grab this and we'll just paste that in here.", 'start': 512.239, 'duration': 3.843}, {'end': 518.765, 'text': "And we'll run that.", 'start': 516.102, 'duration': 2.663}], 'summary': 'Installing node.js on ubuntu using curl command.', 'duration': 35.197, 'max_score': 483.568, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0483568.jpg'}, {'end': 645.099, 'src': 'embed', 'start': 563.865, 'weight': 5, 'content': [{'end': 573.468, 'text': "Okay, so let's see.", 'start': 563.865, 'duration': 9.603}, {'end': 578.009, 'text': "First thing we're going to do is import public key by using the package management system.", 'start': 573.508, 'duration': 4.501}, {'end': 579.65, 'text': 'So we want to grab this right here.', 'start': 578.049, 'duration': 1.601}, {'end': 580.63, 'text': "I'll just click copy.", 'start': 579.69, 'duration': 0.94}, {'end': 583.751, 'text': "And let's paste that in and run it.", 'start': 582.371, 'duration': 1.38}, {'end': 589.153, 'text': 'Then we need to create a list file for MongoDB.', 'start': 586.331, 'duration': 2.822}, {'end': 594.055, 'text': "We're on Ubuntu 16, so let's grab this right here.", 'start': 589.193, 'duration': 4.862}, {'end': 607.002, 'text': "Let's just run an update again, so sudo apt-get update.", 'start': 594.075, 'duration': 12.927}, {'end': 610.824, 'text': "Then we're just going to run this.", 'start': 609.683, 'duration': 1.141}, {'end': 613.105, 'text': 'We can now install it with apt-get.', 'start': 611.384, 'duration': 1.721}, {'end': 621.822, 'text': 'All right, and then to start it, we can run this command, start the service.', 'start': 618.359, 'duration': 3.463}, {'end': 635.172, 'text': 'Paste that in, and now Mongo should be running.', 'start': 631.849, 'duration': 3.323}, {'end': 640.716, 'text': 'If you wanted to stop it, you could just go down, you can run this right here.', 'start': 636.392, 'duration': 4.324}, {'end': 645.099, 'text': 'Okay, sudo service mongod stop, and you can also restart.', 'start': 640.736, 'duration': 4.363}], 'summary': 'Import public key, install mongodb on ubuntu 16, start and stop service.', 'duration': 81.234, 'max_score': 563.865, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0563865.jpg'}, {'end': 719.516, 'src': 'embed', 'start': 683.868, 'weight': 7, 'content': [{'end': 686.749, 'text': 'Alright, so we just want to basically clone this project.', 'start': 683.868, 'duration': 2.881}, {'end': 689.211, 'text': 'So up here it says clone.', 'start': 687.43, 'duration': 1.781}, {'end': 690.311, 'text': "Let's grab this.", 'start': 689.411, 'duration': 0.9}, {'end': 696.254, 'text': 'Okay, now git should be installed.', 'start': 690.331, 'duration': 5.923}, {'end': 707.183, 'text': "Git Okay, so let's go ahead and run git clone, and then we're just going to paste that in.", 'start': 696.274, 'duration': 10.909}, {'end': 714.15, 'text': "All right, so if we look at our directory structure now, we're in the home directory.", 'start': 707.203, 'duration': 6.947}, {'end': 716.252, 'text': 'We have node kb.', 'start': 714.21, 'duration': 2.042}, {'end': 719.516, 'text': 'All right, are we in the home directory? Yeah, we should be.', 'start': 716.913, 'duration': 2.603}], 'summary': 'Cloning project using git in home directory.', 'duration': 35.648, 'max_score': 683.868, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0683868.jpg'}, {'end': 779.157, 'src': 'heatmap', 'start': 748.436, 'weight': 0.701, 'content': [{'end': 750.177, 'text': "okay. so now let's try to run it.", 'start': 748.436, 'duration': 1.741}, {'end': 752.999, 'text': 'uh, you know what we have to run.', 'start': 750.177, 'duration': 2.822}, {'end': 758.502, 'text': 'we have to run npm install to actually create um, install all the dependencies.', 'start': 752.999, 'duration': 5.503}, {'end': 761.804, 'text': "so let's do that.", 'start': 758.502, 'duration': 3.302}, {'end': 768.267, 'text': 'so this will look at the package.json file and install everything in it.', 'start': 761.804, 'duration': 6.463}, {'end': 771.049, 'text': 'so that includes mongoose, it includes pug.', 'start': 768.267, 'duration': 2.782}, {'end': 772.83, 'text': 'uh, what else do?', 'start': 771.049, 'duration': 1.781}, {'end': 773.17, 'text': 'we use?', 'start': 772.83, 'duration': 0.34}, {'end': 779.157, 'text': 'express messages, all that stuff, All right.', 'start': 773.17, 'duration': 5.987}], 'summary': "Running 'npm install' to install dependencies including mongoose, pug, and express messages.", 'duration': 30.721, 'max_score': 748.436, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0748436.jpg'}, {'end': 799.691, 'src': 'heatmap', 'start': 761.804, 'weight': 9, 'content': [{'end': 768.267, 'text': 'so this will look at the package.json file and install everything in it.', 'start': 761.804, 'duration': 6.463}, {'end': 771.049, 'text': 'so that includes mongoose, it includes pug.', 'start': 768.267, 'duration': 2.782}, {'end': 772.83, 'text': 'uh, what else do?', 'start': 771.049, 'duration': 1.781}, {'end': 773.17, 'text': 'we use?', 'start': 772.83, 'duration': 0.34}, {'end': 779.157, 'text': 'express messages, all that stuff, All right.', 'start': 773.17, 'duration': 5.987}, {'end': 781.779, 'text': "so now that that's done, let's try and run nodemon.", 'start': 779.157, 'duration': 2.622}, {'end': 784.821, 'text': 'And it started.', 'start': 784.161, 'duration': 0.66}, {'end': 786.842, 'text': "So let's grab our IP address.", 'start': 785.121, 'duration': 1.721}, {'end': 790.405, 'text': 'Go over here, paste that in.', 'start': 788.964, 'duration': 1.441}, {'end': 792.046, 'text': 'We want to go to port 3000.', 'start': 790.425, 'duration': 1.621}, {'end': 795.128, 'text': 'And there it is.', 'start': 792.046, 'duration': 3.082}, {'end': 796.209, 'text': "There's our application.", 'start': 795.148, 'duration': 1.061}, {'end': 799.691, 'text': "So if we want to test things out, let's register.", 'start': 797.009, 'duration': 2.682}], 'summary': 'Installed mongoose, pug, and express messages. application running on ip address, port 3000.', 'duration': 34.405, 'max_score': 761.804, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0761804.jpg'}], 'start': 304.405, 'title': 'Setting up servers, node.js, and repository', 'summary': 'Covers setting up a digital ocean server, connecting to it using putty and ssh key, installing node.js and mongodb on ubuntu, and setting up the nodekb repository locally, providing detailed guidance on each process and commands used for installation and setup.', 'chapters': [{'end': 483.148, 'start': 304.405, 'title': 'Connecting to digital ocean server', 'summary': 'Demonstrates setting up a server on digital ocean, connecting to it using putty, and accessing it without a password via ssh key, providing guidance on server management options and demonstrating remote installation of software.', 'duration': 178.743, 'highlights': ["Setting up a server on Digital Ocean and obtaining the IP address The chapter demonstrates the process of setting up a server on Digital Ocean and obtaining the server's IP address for further access.", 'Connecting to the server using PuTTY and SSH key The chapter provides a detailed guide on connecting to the server using PuTTY and SSH key, enabling secure and passwordless access to the server.', 'Exploring server management options such as power, upgrades, backups, and destruction The chapter explains the various server management options including powering down, upgrading for more resources, creating backups and snapshots, and the process of destroying the server.', 'Remote installation of software and configuration on the server The chapter demonstrates the process of remotely installing and configuring software on the server, with a focus on the differences in installation procedures between Windows and other operating systems.']}, {'end': 645.099, 'start': 483.568, 'title': 'Installing node.js and mongodb on ubuntu', 'summary': 'Covers the installation of node.js and mongodb on ubuntu, including running commands to import public keys, create list files, update packages, and start services.', 'duration': 161.531, 'highlights': ["The installation process for Node.js on Ubuntu involves running a curl command to add it to the repository and then using apt-get to install it, followed by verifying the installation with 'node -v'.", "The process for installing MongoDB on Ubuntu includes importing a public key, creating a list file, updating packages with 'sudo apt-get update', and then using apt-get to install MongoDB.", "To start MongoDB, the command 'sudo service mongod start' is used, and to stop it, the command 'sudo service mongod stop' can be utilized."]}, {'end': 850.453, 'start': 647.185, 'title': 'Setting up nodekb repository', 'summary': 'Demonstrates how to clone, install dependencies, and run the nodekb repository locally, with steps including cloning the repository, installing nodemon and dependencies, and accessing the live application.', 'duration': 203.268, 'highlights': ['The chapter demonstrates how to clone, install dependencies, and run the NodeKB repository locally.', 'The user explains the process of cloning the NodeKB repository from GitHub and navigating to the directory.', 'The user installs nodemon and all the dependencies using npm.', 'The user accesses the live application after successfully running nodemon and registering a user.']}], 'duration': 546.048, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0304405.jpg', 'highlights': ['Setting up a server on Digital Ocean and obtaining the IP address', 'Connecting to the server using PuTTY and SSH key', 'Exploring server management options such as power, upgrades, backups, and destruction', 'Remote installation of software and configuration on the server', "The installation process for Node.js on Ubuntu involves running a curl command to add it to the repository and then using apt-get to install it, followed by verifying the installation with 'node -v'", "The process for installing MongoDB on Ubuntu includes importing a public key, creating a list file, updating packages with 'sudo apt-get update', and then using apt-get to install MongoDB", "To start MongoDB, the command 'sudo service mongod start' is used, and to stop it, the command 'sudo service mongod stop' can be utilized", 'The chapter demonstrates how to clone, install dependencies, and run the NodeKB repository locally', 'The user explains the process of cloning the NodeKB repository from GitHub and navigating to the directory', 'The user installs nodemon and all the dependencies using npm', 'The user accesses the live application after successfully running nodemon and registering a user']}, {'end': 1096.723, 'segs': [{'end': 950.362, 'src': 'heatmap', 'start': 891.412, 'weight': 0, 'content': [{'end': 899.879, 'text': "Okay, so let's do pm2 startapp.js.", 'start': 891.412, 'duration': 8.467}, {'end': 910.448, 'text': "Okay, so now it should be running in the background, so it should still work if we go over to here and refresh, and it's still running.", 'start': 901.801, 'duration': 8.647}, {'end': 918.04, 'text': "Good So another thing you'd probably want is to not run it on a port like this, 3000.", 'start': 910.528, 'duration': 7.512}, {'end': 922.403, 'text': 'Now, the default port for HTTP is port 80.', 'start': 918.04, 'duration': 4.363}, {'end': 928.146, 'text': "But by default, if we were to change the port number to 80, it's not going to work.", 'start': 922.403, 'duration': 5.743}, {'end': 936.952, 'text': 'But we can actually install a package called libcap2-bin, and that will allow us to run it on port 80.', 'start': 928.467, 'duration': 8.485}, {'end': 939.293, 'text': 'Let me just search for that, libcap2-bin.', 'start': 936.952, 'duration': 2.341}, {'end': 950.362, 'text': "And let's see.", 'start': 943.959, 'duration': 6.403}], 'summary': 'Using pm2 to run app.js in the background, configuring it to run on port 80 with libcap2-bin package.', 'duration': 99.909, 'max_score': 891.412, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0891412.jpg'}, {'end': 1055.374, 'src': 'embed', 'start': 1027.125, 'weight': 5, 'content': [{'end': 1028.925, 'text': 'Okay, make sure you put those in.', 'start': 1027.125, 'duration': 1.8}, {'end': 1032.027, 'text': "And then which node? So let's run that.", 'start': 1029.646, 'duration': 2.381}, {'end': 1035.305, 'text': "and then let's start the.", 'start': 1034.144, 'duration': 1.161}, {'end': 1044.048, 'text': 'actually we need to edit the application because we set port 3000, we just want to go in and we want to change it to port 80.', 'start': 1035.305, 'duration': 8.743}, {'end': 1055.374, 'text': "so just for simplicity, I'm going to use nano, which is a terminal based text editor, and we're going to edit app.js.", 'start': 1044.048, 'duration': 11.326}], 'summary': 'Editing app.js to change port from 3000 to 80.', 'duration': 28.249, 'max_score': 1027.125, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS01027125.jpg'}], 'start': 850.453, 'title': 'Using pm2 and configuring node.js for port 80', 'summary': 'Covers using pm2 as a process manager for node.js, including global installation and starting applications in the background. it also details configuring a node.js application to run on port 80 by installing libcap2-bin package, setting capabilities, and editing the application file.', 'chapters': [{'end': 910.448, 'start': 850.453, 'title': 'Using pm2 as a node.js process manager', 'summary': 'Discusses using pm2 as a process manager for node.js, demonstrating how to install it globally and start a node.js application in the background using pm2, ensuring seamless running of the application.', 'duration': 59.995, 'highlights': ['Demonstrates using pm2 as a process manager for Node.js, ensuring smooth background running of applications.', 'Explains the installation of pm2 globally using npm, ensuring easy access and usage throughout the system.', 'Details the process of starting a Node.js application in the background using pm2, showcasing the practical implementation of the process manager.']}, {'end': 1096.723, 'start': 910.528, 'title': 'Configuring node.js application for port 80', 'summary': 'Discusses configuring a node.js application to run on port 80 by installing libcap2-bin package, stopping the application with pm2, installing the package, setting capabilities, editing the application file to change the port to 80, and restarting the application.', 'duration': 186.195, 'highlights': ['Installing libcap2-bin package allows the application to run on port 80 libcap2-bin package enables running the application on port 80', "Stopping the application with PM2 can be done using the command 'PM2 stop app.js' PM2 command 'stop' is used to halt the application", 'Editing the application file to change the port to 80 using a terminal-based text editor like nano Changing the port in the application file to 80 using nano text editor']}], 'duration': 246.27, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS0850453.jpg', 'highlights': ['Demonstrates using pm2 as a process manager for Node.js, ensuring smooth background running of applications.', 'Explains the installation of pm2 globally using npm, ensuring easy access and usage throughout the system.', 'Details the process of starting a Node.js application in the background using pm2, showcasing the practical implementation of the process manager.', 'Installing libcap2-bin package allows the application to run on port 80 libcap2-bin package enables running the application on port 80', "Stopping the application with PM2 can be done using the command 'PM2 stop app.js' PM2 command 'stop' is used to halt the application", 'Editing the application file to change the port to 80 using a terminal-based text editor like nano Changing the port in the application file to 80 using nano text editor']}, {'end': 1349.759, 'segs': [{'end': 1183.114, 'src': 'embed', 'start': 1159.543, 'weight': 0, 'content': [{'end': 1167.146, 'text': 'CodeLearner.net So you basically want to go to your domain registrar and you want to edit the DNS records or the name servers.', 'start': 1159.543, 'duration': 7.603}, {'end': 1171.488, 'text': 'So in this case with Enom, I would choose this DNS server settings.', 'start': 1167.586, 'duration': 3.902}, {'end': 1179.39, 'text': 'And then you want to add three name servers, ns1.digitalocean.com, ns2, and ns3.', 'start': 1173.484, 'duration': 5.906}, {'end': 1180.391, 'text': 'And save it.', 'start': 1179.871, 'duration': 0.52}, {'end': 1183.114, 'text': 'And it might take a little while for the domain to propagate.', 'start': 1180.411, 'duration': 2.703}], 'summary': 'Edit dns records with three name servers for domain propagation.', 'duration': 23.571, 'max_score': 1159.543, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS01159543.jpg'}, {'end': 1349.759, 'src': 'embed', 'start': 1216.083, 'weight': 2, 'content': [{'end': 1217.084, 'text': 'Say create record.', 'start': 1216.083, 'duration': 1.001}, {'end': 1220.851, 'text': 'And then we also need to add a CNAME.', 'start': 1219.13, 'duration': 1.721}, {'end': 1231.196, 'text': "And in here, let's say www, because we want both versions of the domain, just codelerner.net and www.codelerner.net.", 'start': 1221.751, 'duration': 9.445}, {'end': 1234.998, 'text': 'We want those to point to the host.', 'start': 1231.636, 'duration': 3.362}, {'end': 1240.581, 'text': 'So at is just representative of our host, of our IP address.', 'start': 1235.038, 'duration': 5.543}, {'end': 1245.236, 'text': "So let's go ahead and click Create Record, and we should be all set.", 'start': 1241.773, 'duration': 3.463}, {'end': 1253.122, 'text': "So now let's go to codelerner.net, and there's our application.", 'start': 1245.336, 'duration': 7.786}, {'end': 1255.463, 'text': 'We should be able to log in.', 'start': 1254.302, 'duration': 1.161}, {'end': 1261.168, 'text': 'There we go.', 'start': 1260.727, 'duration': 0.441}, {'end': 1265.591, 'text': 'So we now have a live Node.js and Express application.', 'start': 1261.948, 'duration': 3.643}, {'end': 1272.198, 'text': "Now there's other provisions that you should set up if this was a production server.", 'start': 1266.914, 'duration': 5.284}, {'end': 1274.66, 'text': 'You want to add better security.', 'start': 1272.238, 'duration': 2.422}, {'end': 1277.582, 'text': "You shouldn't be even logging in as the root user.", 'start': 1274.68, 'duration': 2.902}, {'end': 1283.947, 'text': 'So create a new user, and you might have to add the SSH key for that user as well.', 'start': 1277.962, 'duration': 5.985}, {'end': 1289.331, 'text': 'I actually have a video that goes a little more in depth on this process.', 'start': 1285.147, 'duration': 4.184}, {'end': 1291.212, 'text': "I forget exactly what it's called.", 'start': 1289.791, 'duration': 1.421}, {'end': 1294.875, 'text': "It's like deploy node to DigitalOcean or something like that.", 'start': 1291.232, 'duration': 3.643}, {'end': 1297.317, 'text': 'Alright so hopefully you guys enjoyed this.', 'start': 1295.575, 'duration': 1.742}, {'end': 1300.3, 'text': 'I might add some more functionality to this.', 'start': 1297.937, 'duration': 2.363}, {'end': 1301.101, 'text': "I'm not sure.", 'start': 1300.32, 'duration': 0.781}, {'end': 1303.523, 'text': 'I know that a couple people asked for file uploading.', 'start': 1301.141, 'duration': 2.382}, {'end': 1305.705, 'text': "So that's something I might look into.", 'start': 1304.083, 'duration': 1.622}, {'end': 1311.551, 'text': 'But I did want to just get a deployment video out for now before I start to move on to other stuff.', 'start': 1306.045, 'duration': 5.506}, {'end': 1315.194, 'text': 'And like I said in the first video Laravel is coming.', 'start': 1311.611, 'duration': 3.583}, {'end': 1316.896, 'text': 'I know a lot of you guys are asking for that.', 'start': 1315.234, 'duration': 1.662}, {'end': 1318.737, 'text': 'So that will be out soon.', 'start': 1317.416, 'duration': 1.321}, {'end': 1319.858, 'text': "And that's it.", 'start': 1319.358, 'duration': 0.5}, {'end': 1320.759, 'text': 'Thanks for watching.', 'start': 1319.898, 'duration': 0.861}, {'end': 1325.763, 'text': 'Also, guys, if you can, if you have a Twitter account, go ahead and follow me.', 'start': 1321.159, 'duration': 4.604}, {'end': 1328.265, 'text': 'Twitter dot com slash Traverse Media.', 'start': 1325.823, 'duration': 2.442}, {'end': 1330.887, 'text': "I'm trying to to get.", 'start': 1328.645, 'duration': 2.242}, {'end': 1337.352, 'text': "I mean I've kind of neglected the account, but I'm trying to get more followers because I want to be able to post, you know,", 'start': 1330.887, 'duration': 6.465}, {'end': 1340.355, 'text': "updates about what's coming up and and all that.", 'start': 1337.352, 'duration': 3.003}, {'end': 1346.62, 'text': 'So if you guys can just, you know, subscribe on Twitter and, you know, that would be that would be helpful.', 'start': 1340.415, 'duration': 6.205}, {'end': 1348.35, 'text': 'So thanks for watching guys.', 'start': 1347.162, 'duration': 1.188}, {'end': 1349.759, 'text': 'I will see you in the next video.', 'start': 1348.471, 'duration': 1.288}], 'summary': 'The transcript covers setting up a cname and deploying a live node.js and express application, with plans for future functionality and a call to action to follow the speaker on twitter.', 'duration': 133.676, 'max_score': 1216.083, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS01216083.jpg'}], 'start': 1098.824, 'title': 'Setting up domain, deployment, and twitter growth', 'summary': 'Covers setting up domain and dns records on digitalocean, deploying a node, and strategies to increase twitter followers for better content sharing and updates, addressing viewer requests and emphasizing the importance of subscriber growth.', 'chapters': [{'end': 1277.582, 'start': 1098.824, 'title': 'Setting up domain and dns records', 'summary': 'Outlines the process of setting up a domain and dns records on digitalocean, including adding name servers and dns records, with a demonstration using enom central, to successfully host a node.js and express application.', 'duration': 178.758, 'highlights': ['Demonstrating the process of adding name servers and DNS records using Enom Central and DigitalOcean. Adding name servers and DNS records, using Enom Central, pointing to DigitalOcean, and demonstrating the process for hosting a Node.js and Express application.', 'Adding name servers (ns1.digitalocean.com, ns2, and ns3) and specifying DNS settings. Adding name servers (ns1.digitalocean.com, ns2, and ns3) and specifying DNS settings to point to DigitalOcean.', 'Creating DNS records for the domain, including A and CNAME records. Creating DNS records for the domain, including A and CNAME records to point to the host for both the root and www versions of the domain.', 'Accessing the live Node.js and Express application hosted on the domain. Accessing the live Node.js and Express application hosted on the domain to demonstrate the successful setup process.']}, {'end': 1320.759, 'start': 1277.962, 'title': 'Deployment video and plans for future videos', 'summary': 'Discusses the process of deploying a node to digitalocean, potential future functionalities like file uploading, and upcoming laravel video, addressing viewer requests.', 'duration': 42.797, 'highlights': ['The process of deploying a node to DigitalOcean is discussed, with a mention of a detailed video on the topic.', 'Potential plans for adding file uploading functionality in response to viewer requests.', 'Upcoming video on Laravel, addressing viewer requests, is mentioned.']}, {'end': 1349.759, 'start': 1321.159, 'title': 'Increase twitter followers', 'summary': 'Highlights the importance of increasing twitter followers for sharing updates and content, emphasizing the need for more followers and neglecting the account, and encourages viewers to subscribe for future updates.', 'duration': 28.6, 'highlights': ['The speaker emphasizes the need for more Twitter followers to be able to post updates and upcoming content.', 'The speaker acknowledges neglecting the Twitter account in the past and expresses the intention to gain more followers.', 'Encourages viewers to subscribe to the Twitter account for future updates and content.']}], 'duration': 250.935, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/_GSOnHRYSS0/pics/_GSOnHRYSS01098824.jpg', 'highlights': ['Demonstrating the process of adding name servers and DNS records using Enom Central and DigitalOcean.', 'Adding name servers (ns1.digitalocean.com, ns2, and ns3) and specifying DNS settings.', 'Creating DNS records for the domain, including A and CNAME records.', 'Accessing the live Node.js and Express application hosted on the domain.', 'The process of deploying a node to DigitalOcean is discussed, with a mention of a detailed video on the topic.', 'Potential plans for adding file uploading functionality in response to viewer requests.', 'The speaker emphasizes the need for more Twitter followers to be able to post updates and upcoming content.', 'The speaker acknowledges neglecting the Twitter account in the past and expresses the intention to gain more followers.', 'Encourages viewers to subscribe to the Twitter account for future updates and content.']}], 'highlights': ['The chapter emphasizes the importance of learning through challenges and showcases the process of deploying an application from scratch.', 'The speaker recommends DigitalOcean for various applications, highlighting its affordability and quality compared to other VPS providers.', 'The speaker demonstrates logging into DigitalOcean and navigating the two-factor authentication process, showcasing a practical example of account access.', 'You can create a new droplet on DigitalOcean, with the option to choose from various Linux distributions, and in this case, Ubuntu is the selected one.', 'The payment method involves adding funds to the account and then purchasing packages, with the lowest package priced at $5 a month, suitable for testing and prototyping.', 'A droplet in DigitalOcean is equivalent to a VPS, providing full access to a virtual server for running commands and installing software.', 'The chapter explains how to generate and set up an SSH key using PuTTY to secure the account and ensure secure connections.', 'Disabling login functionality so that only your machine can tunnel into your SSH, enhancing security.', 'Downloading PuTTY and PuTTYgen, generating the key, and saving the public and private keys for secure access.', 'Setting up a server on Digital Ocean and obtaining the IP address', 'Connecting to the server using PuTTY and SSH key', 'Exploring server management options such as power, upgrades, backups, and destruction', 'Remote installation of software and configuration on the server', "The installation process for Node.js on Ubuntu involves running a curl command to add it to the repository and then using apt-get to install it, followed by verifying the installation with 'node -v'", "The process for installing MongoDB on Ubuntu includes importing a public key, creating a list file, updating packages with 'sudo apt-get update', and then using apt-get to install MongoDB", "To start MongoDB, the command 'sudo service mongod start' is used, and to stop it, the command 'sudo service mongod stop' can be utilized", 'The chapter demonstrates how to clone, install dependencies, and run the NodeKB repository locally', 'The user explains the process of cloning the NodeKB repository from GitHub and navigating to the directory', 'The user installs nodemon and all the dependencies using npm', 'The user accesses the live application after successfully running nodemon and registering a user', 'Demonstrates using pm2 as a process manager for Node.js, ensuring smooth background running of applications.', 'Explains the installation of pm2 globally using npm, ensuring easy access and usage throughout the system.', 'Details the process of starting a Node.js application in the background using pm2, showcasing the practical implementation of the process manager.', 'Installing libcap2-bin package allows the application to run on port 80 libcap2-bin package enables running the application on port 80', "Stopping the application with PM2 can be done using the command 'PM2 stop app.js' PM2 command 'stop' is used to halt the application", 'Editing the application file to change the port to 80 using a terminal-based text editor like nano Changing the port in the application file to 80 using nano text editor', 'Demonstrating the process of adding name servers and DNS records using Enom Central and DigitalOcean.', 'Adding name servers (ns1.digitalocean.com, ns2, and ns3) and specifying DNS settings.', 'Creating DNS records for the domain, including A and CNAME records.', 'Accessing the live Node.js and Express application hosted on the domain.', 'The process of deploying a node to DigitalOcean is discussed, with a mention of a detailed video on the topic.', 'Potential plans for adding file uploading functionality in response to viewer requests.', 'The speaker emphasizes the need for more Twitter followers to be able to post updates and upcoming content.', 'The speaker acknowledges neglecting the Twitter account in the past and expresses the intention to gain more followers.', 'Encourages viewers to subscribe to the Twitter account for future updates and content.']}