• 0 Posts
  • 26 Comments
Joined 10 months ago
cake
Cake day: September 8th, 2023

help-circle

  • My process for project identification has been:

    1. Be annoyed at ads/payment structure/whatever in some app or service
    2. Search https://alternativeto.net/ for alternatives to the thing I’m annoyed with (filtering by Open Source and my devices)
    3. Try out 1-2 of the top alternatives
    4. Settle on what service I want to run
    5. Install, route the subdomain, etc. if necessary (otherwise just access via my tailnet)

    As for how to deploy, docker / podman are great! With podman I’d recommend looking into their systemd integrations too. Incus is a neat LXC option too, meant more for longer term services (less micro service focused, good and bad).

    Hope this helps!


  • Haha I’ve had a journey to get here, all because I have a 12th gen Framework.

    Initially I got Debian Sid working but ran into power management issues with the module system. I switched over to arch and loved that for a while but frankly I was too careless and kept breaking my system. The way I use Arch it wasn’t a stable daily driver. Then I switched over to NixOS and loved it, but I bricked 3 of 4 ports with a firmware update (again me being careless). Graciously, Framework helped me fix the issue.

    After all of that I decided to go with a distro that is officially supported by Framework. Between Ubuntu and Fedora I choose Fedora since they don’t have ads for Ubuntu Pro :) I also like SELinux by default and wanted to broaden my horizons


  • I tried Debian + Nix once upon a time too. Honestly flatpaks and containers did everything I needed and more, and every dev team I’ve been on already has familiarity with the container workflow.

    I’m a huge fan of Debian and Nix, don’t get me wrong, but it was shy of perfect for my use case. Glad it works for you though! I’ve been using Fedora + Nix home-manager with flakes for almost two years and I don’t think I’ll ever go back









  • You make a great point. I really shouldn’t contribute to the boogeyman-ification of port forwarding.

    I certainly agree there is nothing inherently wrong or dangerous with port forwarding in and of itself. It’s like saying a hammer is bad. Not true in the slightest! A newbie swinging it around like there’s no tomorrow might smack their fingers a few times, but that’s no fault of hammer :)

    Port forwarding is a tool, and is great/necessary for many jobs. For my use case I love that Wireguard offers a great alternative that: completes my goal, forces the use of keys, and makes it easy to do so.



  • I’ll assume you mean what I mean when I say I want to be safe with my self hosting – that is, “safe” but also easily accessible enough that my friends/family don’t balk the first time they try to log in or reset their password. There are all kinds of strategies you can use to protect your data, but I’ll cover the few that I find to be reasonable.

    1. Port Forwarding – as someone mentioned already, port forwarding raw internet traffic to a server is probably a bad idea based on the information given. Especially since it isn’t strictly necessary.

    2. Consumer Grade Tunnel Services – I’m sure there are others, but cloudflare tunnels can be a safer option of exposing a service to the public internet.

    3. Personal VPN (my pick) – if your number of users is small, it may be easiest to set up a private VPN. This has the added benefit of making things like PiHole available to all of your devices wherever you go. Popular options include Tailscale (easiest, but relies on trusting Tailscale) or Wireguard/OpenVPN (bare bones with excellent documentation). I think there are similar options to tailscale through NordVPN (and probably others), where it “magically” handles connecting your devices but then you face a ~5 device limit.

    With Wireguard or OpenVPN you may ask: “How do I do that without opening a port? You just said that was a bad idea!” Well, the best way that I have come up with is to use a VPS (providers include Digital Ocean, Linode to name a few) where you typically get a public IP address for free (as in free beer). You still have a public port open in your virtual private network, but it’s an acceptable risk (in my mind, for my threat model) given it’s on a machine that you don’t own or care about. You can wipe that VPS machine any time you want, the cost is time.

    It’s all a trade-off. You can go to much further lengths than I’ve described here to be “safer” but this is the threshold that I’ve found to be easy and Good Enough for Me™.

    If I were starting over I would start with Tailscale and work up from there. There are many many good options and only you can decide which one is best for your situation!


  • It’s definitely a skill that I haven’t mastered either! That being said I think it’s one of the pillars of being a bonafide “super user” and I’d like to set there one day :)

    Maybe I’ll take inspiration from this post and write something up about what I learn in the future about manpages.

    Cheers and happy tinkering!


  • Thanks for putting this out for public benefit! I haven’t messed around with MacOS much but the things you’ve mentioned are nice to know.

    I believe that’s a shell/bash standard variable, but I need to learn where it came from and how it works

    You may know this already, but I’ve found the man (as in manual) utility to be one of the most useful things in GNU/Linux user space. I don’t have much insight into ‘${file##*/}’ off the cuff, but I can tell you there’s manual entries for file, sh, and bash that may help you track it down.

    # simply type man [some-command]
    man file
    man sh
    man bash
    man man # very useful for getting started!
    

    Manpages are local to your system so they’re extremely fast to pull up and searchable!

    Here’s some online info on man if you’re interested:

    (30 sec read) Unix stack exchange tips & tricks

    (5 min read) It’s FOSS writeup



  • Ah! I think I see the confusion.

    # /etc/subuid
    privatenoob:100000:65536
    

    This denotes the range of subuids that are available to your user.

    -u 100000:65536

    This part specifies two things ([UID]:[GID]) even though it’s the same syntax as the earlier part that specifies one range :)

    I suspect what you will want to do is use the following:

    # change ownership of the directory to the UID:GID that matches something in your subuid:subgid range, in this case 10000:10000
    podman unshare chown -R 100000:10000 /home/privatenoob/media/storage1/Filmek/
    

    Then we can specify that the user in the container can match the user (UID) we specified above:

    ExecStart=podman run --name=radarr -u 10000:10000 -p 7878:7878 -v radarr-config:/config -v /home/privatenoob/media/storage1/Filmek:/data --restart unless-stopped lscr.io/linuxserver/radarr:latest
    

    As a note, if you copy/pasted that ExecStart line, you might have gotten the invalid argument error because you entered 100000 (outside of your subuid range, i.e. >65536) instead of 10000.

    There’s a nice guide that gives a great walkthrough. I’ll dig through my bookmarks and add it here when I get some time.

    Hope this helps!


  • There are a few ways around it. The simplest is to add the --privileged option.

    The more secure method with podman is by specifying a user (ex -u 10001:10001) from your extended subuid:subgid range after your full and proper setup of rootless podman :-)

    Then instead of chown you’ll want to use the oddly named podman unshare tool to automatically set the permissions of the host directory. You would then want to start your service with systemctl --user instead of sudo systemctl