I want to start using Linux but I am not sure how to get started. I just want to set it up a server for my mvies and such. Maybe I am starting too big. I don’t know. I use to think I was moderately good at computers but I feel left behind. Just looking fro advice on my first build.

  • Alphane Moon@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    15 days ago

    Go with Raspberry Pi and install a distro called DietPi (it’s based on Debian).

    You can run a whole bunch of useful service (Pi-hole, NAS, Media server and much more) on your local network.

    It’s aimed at headless usage, so you get a chance to learn about Linux commands and OS structure. That being said Diet-Pi has a whole suite of easy to use command line “applets” to configure everything.

    They also have an active forum and I’ve even been able to submit some (minor) UX improvements.

  • hperrin@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    15 days ago

    Installing Linux is super easy. Just set up a boot USB stick, then boot to it and follow the instructions. Make sure there’s no data on the computer you need, cause you’ll be reformatting the drive.

    Then start by learning Docker and Docker Compose. Watch some YouTube tutorials. Docker will make everything easier for you. Docker Compose is like magic.

    You should also learn how to use your firewall. UFW is easy to set up and use, but whatever comes on your OS natively, if it has one, should be fine.

    If you want to set up a RAID, use something that is self-healing, like btrfs.

    The more comfortable you get with the terminal, the better time you’ll have. Learn all the little programs, like ls, cat, grep, nano, tar, ps, df, du, dd, find, etc. Learn how to read Man Pages because they will help you a lot.

    Don’t be afraid to try things out. If you’re worried you’ll hurt something on your real server, try it out in a virtual machine.

    Compartmentalize everything with Docker. The only server running on your bare metal should be your SSH server, and maybe an administration service like Cockpit. Everything else can be reverse proxied with something like NPM (Nginx Proxy Manager). And of course, run that in Docker Compose too. That would listen on ports 80 and 443, and everything else would get its own port that only NPM connects to.

    As for the OS, I’d recommend Fedora, but really any of the big distros should work fine for you. The nice thing about Docker is that you don’t need to worry about the environment for your services. It runs almost everything virtually, so as long as Docker runs on your OS, everything should run fine (given there’s an image for whatever architecture you’re running, X86 or ARM).

    If you want a domain name, you can set up something like Cloudflare with ddclient to point to your IP address even if it changes. You can read more about Dynamic DNS to learn how to set it up with whatever registrar you have if you’ve already got a domain name. You don’t need ddclient if you’ve got a static IP from your ISP.

    Then for encryption, you can set up Let’s Encrypt certificates. They can be set up and renewed automatically with Nginx Proxy Manager.

    If you’re not yet familiar with it, learn how to set up a reserved IP address on your router for your server. That way DHCP will always give it the same IP address. Then you can forward ports to your server so you can access it from outside. I’d recommend against forwarding your SSH port, and instead use an OpenVPN server (there’s a Docker image for it) to connect to your internal network remotely.

    If everything is behind NPM, you can use different subdomains for your different services. You use a wildcard SSL certificate, and assign each host to whatever port you configured your service to in its Docker Compose file. So, you might have an Immich server listening on port 8100, and a Jellyfin server listening on port 8101. Then, you can set up reverse proxy hosts in NPM for immich.yourdomain.com pointing to http://localhost:8100/ and jellyfin.yourdomain.com pointing to http://localhost:8101/.

    I hope that helps. Good luck and have fun! :)

  • just_another_person@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    15 days ago

    What I always tell junior devs that want to get familiar:

    1. Find a use-case. Don’t just use it because you have FOMO
    2. Run a desktop environment as your daily driver when you can. You’ll learn a lot.
    3. Try installing packages first, and after you’re comfortable with that, try building a project you intend to use from scratch. It’s a get primer, and gives a ton of context of how software development works along with the dependency chains with the operating environment.
    4. Don’t take a GUI as the “easy route” in spite of non-GUI sokutions. Get familiar with what makes the software run, and customize accordingly.
  • deadcatbounce@reddthat.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    15 days ago

    I think you’re starting too big, to use your phrase.

    Get used to the basics first: what’s different (to whatever you’re running now), what’s the same. They Linux distributions almost all have GUIs (KDE, GNOME are the main ones but there are many others).

    Run a live USB version from a usb stick to get used to it until you have the confidence to install it on an old pc. Personally I do not recommend dual booting; data gets lost that way. Install it on an old pc and learn how to restore your backups to a Linux filesystem (not the fs of what you’re used to on Linux platform). I write that because you said that want to end up with a Linux server.

    Choose one of the top few from distrowatch.com/

    Your aim is to understand what’s going on under neither the GUI; how permissions work.


    I started by installing a VoIP product into a VM on Windows 2000, but there are better ways now.

    Good luck. You shouldn’t find it that difficult.