We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Analysis Summary
Worth Noting
Positive elements
- This video provides high-quality, practical instruction on setting up modern self-hosting orchestration tools (Coolify/Portainer) and basic Linux server hardening.
Be Aware
Cautionary elements
- The recommendation of RamNode is a paid endorsement, so viewers should compare pricing and features with other VPS providers before committing.
Influence Dimensions
How are these scored?About this analysis
Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.
This analysis is a tool for your own thinking — what you do with it is up to you.
Related content covering similar topics.
This Nextcloud Alternative Caught Me Off Guard
TechHut
MUST HAVE Home Server Companion Apps (mobile)
TechHut
You need to DITCH Overseerr and Migrate to Seerr
TechHut
POV: You install Clawdbot on VPS
Kai Lentit
if you're running Docker you NEED to checkout Dockhand!
TechHut
Transcript
Hello again everyone and welcome back to Learn Linux TV. In a recent video, I taught you guys the basics of RAM Node, a VPS provider that keeps it simple and offers an affordable way to spin up Linux servers. In that video, I taught you guys everything that you might need to know to get up to speed on the platform. And in today's video, we're going to take it a bit further. And what we'll do today is have a bit of fun. We're going to deploy two genuinely useful applications on RAM node. And along the way, we'll also revisit and expand on some of the concepts from the previous video as we build these solutions. More specifically, we'll be setting up two solutions that make deploying applications and services much easier. First, we'll install Kulifi, an open- source platform for self-hosting applications. And Koolifi provides a user-friendly interface and offers a lot of flexibility for managing and deploying services. We'll also be installing Portainer as well, one of my favorite tools for managing containerbased workloads. I've covered Portainer on the channel before, but it's worth revisiting because it greatly simplifies container deployment and gives us yet another powerful option for running apps and services. And what's awesome about this is that by the end of the video, you'll end up with two applications that are actually useful. And as we go through the process of setting these up, we'll have a chance to explore RAM node in more detail. Now, before we get started though, I need to give you guys a quick disclaimer. Ramnode is sponsoring this video, but as always, I retain full creative control over all of the content on my channel, and this video is no exception. I decided to check out Ram Node because I was genuinely interested in the platform, especially after Akami acquired Lenode. And since this is a tutorial and not a review, I'll share my overall thoughts about Ram Node in a separate video. But for now, the goal is to focus on learning and to see how we can make better use of the platform. So if you're curious about RAM node or you want to learn how to go about building solutions on the platform then this is the video for you. Let's dive in. [music] First let's take a look at Kify. Once it's installed, Koolifi allows you to deploy individual applications and services with just a few clicks. Now, it's not specific to RAM node. You can install it on a virtual machine, a physical server, or just about any Linux system you might have access to. That said, Koolifi pairs especially well with RAM node since it extends a platform's functionality and makes deploying additional services even easier. So, in this section, we'll install Koolifi from scratch, and I'll walk you through the entire process step by step. So, let's get started. So here on the RAM node website, what I'll do is click the login button. I'll go ahead and log in. So I'll type in my email address. I'll paste in the password. And I'm ready to log in. Next, what I'll do is access the cloud control panel. And the first thing we'll need to do is create an instance. So I'll expand cloud and then I'll go to the instances section. And now we'll start setting up the instance that we'll be using for Coolify. So click on the plus icon right here to create the new instance. And what I'll do is name it Coolify. And for the region, it auto selected EWR. I'm going to leave that as EWR, but you can always change this if you want to, especially if one of these other data centers are closer to you geographically. But the next thing we'll do is choose our flavor. Flavors define how many CPU cores and how much memory the server will have. And when choosing a flavor, it's always a good idea to match the resource requirements of the application that you're deploying. For Coolifi, the minimum recommended specs are two CPU cores, 2 GB of RAM, and at least 30 GB of storage. For this demo, I'll just choose the third option under the standard VPS category, which comfortably meets those requirements. The next thing we'll do is choose our boot source, which is where we select our operating system. As for me, I'm going to go with Iuntu 2404. So, I'll select that image. And as an aside, Quilify supports many popular distributions including Debian, Fedora, Enterprise Linux, Raspberry Pi OS, and others. But again, since this walkthrough is based on Iuntu 2404, you may need to adjust package names or commands if you choose something different. But if you're following along with me, it's a good idea to go along with iuntu 2404. That way, your results will match mine. For networking, what I'm going to do is choose public IPv4. And this will make the instance accessible from the internet. We'll increase security later in the video by restricting access to this instance. But for now, public access helps keep things simple during this portion of the tutorial. Continuing, if you have an SSH key, you can select it right here. I'm not going to use my SSH key in this particular example, but it is possible. And if you do have one, it's a good idea. Key access to SSH is always better than password access. On my end, this is just a demo, so I'm not going to worry too much about it. But on your end, you should definitely use an SSH key if you have one. In my previous RAM node video, I walked through the process of creating an SSH key. So, you can always refer to that video if you want to become more familiar with the process. Anyway, what I'll do is set the root password. And that should be everything. So, what I'll do is create the instance. And now the instance is being created. So, I'll give it a few minutes to finish and then I'll be right back. And now, as you can see, the instance is running. It's been provisioned and it's ready to go. And what I'm going to do is use SSH to configure this instance. Now, you don't have to use SSH as RAM node includes a built-in console and we can access that right here. And as you can see, I have console access. You could use this console if you want to or SSH if you want to use that instead. It really doesn't matter. But what I'm going to do is switch over to a terminal and connect to this instance via SSH. So what I'll do is copy the IP address and I'll switch to a terminal. So to log into the instance, what I'm going to do is use SSH. The default username on RAM node instances is root. And then I'll paste in the IP address. I'll press enter. I'll answer yes to confirm that I want to connect to this instance and then I'll type in my password. And now we're logged in. Now, before we actually build Coolify, we're going to do a little bit of housekeeping. What we're going to do is update the system, we're going to create a user account for ourselves. Basically, we're going to implement a few best practices. And the first of those will be installing updates. To get that process rolling, what I'll do is type apt update. I'll press enter. And that's going to refresh the package repository index. And now that's done. We have quite a few packages to update. So what I'll do is install those right now. And to do that, I'll run apt and then disc upgrade. Just like that. I'll press enter to confirm that I do want to install those packages. And since there's quite a few packages available for update, what I'll do is just fast forward this and post. For any prompts that come up similar to this one, I'll just press enter to accept the defaults. And now the process is finished. The next thing I'm going to do is add a user for myself. It's not technically a good idea to use root for everything. So by setting up a user for ourselves, we can avoid using root and then we could use sudo if you want to elevate our privileges. So to add a user, what I'll do is type add user and I'll create it for myself. I'll type in a new password. And again, I'm just going to press enter through these prompts right here. Enter again to confirm. And as you can see, we have the user account. We also need to give our user access to sudo, otherwise we won't be able to escalate our privileges at all. That's easy to do, though. All I have to do is type user mod- lowercase A and then uppercase G. I want to add a user to the sudo group. And the user that I want to add to that group is mine. And that should be all there is to it. Now, at this point, we've installed updates, and the best thing to do is reboot the server to take advantage of those updates. But what I'm going to do is power off the server. Reason being, I want to create a snapshot of this particular instance. That way if I make a mistake during setup of Coolify, I can always revert the snapshot and undo the changes. It basically gives us a nice restore point we could use if we make a mistake. So to power off the server, what I'll do is type power off and I'll press enter. I'll switch back to the console. We see that Koolifi is still running, but any moment now it's going to finish the power off process. And now the instance has stopped. So again, what I'm going to do is create a snapshot of this instance. So I'll go to the snapshot tab. I'll create a snapshot. I'll just name mine initial setup and I'll create it. And now the snapshot is being created. I just need to wait a few minutes for it to finish. And as soon as it's done, I'll be right back. And now we see the snapshot has finished being created. And since this snapshot includes all of the updates that we've installed, even if we do have to start over, we won't have to install those again. Anyway, at this point, what I'll do is start the instance. And I'll give it a few minutes to start. Back in my terminal, since I've created a local user account, what I'm going to do is use that to reconnect to the instance. So, I'll press enter. I'll type in my super secret password. And now I'm logged in. And now that I've reconnected to the instance, it's time to install Koolifi. And what I'll do right now is type the command that'll do exactly that. I'll type curl and I'll add a few options. And there's the command. As you can see right here, there's an install script that Kulifi provides. and we can run this install script to install Kify. So essentially I'm using curl to download the install script and then I'm going to pipe that into sudo bash. I'll press enter. I'll type in my super secret password and I'll press enter. At this point there's not really much else to do. The installation process is largely automated. It'll take just a few minutes to complete. And once it's finished, Koolifi should be installed and ready for use. And now it's telling me that installation has completed and the solution should be available on port 8000. So to test that, what we'll do is switch to a web browser. I'll open a new tab and what I'll do is paste in the IP address for the instance and then colon 8000. Let's see what happens. And check it out. Here's Coolify. So, what I'll do is walk through the setup. The first thing I'll do is type my name. I'll type in my email address. I'll create a password. I'll type it again. And you'll also notice that it's telling me that this connection is not secure. And that's correct. We haven't added any certificates as of yet, but that's okay. In my case, this is just a demo. So, that particular output is expected. Anyway, now that I've set up my user account right here, I'll click create account. And now, what we see right here is the initial install wizard for Coolifi. So, I'll click let's go. I'll choose this machine since it's only running on this machine anyway. Next, I'll create my first project. And now setup is complete. So, I'll click this button right here to get started. And here we have Coolify. How cool is that? Now, it's installed and it's ready to go. And what you could do at this point is launch an application into your project. If you scroll down, you'll see a number of different things that you could deploy. There's quite a few things here. Now, what I'm going to do as a quick test is deploy Cockpit. It really doesn't matter which app you choose to deploy, but Cockpit is pretty easy. So, I'll click on that. I'm going to leave the default values here and I'll click deploy. And now it looks like everything is started. And we can see right here that it's running and healthy. Now, a full tutorial on how to use Coolify is beyond the scope of this video. I just wanted to show you what the process looks like to deploy an application within a project, but if you'd like to see me do a dedicated tutorial on Coolify, let me know in the comments down below and I'll consider it. Now that we have a Coolify instance up and running, we've added a useful tool that makes deploying additional applications and services much easier. However, there's one important issue we need to address. Right now, the instance isn't very secure. In fact, it's fully exposed to the public internet, and we haven't put any access controls in place yet. And to fix that, we're going to make a few adjustments to improve security. Now, this isn't meant to be a complete security hardening guide or anything like that. There's always more you can do, but what I'm going to have you do right now will put you in a much better position. And specifically, what we're going to do is take a closer look at security groups. I introduced this feature in the previous video, but here we'll walk through a real world example of using security groups to restrict access to a service. But before we create the security group, we'll need to know what our public IP address is. If you don't already know what yours is, you could easily find out by visiting the URL that I have on the screen right now, which will display your current public IP. Keep in mind that unless your ISP provides a static IP address, this value may change over time. And if it does, you'll need to update the security group that we're about to create. But for now, what we'll do is configure a security group to allow access only from our current public IP address, which significantly improves security. So to create a security group, what we'll do is go to the security group section. I'll create a new one and I'll make sure that the security group is being created in the same region that our instance resides in. And in my case, that's already the case. The instance is in fact an EWR. Next, what I'll do is give it a name. I'll just call this Coolify. And I'll click create. And here we see the Coolify security group that we just created. And if we hover over it, we'll click on the middle icon right here. And that enables us to add a rule. In my case, I'm going to allow all protocols from my public IP address. And I'm going to target incoming, which is already was selected anyway. We'll leave the selection right here on IP addresses. I'll paste in my public IP address. Then I'll add /32, which is going to limit the scope to this particular IP address itself. And what I'll do is add the rule. And what we have here is a rule that's going to allow incoming traffic only from my public IP address. Now, these other two rules right here are for egress traffic. We definitely want our instance to be able to reach the internet, especially considering that we'll need to install updates every now and then. And that's basically why right here we have two egress rules and both of them are allowing all traffic. Again, that's egress traffic and we're restricting it to our public IP address. Now that that's done, we'll have a security group that restricts access to our instance to a specific IP address. Any instance with this security group attached will only be accessible from approved locations while everyone else will be blocked. But a security group isn't very useful unless we attach it to an instance. So we'll go back to instances. We'll click on the instance that we just created. We'll go to security groups. We'll remove the security group that's already added to the instance. And now what we'll do is associate the new security group. So we'll select it in the list and then associate it. And now as you can see the security group is associated. Now, back in my terminal window, I want to make sure that I'm still able to connect to the instance. And as you can see, I'm still connected to it. So, I didn't lose access to this instance. But to be on the safe side, what I'll do is log out of this instance. And then I'll reconnect. And as you can see, I'm still able to connect to the instance. The thing is though, if I was coming from a different IP address, a different location, then I would not be able to access this instance. Now, depending on the type of instance that you're creating, you might actually want public access. For example, if you are creating a server to run your company's website, you'll probably want the general public to be able to access it. However, in this example, what we've done is we've restricted access to Koolifi, which might represent a solution that we want to use internally and we don't want accessed externally. We'll revisit security groups again later, but for now, let's switch gears and take a look at how to deploy Portainer. To deploy Portainer, we'll need a second VPS instance. On my end, I've already created an instance for Portainer, and that's what you see right here. At a minimum, though, Portainer needs an instance that has at least one CPU core and 2 GB of RAM. But for a more comfortable experience, especially if you plan to deploy multiple containers, I recommend two CPU cores and 4 GB of RAM. Now, on your end, you might need to size your instance higher, especially if you plan to deploy multiple containers. But for this demo, I think the instance that I've created right here should be fine. Now, off camera, I've already gone through the process of updating this instance, creating a user account, and also creating a snapshot. Now, in the previous section, you saw me complete those steps. And I recommend that you do the exact same thing right here rather than go through all of those steps all over again. If you wanted a refresher, you could just rewatch the previous section where I completed those steps. But on my end, I have an instance right here that's set up and ready to go. And what I'll do right now is connect to the instance. I'll press enter. I'll type in my super secret password. And now I'm connected. But anyway, with this new VPS ready, we can move on to installing Portainer. One of Portainer's core requirements is going to be Docker since Portainer is designed to manage containerbased workloads. So before installing Portainer itself, we'll first need to install Docker. And to set up Docker, what I'm going to do is download the official install script from git.docker.com. After I do that, I'm going to pipe it into sudo bash. And this is similar to the install script that we ran in the previous section. But when I run this, it should give me access to Docker. So I'll press enter. I'll type in my super secret password. I'll press enter. And now the install script is running. So I'll just give it a few minutes to finish. And then I'll be right back. And now Docker is installed and ready to go. And to confirm that, there's a few commands we can run. So, for example, we can run docker and then d- version, and that's going to return the version of Docker that's currently installed. But in addition, there's also a test container we could deploy that'll give us a better test and help us ensure that Docker is running. Now, this won't do much of anything, but it does legitimately test the fact that we can deploy a container image. So what we'll do is run sudo and then docker run. And the name of the container image that we'll try to run is hello world. Just like that. So I'll press enter. And let's see what happens. And as you can see right here, it says hello from docker. And that's really all this container image does. It just prints this message right here. But again, this enables us to test that Docker is working and it's able to pull and deploy a container image. And so far, it's working. Now, before we go any further, there's an optional step that we can complete if we want to. And this is the previous command that I ran. Notice that I use sudo to run this container image. And if I remove sudo, you'll notice that permission is denied. So, by default, a normal non-root user is not able to deploy a container image. But there's an easy way to fix that. What we'll do is add our user to the Docker group. So, run sudo and then user mod- lowerase a uppercase G. We want to add our user to a group. We're going to add our user specifically to the Docker group. and the user that we want to add to that group is ours. So, I'll type mine right here and I'll press enter. Now, in order for changes in group membership to be applied, we will need to log out and log back in. So, I'll type exit and then I'll simply reconnect to the instance. And there we go. Now, if I type groups, you'll see that I'm a member of the Docker group. Now, if I recall the previous command, but without sudo, it should work now. Let's see. And it does. And I didn't even need to use sudo. And that's exactly what being a member of the Docker group enables us to do. Any user that's a member of that group will be able to run container images without using sudo. Anyway, at this point, we've installed Docker and we took care of the first requirement for Portainer. Another thing we'll do is create a self-signed certificate that'll enable secure communication. And to do that, we'll first create a new directory for certificates to be stored in. And we're going to create the directory at /op/portainer/serts. So, I'll press enter and we should be good to go on that. Next, what we'll do is go inside that directory and then we'll start building our certificates. We'll start by setting up a key. And to do that, I'll type sudo and then open SSL and then gen RSA and then dash out. We'll create it as portainer.key key and we'll include a cipher strength of48 and I'll press enter. Now if I list the storage we'll see that I have the portainer key right here. So now we have the key but we also need the certificate as well. So let's generate that now. And to do that, I'll type sudo open SSL req- new-x509 dash key. We're going to use portainer.key and then dash out. We'll create the certificate as portainer.crt. CRT and we'll set expiration to 1 year. So I'll press enter and let's see what happens. Now for this we could just fill out the information that it asks for. So I'll just begin filling this out. Most of these questions should be fairly self-explanatory. And now, as you can see, we have the certificate and the key. So, when it comes to setting up certificates, we should be good to go. Now, keep in mind that this is a self-signed certificate. There's nothing technically wrong with that, but it's always better to either purchase a certificate or use Let's Encrypt to benefit from a certificate that's actually signed. But it's perfectly fine to use a self-signed certificate for personal use or evaluation. Anyway, the next thing we'll do is create a new volume within Docker. And that volume will serve as storage for a pertainer to storage state and application specific data. To create the volume, what I'll do is type docker and then volume create. And we'll call the volume portainer data. I'll press enter. And it returned the name of the volume, which is our confirmation that it did in fact create it. And now that we have a volume, we could deploy Portainer itself. I'm going to paste in a command into my terminal that'll do exactly that. And if you're following along with me, you can grab the same command from the official blog post for this video, which will be linked down below in the description. In fact, all the commands featured in this video will be there, too. Anyway, I'll paste in the command. And here it is. Basically, what we're doing is we're using Docker to create a container. We'll name the container portainer. We want it to always restart unless we explicitly stop it ourselves. I'm also including port mappings for port 8000 and also port 9443. We're also setting the volume that we want to use which is the one that we created earlier. And we'll also use the certificates that we created our name/op/portainer/serts. So I'll press enter and let's see what happens. And now the container should be running. And to make sure of that we could run docker and then ps just like this. And as you can see, Portainer is running. Now to access Portainer, what we could do is go to a web browser. Paste in the IP address, and we're going to connect under port 9443, and let's see what happens. Now, it's telling us that there's a potential security risk, but actually there's not. This message will always come up when you use a self-signed certificate. Earlier I mentioned that it's always better to use a signed certificate if you can get one. But for now I'll click this button right here to continue. Now at this point, Portainer is going to ask us a few questions to finish setup. And the first thing it's asking us for is to create an administrator password. So I'll do that right now. I'll type it again and then I'll click create user. And the next thing we're going to do is proceed using the local instance. And that's this button right here. So I'll click on it. And here we have Portainer. And to access our local Portainer instance, what I'll do is click this button right here. And now we're ready to start using Portainer. And what you could do is use Portainer to run container images. We'll first need to download one. And what I did right here is just paste in the name of a container image. I just grabbed this from the DockerHub. And it really doesn't matter what container image you decide to use. I'm just using this one as an example. Anyway, I'll pull the image. And now it's done. Next, we'll go to containers. We just pulled an image but that doesn't give us a container. The image is what a container is created from. But now we can actually create the container that's based on the uptime Kuma container image. So what I'll do is click add container. I'll paste in the same container name right here. And since we just pulled this down, there's nothing that needs to be downloaded. So it should happen really fast. And then what I'll do is deploy the container. And as you can see, Uptimekuma is starting. So we'll just wait a few minutes for that to finish. And now, as you can see, Uptimekuma is running. Now, a full tutorial on how to use Portainer is beyond the scope of this video. In fact, I've already created one. If you want to learn more about how to configure Portainer and how to use it, I'll leave a card for my video on the subject right about here. In addition, if there's another tutorial that you'd like me to create for Portainer, let me know in the comments below what you'd like to see. But anyway, what we're going to do right now is shift gears and go back to security groups. Like I mentioned earlier, it's a good idea to secure our instances. And what we're going to do right now is add a security group similar to how we did with the first one, but we're going to set this one up a bit differently. So I'll click on security groups. I'll add a new one. And again, we want to make sure that we create it in the same region where our instance resides in. For the name, I'll call it Portainer. And then I'll create it. Now we have the security group. I'll click the middle icon right here to add a new rule. And we're going to set this one up a little bit differently. For example, in the real world, you might have a port that you do want publicly accessible, and you might also have ports that you don't. And a common port that you'll definitely want to restrict is port 22, aka SSH. Since Open SSH allows us to remotely manage an instance, we definitely don't want that publicly available. Maybe we still want to access the application publicly, but SSH should definitely not be publicly available. So, what I'm going to do is drop down the protocol right here. I'll scroll down. And here we have SSH. So, I'll select it. I'll paste in my public IP. I'll add slash32 to limit this rule to this specific IP address. And then I'll click add rule. Now, we're going to come back to this security group, but what I want to do right now is attach it to our Portainer instance. So, I'll click on the Portainer VPS right here. I'll go to security groups. I'll remove the one that's there right now. And now what I'll do is associate the new group. And now, as you can see, it's added. Now, before we add additional rules, as an aside, what I want to show you right now is that we could still access the instance via SSH. In fact, as you can see, I'm still connected to it. However, on the other hand, if I go back to the browser, you'll see that it's not responding. And that's because I allowed access via SSH, but I did not allow access to port 9443, the port that Portainer uses. That effectively means that the port that Portainer is listening on is now closed. So, we'll definitely need to fix that. And I'll go back to the RAM node console. I'll go back to security groups. I'll click on the portainer group and let's add a new rule. And for this one, I'm going to choose custom TCP rule. I'll add port 9443. And what I'll do is open it up for public access by simply leaving the IP address as all zeros. And those zeros mean that anything is able to connect to it. And now right here we have the completed security group. As you can see, we're allowing access to SSH only from my IP address, but we're allowing anyone to access the Portainer instance. And that's where we have the all zeros. And this is closer to how it is in the real world. For example, perhaps you have a company website that needs to be publicly available. In that case, you do want the instance to be open to the public internet. However, as I mentioned earlier, SSH should not be publicly available. You definitely need to restrict that. And that's exactly what we did here. We're only allowing access to SSH from my public IP address. And that's a best practice. And now if I go back to the browser where I had Portainer open and now it loads just fine. So as you can see our security group is working. But at this point I showed you how to create two different applications within RAM node. And I hope it helped you out. We set up not only Koolifi but also Portainer. And now you could use these applications to more easily spin up new services on the platform. And I hope it helped you out. And there you go. In today's video, we explored RAM node even further and we built two useful applications on the platform. I really hope you enjoyed this video. And from here, learning doesn't really stop. We have two new Linux servers and it's important to maintain our servers over time. And that's also a learning opportunity. So, for example, maybe you'll tune these applications for performance. Perhaps you'll increase security. There's definitely a lot you can do. Also, if there's any other subject that you'd like me to cover when it comes to RAM node or anything else for that matter, then let me know down in the comments below this video. I would really appreciate that and I look forward to reading what you guys have to say. In the meantime though, thank you so much for checking out this video and I'll see you in the next one. [music] >> [music] [music]
Video description
In this video, I deploy real applications on a Linux VPS using Coolify and Portainer on RamNode. Starting from a fresh Ubuntu instance, I walk through best practices, install both platforms from scratch, and show how they simplify app and container management. Along the way, I explore RamNode features like security groups, snapshots, and access control to lock things down properly. If you’re interested in self-hosting, Docker, or getting more out of a VPS, this video is a great place to start. *🙏 Thanks to RamNode for Sponsoring This Video!* Check out RamNode and develop, deploy, and grow your project or business on their OpenStack-based cloud platform. Use promo code "LEARNLINUXTV" to get a free trial and $5 in starter credit ➜ https://learnlinux.link/ramnode *❤️ Consider becoming a Channel Member* Support Linux Learning and gain acess to exclusive perks, such as ad-free content and early access to select videos. Your support really helps!!! Join here ➜ https://learnlinux.link/member *🌐 Video-specific Links* • Check out RamNode ➜ https://learnlinux.link/ramnode • Coolify ➜ https://learnlinux.link/coolify • Coolify Documentation ➜ https://learnlinux.link/coolify-docs • Portainer ➜ https://learnlinux.link/portainer • Portainer Documentation ➜ https://learnlinux.link/portainer-docs • Portainer Video ➜ https://linux.video/portainer • Official Blog Post for this Video ➜ https://learnlinux.link/ramnode-article-2 *🛍️ Support The Channel and Get Awesome Linux Swag!* Head on over to the Learn Linux TV Merch Shop and check out some great Linux-themed gear, including (but not limited to) T-shirts, drinkware, buttons, stickers and more! • "apt install coffee" T-Shirt ➜ https://learnlinux.link/apt-install-coffee • "sudo" T-Shirt ➜ https://learnlinux.link/sudo-shirt • Linux Commands Cheat Sheet ➜ https://learnlinux.link/linux-commands • "May Spontaneously Talk About Linux" T-Shirt ➜ https://learnlinux.link/talk-about-linux-shirt • "Dark Side of the Terminal" T-Shirt ➜ https://learnlinux.link/dark-side-shirt • Lots more ➜ https://merch.learnlinux.tv _Use coupon code "LINUXFAN" to get 10% off your entire order ➜ https://merch.learnlinux.tv_ *🐧 Other Ways to Support Learn Linux TV* • Channel Membership ➜ https://learnlinux.link/member • Patreon ➜ https://learnlinux.link/patron • Spin up your very own Linux server ➜ https://learnlinux.link/digitalocean • Linux swag ➜ https://merch.learnlinux.tv • Check out Netdata ➜ https://learnlinux.link/netdata • Jay's Gear ➜ https://learnlinux.link/amazon _Note: Royalties and/or commission is earned from each of the above links_ *🕐 Time Codes* 00:00 – Deploying Self-Hosted Applications on RamNode (Tutorial Overview) 02:09 – Section 1: Deploying Coolify on a RamNode VPS 02:43 – Creating a RamNode VPS Instance for Coolify 06:50 – Initial VPS Setup for Coolify (Updates, Hostname, User Creation) 08:53 – Creating a VPS Snapshot on RamNode 10:38 – Installing Coolify on a VPS 13:06 – Deploying an Application Using Coolify 14:05 – Securing Coolify with RamNode Security Groups 18:58 – Section 2: Deploying Portainer on a VPS 20:12 – Installing Docker on a RamNode VPS 23:40 – Creating a Self-Signed SSL Certificate for Portainer 26:12 – Deploying Portainer with Docker 27:46 – Accessing Portainer and Completing Initial Setup 29:02 – Deploying Uptime Kuma Using Portainer 30:48 – Securing Portainer with RamNode Security Groups *🎓 Full Linux Courses* • Linux Crash Course ➜ https://linux.video/cc • tmux ➜ https://linux.video/tmux • vim ➜ https://linux.video/vim • Bash Scripting ➜ https://linux.video/bash • Proxmox VE ➜ https://linux.video/pve • Ansible (Udemy) ➜ https://learnlinux.link/ansible • Linux Essentials (Udemy) ➜ https://learnlinux.link/linux-essentials *🎓 More About Learn Linux TV* • Main site ➜ https://www.learnlinux.tv • Community Forums ➜ https://community.learnlinux.tv • Github Account ➜ https://github.com/LearnLinuxTV • Content Ethics ➜ https://www.learnlinux.tv/content-ethics • Request Paid Assistance ➜ https://www.learnlinux.tv/request-assistance ⚠️ Use Content Responsibly Learn Linux TV shares technical content intended to teach and help you, but it comes with no warranty. The channel is not liable for any damages from its use. Always ensure you have proper permissions, follow company policies, and comply with all applicable laws while working with infrastructure. #RamNode #VPS #SelfHosting #LinuxServer #Coolify #Portainer #Docker #UptimeKuma #Homelab #DevOps #CloudHosting #LinuxAdmin #ServerSecurity #LearnLinux