 So if you come from the Windows world, you're familiar with remote desktop or a Windows terminal server and it's a system by which you can have remote users log in, remote desktop as it's called as well, and it's a really popular way of, you know, if you have a server inside your office and you want to have your users remotely and able to get into said server so they can share and run applications on there, they can row it in from home. That way you don't have to worry about their invaders. You can just maintain one server where all those applications are set up in licensing. So that's very familiar and there's other more specific things like Citrix Zen apps are the ability to publish single applications and then port them so they run on the server but then they're brought to the local desktop. If you've worked in a corporate environment, you've probably seen that it's actually one of the things Citrix is well known for is that product. But can you do that in the Linux world? Absolutely. There is the complete X2Go open source system that allows you to do this. X2Go is really impressive. So X2Go enables you to access graphical desktop computer over a low bandwidth or high bandwidth connection and it will let you do publishing of applications and we're going to cover both aspects of it. So run down the basic features right here. So the graphical remote desktop that works over low bandwidth and high bandwidth connections, the ability to disconnect and reconnect a session even from another client so you can start on one computer, disconnect that session but not terminate it and then rejoin that session where it re-left off. And it works for applications as well, which is really cool. It does have support for sound. It does have support for printers. It only needs to do everything over SSH. So you don't have to open a bunch of ports or change your firewall a lot. I still recommend, you know, a VPN and then SSH to the box you want to connect to for extra security, but it can do SSH with key authentication. Now the client side of X2Go supports Windows, Mac and Linux. So you can actually connect your Windows computer to the server that you set up for X2Go and have a standard Linux desktop even though you're accessing it from a Windows computer and the printers still work. The sound seems to work as well. I did do a little bit of testing on that. The only challenge I found is when you get to the lower bandwidth, if you try to watch something like YouTube, you'll see if you're doing remote sessions, sound and desktop doesn't come over, but that's generally with any, you know, you're trying to stream everything across and it doesn't work super well. But for local things like YouTube work, but we'll get into some of those details in a minute. Now, easily select multiple desktop environments. You have to have those desktop environments installed in order for them to work. So you can set up a server with multiple environments and then you choose that environment when you launch. We'll cover that when you go into the launch on there. It's pretty slick. And once again, they talked about pulse audio, SSH proxy support in the public applications, thin client available, session broker. If you get real advanced with X2Go, X2Go supports like a web enabled. You can tie it in with a patchy so they log in through, your users can log in through a web browser. It's really impressive. If you want to get all into that, that goes way beyond. It's a lot of work to set up. We'll go for the basics here of how we set this one up and get you going with it. So to install X2Go, I actually have a PopOS install that I have here. So local desktop, I'll get into it real quick. The only thing I had to do to install this, and it's already installed, but it's sudo install X2Go server. And it's all you, it's by default with Ubuntu and PopOS being that is a Ubuntu derivative, it is installed as the repositories in the Ubuntu repository, which in turn in a PopOS repository, it works perfectly fine. But if you want to install it in Debian, they do have instructions in here because Debian doesn't have all of the repositories available. So they have a PPA you can add. They have a really simple instructions in here. And here's how to install it on Debian. I did one Debian install, actually I stuck it in DigitalOcean, spun it up just through the X2Go session server in there and LXDE desktop and away you go. Now comment on GNOME. GNOME isn't fully supported in X2Go. So the other extra thing that you have to do is sudo apt-get install. And it's called GNOME, sudo apt-get install GNOME flashback. And this is because the 3D and cool environment of GNOME isn't fully supported to bring it over there. So you can still do what they refer to as a local session. We'll cover the differences in a second, but you have to install the GNOME flashback to get like a remote terminal server style session with GNOME. We're going to go ahead and show you the other than installing the server, the other thing you need to configure. The other things that need to be done in here is because it works over SSH, you have to make sure SSH is up running and enabled on your system. And I'm not going to do it exactly right here, but obviously sudo apt-get install. SSH is the first part, which is already set up on this machine. And then making sure once you have that, that SSH enabled. So sudo system control enable SSH. It's enabled. That way it starts up on boot. And now we can, from another computer, log into this one. So the IP address of this computer is 192.1.6.8.3.1.4. SSH, I think I used name Tom, and it lets me log in. Now I've already done this right here. If you're not familiar, I have SSH keys installed. So it's SSH copy ID. Once you install it, if you SSH end of login with a password, I do SSH copy ID Tom here. And what that does is it just copies over my keys to that machine. It's already been done, so you get this warning. Look up SSH key management if you're not familiar with this. But this saves you from having to do the password login when you're logging in each time. If not, it will prompt you for a password. Now, as a measure of security, once you have your keys installed, I highly recommend you can Google how to do this. Turning off password authentication. You want key only or key plus password authentication. To keep SSH that much more locked down, you don't want people just guessing away at your SSH passwords. So that's a little security errata on there, but I won't go too in depth on that particular aspect of it. But from the command line, make sure you can log into this. I'm doing this from Linux to Linux. If you're using this in Windows, there are ways you can import the keys that goes way beyond the scope of this talk. But there are methodologies of which because it uses putty for Windows. You make sure you can log in with putty. You can make sure the session logs in. You make sure you can get the keys. There is a key session manager for putty. So you can do it that way. Or just use username and password until you figure all that out to get started with this. So this is all set up and running. And we're going to go ahead and open up our X2Go client now. Now, once again, the X2Go client is in a repository. So there's nothing especially you have to do after you install X2Go. Or in the case of Windows, you just download to have an executable installer. And I have a bunch of sessions listed over here. You create the sessions up here with the new session option. Type in a session name, host, and then try auto-login via SSH agent. You check that box so you don't have to be prompted for the password and it'll log in. When you're setting up a new session, you choose this. And actually, we're going to go ahead and edit one of the other ones. And session preferences. And this is POPBM local desktop. Now, here's all the different options. I can choose GNOME, LXDE. I can choose them, but they'll fail. Because if it doesn't have the other tools installed, like these other desktop managers or desktop environments inside of that particular machine I'm connecting to, it will not work. So I want to connect to the local desktop of this particular machine. Other options in here. What speed are you connecting at? Input output options. I can make it full screen, which is actually kind of cool, because I can say make it full screen. And I have a three monitor setup. So it chooses one of the three monitors. I can just make one of those monitors the whole screen of that particular display. This is kind of neat, too, because if you said full screen, but then use the X-CinemaRama, exactly how they say that, extension, that actually logically breaks out all the monitors and all the multiple monitors. So my three monitors are treated exactly the same all the way across, which is really pretty cool. We're just going to just do custom 800 by 600. I do turn this offset DPI, but you can push DPI settings. I've not had a problem, so leaving it off. But if you have something custom, you want a custom font size or screen size, it does have options to put that. Media enable sound support right here. This pulse audio, it'll give you a warning if you choose these that they're deprecated, but still usable in certain circumstances. And then shared folders, you can add local folders and map them from your computer to the session. So if I wanted to be able to access certain files on my computer and that computer, we'll add one real quick. First we find the folder. Choose this one right here, add auto mount. It's gonna mount it on that particular machine and you'll see how I will show how it's mounted in there. So we're gonna, okay. It also says use SSH to tunnel file connections to firewalls. So your connection sessions only limited to your speed, but it's once again, even though I am sharing files, it's not using file sharing, it's using SSH to tunnel everything in there. Now we'll connect to our local desktop, you just click it and it sees that we have a session logged in. So let me show you what that is. That's this session right here that we have and move the screen back over and we're gonna go ahead and hit full access. Then take a second and there's that session. So we move this side of the way, kind of make this side by side. So as I'm on the accession here, you can see things going on in a VM in the background. Close that and I guess you can leave that open. You can see I can access this computer and it's kind of weird cause you're seeing it mirrored cause I'm actually accessing the local desktop and it's responsive as fast, granted I'm on a local network, but it works really well. So let's talk about another session. Close this, bring this back over here. Now we're gonna go pop OS and we have apps, Aden Live. I've got a few of them on demo here. That was a local desktop. So let's re-edit this one. Session preferences and let's launch GNOME. Now this is where I was saying where you're gonna get a different GNOME. You've seen that's the standard pop OS look for logging to pop OS, but because the GNOME flashback, this is when it runs as a terminal server. So we're gonna okay and connect here. Should change the session name so we know what it is. So it's local, just logging in GNOME classic. Flashback is actually what it's called now. We go okay, go back in. You notice some of the prettiness is gone and when I'm moving things around here, you notice how they're not moving around down here. These are separate sessions. So this session is not the same as that session. So these sessions being completely different means they are multiple users. If I had another user and I have that user login as well, I create another user on this system, they won't be shared with this session. Each user has their own desktop, own environment. The downside being of course, with this GNOME session here, well, it's not gonna be as pretty. It's much more basic, very flat looking. And this is because GNOME doesn't support excellent 3D rendering or really any 3D rendering across the SSH pipe that's created to bring us over here. And that's gonna be some of the challenges you may run into with X2Go. It's not gonna be this beautiful environment. But then again, that's usually not the use case that you have for this. You wanna be able to get into your system, maybe run an application on there. But the nice thing is too, because it's not interfering with your main desktop, you can even be logged into your backend system to get something off of there without having to directly interact with it or mess up any of the other sessions that you have actually running. So let's cover another aspect of X2Go. So close this, bring up our X2Go here. And we'll talk about, this is where it gets really interesting is we're gonna run a published application on here. So this is the general public app applications. New, and now it's ready. Now, when you run public applications, and actually let's start over, terminate that, look at the session manager first to see what we chose, the public applications, single application or custom desktop. So we're choosing publish and it's really that easy. So you don't really have to do anything on the server side, although it pulls from the list of applications that are already installed on that server. So we open up this, new one real quick, and here's those applications. Let's say I want to run LibreOffice on here, let's just open up, actually let's go to writer. And here we are, start. Now LibreOffice writer is not running on my computer. You're seeing it on my computer. You're seeing as if it's running on my computer. But if we go to open, test document, there's the test document. We go to LibreOffice on my computer. Here's LibreOffice on my computer. Looks like in our session, but when I go to documents, you can see completely different. You're seeing documents local to my computer, not the documents local to that computer. This is quite slick because this allows you to run applications in there. And of course, maybe LibreOffice is not the best example. What if we wanted to run something more advanced, like in live? Sure, why not? Now we're running my video editing here, and open, you have a test file that I loaded. Oh, I have access to the media that was on there, so let's go ahead and add it back. I was setting up for the demo here, we're gonna add a clip. And it doesn't see clips on my computer, it sees clips on that computer. We can do this, video edit, we can see the edits, but this is all not running on my computer at all. As a matter of fact, we're gonna do this, we'll delete a clip and we're gonna go for render. This is where it gets really cool, so we're just gonna do this test render here. I think I have something called that, and it doesn't matter, we call it test render, test render more options. This is a 24 core server that this is running on. So we hit render to file, and it kicks off the rendering. Now it's hard to see, but sometimes because it's all this is being rendered, it's actually not like an application running on my system. So sometimes there's a little bit of just this weird artifacting I see for a second, then it goes away, it's maybe a bandwidth issue when it comes on there, but what I can show now is we're running on this computer, so here's this computer here, 192.168.1.34, and run htop. And there's 24 cores being utilized for rendering. Now this is where it gets even kinda neat again, so we're gonna go and pull up our session, close this, and we'll suspend the session. And with that, all the stuff out of the way, Hayden Live is still working in the background, still sucking up CPU power here, and let's exit, go back to my local computer. My computer's hardly doing anything, mostly it's running OBS recording this video, so nothing here, just the CPU is being used for OBS, but let's go ahead and jump on that session again. And we're just gonna resume it, and it's further along in the render. So you can pause the application in terms of your connection to it, but the application can continue running on that server in the background, and this is just a really, I'm considering rebuilding my server because this is an interesting use case. I put in a faster server instead of a faster desktop, and I just run Hayden Live as a published application on a really fast server, I can connect to it here on my desktop, pick off a large video editing project, leave, leave my office, shut off my personal computer, but leave my servers running, which are running anyways in the background, to run all the other things that run on them, connect with my laptop when it's on rendering and finish uploading and getting the file and moving it. And it does support having a combination, granted speed being limited, of using applications on my desktop, using applications where files on my desktop with files on there, but if you do map a shared file on there and you try to render a project, you're gonna have a problem because if you disconnect from the session, it loses those resources because it's being brokered by the X to go, so it's best to have all those things already mounted. Matter of fact, one of the things I had done to make this work was I keep all my video files on a FreeNAS and I mounted the FreeNAS on the PapaOSVM to be able to have access to some of the videos, and because when you're going to the file open, it sees the local resources not on my computer, but on here, and so I can access anything I have mounted inside of here. So definitely, I'm just really impressed with how well this whole system works. And of course the next question might be is how does it work on lower bandwidth? Often kill this render job. Oh, interesting too though, when I alt-tab around, it does see each window, even though each one's being rendered, it sees them individually just like that, so it still handles them as part of my own desktop environment, including like Snap2's. Snap2's work okay, but the full screen dragging, splitting between all my monitors works perfectly fine on there. Sometimes I notice it doesn't always Snap2 and I don't know why, but that happens sometimes. This, it also sometimes that popped up on my other screen, but I have that happen sometimes because I got triple screen. But that's the published applications. Yes, we know session will be lost. And one more thing about the published applications that I want to show because I saved this all the way over here is Caden Live on Pop. You can, session preferences here, single application and then choose the command, a user bin Caden Live. So instead of having to go through and choose the application as published, you can actually create a shortcut directly to the application. So every time you run it, it just runs boom, that application. So Caden Live on Pop OS and it only starts Caden Live on Pop OS. By the way, you can start multiple sessions of Caden Live, multiple people using the application through different sessions with different users and have them all working independently. Granted, they share the resources of the computer, but still really cool that that works and can be done. So there's all kinds of fun things you can expand on when you're doing this. Whoops, close X to go. I want to back up. Because obviously the other question people have is what about low bandwidth? And what I did was I spun up a single processor, low powered digital ocean server with LXDE on it. So WN loaded LXDE lightweight desktop here, created a user, loaded Firefox and some applications. And I set it up in England. That way it could be far enough away that, you know, it actually is going to take some slow speed to get it connected. So here's LXDE running in digital ocean and in England as well. I like how it figures out that I'm in England. So let's go to ifconfig.me. There's the IP address of this server. Now this is where I was talking about if we were to do something like open up YouTube, this is where it's going to get a little bit jerky. We're running a single processor system so it's not super fast to begin with. But if you start playing audio and things like that here, you can see there's a little lag from the render. But one, it's not real fast of a system, not a lot of resources dedicated to. It's in England and, you know, that's some of the general applications are fine. But when you just have too much media, too much graphics, you're trying to pipe HD graphics, render it over there, bring it across the pipe. It does, and you can see it's peaking the processor, the single core processor on here. So it's not the most ideal way to do it. Obviously it's better if you have an internet connection to serve YouTube on your local desktop, but it does work. And things like, let's open up LibreOffice here. Completely usable for things where there's not a ton of screen updates. So editing a document in here, remoting into your computer remotely across a lower bandwidth connection, not a problem. That works perfectly fine on here and no issues. And because this is LXDE, it does not have the beautiful pretty graphics, but then again, this is probably more of a business use case work functionality than anything else. Now, one of the other things I have set up on X2Go that I wanna show is the Mate desktop does look pretty nice. Yep, terminal, oh, I always forget that terminates X2Go when I back up. You can have multiple sessions going at once, so I should have left that open, but here's Parrot VM display two. Oh, need to change that to display one. Parrot VM, we're gonna go ahead and session preference, input, output, use whole screen, identify displays. This is technically, the middle one is labeled as three in my setup. We're gonna make it full screen here. We're gonna make sure it understands everything like the desktops. And we're gonna go ahead and Parrot VM. And you'll watch my middle screen become Parrot VM. Hopefully, OBS doesn't lag. So, Parrot VMs are local in my machine back here. It does do this. Somehow messes up the icons, but then sometimes it goes away and starts working fine. I don't understand why. But you can see that the Mate desktop looks much nicer. And I'm gonna be doing a review of Parrot, and this is actually how I plan to do it because I run this in a VM, because I'll do it for some pen testing, do it for some research by like, some of the times when you're enumerating network resources or scanning a network, it can take a long time. So it's nice to have this VM, I can kick it off and then leave this session open and then finish later and join back on it. And it works really, really well. So, it also has no problem with lock screens. Suspend because Mate desktop seems to understand perfectly fine the X2Go server. And it's really when you install Parrot, it's as easy as apt-get install X2Go server. Once again, it's in Ubuntu base, so it's in the repositories, something special you have to do. And I'm gonna log out of here real quick and log Tom out. And she's one more thing that I, this is where it gets really slick. I'm gonna edit this session and session preferences, media, full screen, and we're gonna use this as an extension here. I'm actually gonna switch to three screens here. All right, so this is how I actually see things on my desktop. I'm sitting here and I see my three monitors. Now I'll show you how you can do all three monitors. This works really well. This is an impressive feature. So we're gonna hit okay. And what we did was, just so you're clear, we want to use full screen across all of them. So peer at VM, use full screen and use the desktop extension for two or more physical displays. That's an important part. If not, it just kind of stretches one screen across and it's not what we want. We do this, takes a second to launch. And now we have all three displays working at once. And each display supports snap to it, realizes the edge of my monitors. It understands where each one is. So I can run this environment totally like this. Like I have, don't see my desktop at all. It's full screened. It's fully, you know, all the applications work. Everything works here. I can open up all the different tools. I can drag them across all three of my monitors and it's just a session. So it's actually kind of interesting because instead of, I've debated if I want to upgrade my computer or just like I said, put a faster server in the background and it ports everything right to here. So my server, my particular desktop doesn't have to be as fast. I can have access to a really fast system in the back and start and stop these sessions. And of course, if I, if you do leave a session open with triple monitors, it jumbles everything back to one monitor if you attach later with only one monitor at FYI, that will happen. But it's really, this is such a slick system. I'm gonna go ahead and look out and go back to how I record and where you go. Like I said, once again with the Parrot VM, you notice it didn't prompt me for password. It's because I have password authentication turned off but SSH keys turn on for each of these. So go ahead and play with X to go. It's free. It's open source. Oh, one last demo is the windows showing you that the same exact example will work in windows. So here's the X to go client running inside of windows and it looks the same. It works the same. I don't have SSH keys set up in windows here. Let's go ahead and connect to a session and there we respond to session. I do notice and I don't know if it's my virtual machine but it does take slightly longer but not much to launch in windows. It could be, I don't have any real subjective testing I did, but it works. Here's those documents here. We can open up that test document that we had even though we don't launch as an application still available in this particular session because it's saved to the computer. The other thing that works but it doesn't work as well as probably private is the published applications work a little bit different in windows is the way they render. Terminate that for the new session. We'll open up Kaden live, flip to it. Oh, by the way, if you try to drag because this is being rendered, if you try to drag clips in a Kaden live like from your desktop, whether you're in Linux or Windows it doesn't work because it's being rendered. It just doesn't let you drag an icon into it. It just does that. Oh, is anyone's wondering? This is where I noticed the rendering issue. I switched back to the hand and here's this and it should be a hand icon. It's decided to stick with the scissors icon but everything else still works and once again, I can start this session, resume this session, start it in windows, resume it in Linux if I wanted because once I kick off the session, it works. But it does, like I said, it allows you to run Linux applications to the side of windows, we'll render them inside of windows via the X to go. So, another slick use case for it, pretty cool. So that's it for X to go. It's an excellent system. It's open source. It's easy to install. It has options for all kinds of different. I mean, it supports Debbie and Fedora, Gen2, Red Hat. So it's broad levels of support. It did not try it, but it does seem to have support for setting it up on a Raspberry Pi, which I thought was kind of cool. It seems like it'd be a little slow for that, but you can. That's an option on there. So even Raspberry Pi's are supported on here. I'll leave links to the X to go, but obviously it's easy to find and good luck, have fun with it. Thanks. Thanks for watching. If you like this video, give it a thumbs up. If you want to subscribe to this channel to see more content, hit that subscribe button and the bell icon and maybe YouTube will send you a notice when we post. If you want to hire us for a project that you've seen or discussed in this video, head over to laurancesystems.com where we offer both business IT services and consulting services and are excited to help you with whatever project you want to throw at us. Also, if you want to carry on the discussion further, head over to forums.laurancesystems.com where we can keep the conversation going. And if you want to help the channel out in other ways, we offer affiliate links below which offer discounts for you and a small cut for us that does help fund this channel. And once again, thanks again for watching this video and see you on next time.