So I have a Synology server that I have a good deal of experience with, so this post will be through that lens.
What I'd like to do is set up a Raspberry Pi exclusively for pirating. So Qbittorrent and Proton VPN to get started, later Radarr, Lidarr, etc. I don't think I'll have a problem getting the Pi up and running, but I'd like to run it like my server, tucked away somewhere without a monitor or peripherals.
How do I access it? For my Synology box, I just put in a browser the local ip port 5000 and I have a whole desktop right there. But when I google about how I'd access a Pi, everything points to using SSH. I know a lot of people have Pis set up like this and surely they can't be administering the whole thing through CLI, right? How do I get a similar setup to my Synology such that I can just get a desktop interface in a browser?
Since fin has already provided a decent answer, I'll just say never underestimate how much some people do with CLI. For those who've memorised every command they need CLI is quicker than a high DPI setting and a twitchy wrist on a mouse.
NGINX Proxy Manager running behind tailscale for accessing your services easier (can go into greater detail on this)
SSH for anything else
IMO, trying to avoid CLI in server administration is doing yourself a long term disservice. Its not that challenging and you'll learn a lot more about how everything works. Plus, you're pretty much not going to be able to avoid the terminal forever.
Yeah, I'm not trying to avoid terminal completely, just for the day to day tasks I'm gonna use it for. But someone in another thread pointed out that most things, after they're set up have a front end GUI, like your portainer example. I can get comfortable with such a situation.
Like others have said, running a DE with remote capabilities will be a lot of overhead.
If you set up portainer and watchtower using ssh, you can pretty much just manage everything from portainer while watchtower makes sure that portainer and the rest of your containers stay updated. It's a very hands-off operation, especially if you set up auto updates on top of that for the pi OS. You'll probably just have to ssh in periodically to run a system upgrade and maybe restart to update the kernel.
Not sure if you getting mentioned in the post gives you a notification, but just wanted to drop the link here! Hope it helps, I tried to make the walkthrough pretty basic while still keeping it high level where it matters (like I assume anyone attempting this is familiar enough with selfhosting that they can install a docker container without me walking through the entire process)
To answer your question more specifically, most people set up the pi with docker, using services which have a front end accessible in the browser. They basically use their browser to navigate to the front end of the service they want to use and administer it like that. For instance portainer to manage their docker containers, or pihole for managing their firewall, or even jellyfin for their media which is both the website to consume the media and has an administrator dashboard.
Edit: this is in complement to using something like tailscale which basically allows you to access these services away from home. They work in conjunction.
noVNC follows the standard VNC protocol, but unlike other VNC clients it does require WebSockets support. Many servers include support (e.g. x11vnc/libvncserver, QEMU, and MobileVNC), but for the others you need to use a WebSockets to TCP socket proxy.
This is gibberish to me. Is this something I can set up in Ubuntu which is what I'm planning to run on the Pi?
I have a Raspberry Pi myself, and after the initial setup there's not much maintenance needed. it just works as expected. the services hosted on it have their own respective Web Pages or APIs or mobile apps, depending on the service.
note that installing additional software to access your Pi will take up system resources like memory, storage, and bandwidth. So take that into consideration, and how much the other services consume.
And what about when a service stops or crashes and you can't access through the app or front end? Or updates, either for the OS itself and for all of the services it's running? Do you SSH in every time you need to do any of that?
I think it's running Raspberrian. I wanted something Debian based, and thought the official image will do (it does).
Specifically on my Pi, I've set it up in such a way that even if it loses power or internet, I won't need to do anything for it to be back up.
But I did have lottts of problems on my VPS. programs crashed, Out Of Memory crashed the OS... really, no shortage of errors. And I had service there I used all the time like music.
So what I did is use Termux on my phone. this way I could SSH to it from anywhere. Just click the button, run a few commands and be back on with my day. It's the most convenient way I've found. being able to do it from my phone on the go.
And since it's CLI it was much easier to do. Just run the command needed and leave.
If you want I can elaborate on what Termux is and how I used it here.
I know a lot of people have Pis set up like this and surely they can't be administering the whole thing through CLI, right?
We are, indeed. I use a combination of SSH (for quick stuff), and Ansible for stuff I need to do repeatedly.
How do I get a similar setup to my Synology such that I can just get a desktop interface in a browser?
The tool you're looking for is a ’VNC' solution. There's lots of them, and the best ones are free.
You can enable VNC on your Raspberry Pi through Raspi-Config. You'll also need a VNC client on each device you want to connect from. Fin linked one above, I think.
And now some un- requested advice from me:
You mention running Ubuntu on the Raspberry Pi.
If you choose Ubuntu, I believe you will encounter many recipes online that will not work, because Ubuntu does not come with various Raspberry Pi specific tools pre-installed, such as raspi-config.
Raspbian and Ubuntu are extremely similar (this is intentional).
But I have found:
Many Raspberry Pi recipes will not work on Ubuntu, because Ubuntu does not include Pi specific software that is included in Raspbian.
Most Ubuntu recipes work perfectly on Raspbian.
I think the Raspbian software can be added on top of Ubuntu, but I've never cared enough about the minor differences to even try.
The Ubuntu recipes I have found that don't work on Raspbian also don't work on Pi hardware at all, until I compile additional tools from source code. (A Raspberry Pi uses an ARM chip, which is cool, but makes it harder install some software that doesn't support it.)
So I'm afraid it might not run on anything else. The other stuff I want to run, Qbittorrent and eventually the *arrs, will probably run on anything. And it looks like I'll probably need Docker anyway. So the real constraint right now driving the OS choice is Proton.
Makes sense. I suspect it may still not work due to Proton likely being compiled for Intel, rather than ARM chips.
If you run into that, you may be able to work around it by logging into the Raspberry Pi, cloning the source code and installing: (if you're able to get that to work, it'll likely work equally well on Ubuntu or Raspbian). But it's not for the faint of heart, they (Proton) don't include many details, so it looks like there will be a lot of learning about their tool chain.
https://github.com/ProtonVPN/proton-vpn-gtk-app#installation
(Edit: Since ProtonVPN is Python based, it may be fine, as long as there's not too much C in the project. If it works immediately, my gut feeling is it will also work fine on Raspbian, if you need to switch for any other reasons.)
Since Jellyfin, qbitTorrent-nox and the arr-suite are available as docker containers, you could try one of the many docker web UIs. I never used one of them since I'm happy with my one file docker compose configuration, so I can't recommend one.
You could use either VNC or RDP to access your computer remotely through the GUI. I'd recommend RDP because it's more secure. You should also enable SSH just in case something goes wrong with the GUI connection or something.