Selfhosted
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:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
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.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
If you apply what is written at https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#cutthecraphowdoimakesurethatmyservicestartsafterthenetworkisreallyonline it will work.
Systemd-networkd has a learning curve, once you learn it you'll find it superior and more flexible than anything else.
Then I'll need to do a global rewrite of all distrubution delivered service files and replace network.target with network-online.target. Then I don't understand why maintainers all keep using network.target. For every service that needs some kund of netwirj active I alkready have iverrides to link then to the virtual or physical interfaces they actually use.
I still find it a solution desperately looking for a problem to solve. Yes, you can control loads of dependencies, but you could already do that with the init scripts. The main selling point on introduction was 'it is faster'. Why would you want something faster when you use it once every kernel update? When you design your solutions correctly (redundant), you won't even notice a reboot of 1 system in the setup.
Because most services are able to dynamically accommodate networking changes and act accordingly and it's rare to have cases where we really need a working link with addresses and a proper connection when the service starts. For those special cases, as described, you need to enable
systemd-networkd-wait-online.service
and includeAfter=network-online.target
and/orWants=network-online.target
in your service.Programs should be designed to detect and react to networking changes and both Apache and Nginx are good examples of software that does that. There are simpler cases like stuff that needs to bind to non-existent IPs at boot (before networking) that can be dealt with
ipv4.ip_nonlocal_bind
andnet.ipv6.ip_nonlocal_bind
as described here.This may also interest you as it includes what "up" means a few other details: https://systemd.io/NETWORK_ONLINE/
Systemd does a LOT more than "you can control loads of dependencies", it solves tons of painful issues and provides a cohesive ecosystem of tools to manage stuff like:
journalctl
as a unified interface so you can quickly browse them by specific, filters, timestamps and events.crontab
with something auditable that actually makes sense;machinectl
to manage them.Systemd is very useful and most people (including myself) don't know about half of the things it can do. It isn't teached because of the current poor state of thing when it comes to software development but if you use it you'll quickly find how to have systems running very well with less processes than conventionally.
You got me here... I'm now battling NetworkManager in scripting (alas, still no Ansible in place there, I doubt it'll be long before I have implemented it), the thing just refuses any configuration via files. Time to dive into the networkd setup. I also hope I can get rid of the very unstable ppoe and wide-dhcpv6-client setup I have here now via ifupdown2 on Debian. The restart I like as well. Time for a deep dive I guess. On Debian NM never caught on, thank $preferredDdiety, but at work it's a disaster.
https://github.com/systemd/systemd/issues/481
wide-dhcpv6-client
is easy, any systemd-networkd IPv6 guide will have what you need.I'll see what I can manage. Thanks for the pointers.
When I can manage simple ipv4 networking via networkd I'm already happy, as it means I can ditch NM again at work, that's giving me a lot more headaches then a flapping SLAAC that I'm not dependent on. (already switched back to my super stable tunnel) The situation here is a setup with 2 ipv6 tunnels, 1 ipv6 SLAAC, source based routing and no default gateway in main routing table for ipv6. Everything runs via the ipv4 pppoe connection. (and a load of vlans both sides of my router to internet)
Ahaha that’s gonna take a while to figure out. Good luck.
Btw, policy based routing: https://serverfault.com/questions/682462/how-to-do-policy-routing-with-systemd/877537#877537 and https://www.freedesktop.org/software/systemd/man/systemd.network.html#%5BRoutingPolicyRule%5D%20Section%20Options
Then I'll limit myself to the situation at work. ifupdown2 works great and doesn't need replacing at home.
Thanks, it was already a mess to figure out without systemd 'defaults' barging trough my settings. Maybe I;ll keep my personal setup as it is and only let systemd dat the interface names of the 2 physical interfaces and have the dependencies of services linked to the virtual device states. As long as I can ditch NetworkManager at work I'm totally happy.