• 0 Posts
  • 17 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!








  • 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!


  • 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