this post was submitted on 13 Nov 2024
148 points (96.2% liked)

Selfhosted

40173 readers
595 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

I never could get Nix working but maybe someone will

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 13 hours ago (1 children)

Is this made by the same guy who does hyprland?

[–] [email protected] 5 points 13 hours ago (1 children)

@semperverus @possiblylinux127 No, this other person has a working 'e' key on their keyboard.

[–] [email protected] 1 points 6 hours ago

Eh what its hyprspace. The title is incorrect but the link says hypr

[–] [email protected] 28 points 1 day ago* (last edited 1 day ago) (1 children)

Wireguard is p2p.

EDIT: I guess the point is it's doing peer discovery without static public IPs or DNS. Pretty cool!

[–] [email protected] 8 points 1 day ago* (last edited 1 day ago) (1 children)

Or port forwarding. You have to open a udp port for wireguard

[–] [email protected] 1 points 18 hours ago (1 children)

Technically you can nat punch with wire guard

[–] [email protected] 4 points 18 hours ago (1 children)

How do I learn this power? Don't you still need at least one server exposed?

[–] [email protected] 1 points 14 hours ago

Afaik you need some external resource to coordinate the punch. The STUN protocol is purpose built for this, and both clients need to be able to reach a STUN server to coordinate which port and public IP they'll try to connect to each other on. I assume this does something similar but with p2p network tech instead of a STUN server.

[–] [email protected] 11 points 1 day ago (2 children)

YAML?? (╯°□°)╯︵ ┻━┻)

[–] [email protected] 22 points 23 hours ago* (last edited 23 hours ago) (3 children)
what:
  is:
  your:
    - problem
    - with:
      YAML
# At least you can have comments unlike in json. Who need comments in a config file anyway.
[–] [email protected] 1 points 3 hours ago

Hey did you know that any JSON file is also a valid YAML file? I bet you'll love YAML a lot more now that you have this information

[–] [email protected] 8 points 20 hours ago (1 children)

Nothing too major about how it's usually used, but the yaml spec does allow arbitrary code execution when parsing a file and relies on the parser to have that feature disabled: https://en.m.wikipedia.org/wiki/YAML#Security

That's why for python, yaml.save_load() is a thing. That's fine for your local config files and may even be a feature for you, but it shouldn't be used to exchange information between services.

[–] [email protected] 7 points 20 hours ago (2 children)

My general view is similar, yaml is better if it should be written by humans, json is better if it should be written and read only by a machine. but hyprspace uses json for configuration, so I don't really understand cellardoor's comment

[–] [email protected] 1 points 43 minutes ago

Xml has entered the chat

[–] [email protected] 4 points 20 hours ago

Yeah I agree. Although recently I've become partial to toml... In the end I'll use what's common in the ecosystem I'm developing in

[–] [email protected] 9 points 23 hours ago

Toml is superior to all.

[–] [email protected] 4 points 18 hours ago

Careful. The yaml cult will come after you in a long and formless column, and only self destruct when one of them is a step too far to the left.

[–] [email protected] 21 points 1 day ago (2 children)

Interesting, it's on AUR, I will try it.

So it doesn't need any port forwarding, and works on CGNAT? How the "NAT hole punching" works? Both clients connect to something on IPFS?

Afaik, for DHT with torrent, clients need to know at least one tracker, what is the "tracker" here? Something on IPFS? Who am I sending my IP addresses?

How much overhead does this add to speed? I love with Wireguard, that it's barely noticeable, really close to p2p speeds, OpenVPN was awful in this regard.

[–] [email protected] 1 points 5 hours ago

The PKGBUILD looks like it is just building via go. I'm not sure how you would configure it without Nix. I'll try building it.

[–] [email protected] 9 points 1 day ago* (last edited 1 day ago) (1 children)

First off great find. I didn't think to check the AUR. I personally wouldn't use it as that version is 3 years out of date but its existence means that it might be entirely possible to get a non Nix version. I'm not sure I fully understand why it needs Nix OS but what do I know.

It is all libp2p magic

There have been lots if talks on libp2p and Nat traversal. I suggest you check them out. How it actually works is pretty complex and requires someone more knowledgeable than me to explain. One way it works is that both devices start a TCP connection at the same time which gets the proper ports to open up.

[–] [email protected] 11 points 1 day ago* (last edited 23 hours ago)

AUR packages ending with"-git" or "-svn" always pull the latest commit from source. The version number means that was the last time the packager had to change something on the PKGBUILD script, not the actual version which would be installed.

Where should I look? Where were these talks? I'm interested.

Edit: I found the whitepaper about hole punching: https://research.protocol.ai/publications/decentralized-hole-punching/

It says it connects to a "Hole Punch Coordination (DCUtR - Direct Connection Upgrade through Relay)". So for NAT traversal to work, you need a third party, this relay. As I expected. I guess you can self host this, but than you could just host a wireguard server. I guess if you are on a locked down network where you cannot connect to any relay (e.g. how the Chinese Great Firewall works technically they could block it) you can't initiate a connection behind a NAT.

Nonetheless it seems interesting, but no magic here. Maybe the big difference that the relay servers are distributed, so no central authority to block easily.

[–] [email protected] 2 points 21 hours ago (1 children)
[–] [email protected] 1 points 15 hours ago (1 children)
[–] [email protected] 1 points 27 minutes ago

What are some key differences?

[–] [email protected] 4 points 1 day ago

This reminds me of nebula although nebula does require a central server to coordinate hosts.

[–] [email protected] 1 points 1 day ago* (last edited 23 hours ago) (2 children)

What about Tailscale? I know it's Proprietary software, but still.

[–] [email protected] 10 points 1 day ago (4 children)

Tailscale... is not that good. The underlying wireguard is robust, but tailscale control plane is completely proprietary, as well as their DERP servers that it too often uses completely needlessly. They can also block you off from downloading it, updating, or logging in, if you happen to be in a wrong country.

I'm myself looking for an alternative to it, but having trouble finding something I could share with non tech savvy friends while not being as complex on my end as, say, open/strongswan ais. Any suggestions welcome.

[–] [email protected] 1 points 4 minutes ago* (last edited 3 minutes ago)

Headscale worked for me, but I get the non-tech saavy friends part doesn't quite jive with it as a solution.

Still, anyone wanna ditch Tailscale and only use it for hosting sites across proxies? Headscale is great.

[–] [email protected] 3 points 14 hours ago

Have you considered having Headscale on a cheap VPS? We are actually doing that and it is pretty capable. IIRC, you can configure not to use the tailscale servers at all, and use your own public VPS for coordination. Bonus point, tailscale hired the Headscale developer and maintainer, and they are allowed to work on Headscale while on their payroll. The team looks very much into FOSS.

[–] [email protected] 5 points 1 day ago

I use zerotier personally

[–] [email protected] 10 points 1 day ago

Tailscale is actually a lot more open than you think. The agents are all foss and there is a self hostable version.

load more comments
view more: next ›