1
 
 

Hello everyone! Mods here 😊

Tell us, what services do you selfhost? Extra points for selfhosted hardware infrastructure.

Feel free to take it as a chance to present yourself to the community!

🦎

2
 
 

What setups/softwares do you use to secure your server?

All I do is run the process as user with no login shell.

The topic came to mind after reading this post Is Authelia enough without fail2ban or crowdsec?

3
 
 

Podman is no longer supporting iptables so I am trying to learn how to set up nftables in its place. It's been a struggle to get it to work properly. I can not ping my own server after starting the nftables rules. I am using Alpine Linux v2.24.1 and nftables v1.1.6 (Commodore Bullmoose #7).

nftables has a config file with basic rules which include receiving pings:
/etc/nftables.nft

#!/usr/sbin/nft -f
# vim: set ts=4 sw=4:
# You can find examples in /usr/share/nftables/.

# Clear all prior state
flush ruleset

# Basic IPv4/IPv6 stateful firewall for server/workstation.
table inet filter {
	chain input {
		type filter hook input priority 0; policy drop;

		iifname lo accept \
		comment "Accept any localhost traffic"

		ct state { established, related } accept \
		comment "Accept traffic originated from us"

		ct state invalid drop \
		comment "Drop invalid connections"

		tcp dport 113 reject with icmpx type port-unreachable \
		comment "Reject AUTH to make it fail fast"

		# ICMPv4

		ip protocol icmp icmp type {
			echo-reply,  # type 0
			destination-unreachable,  # type 3
			echo-request,  # type 8
			time-exceeded,  # type 11
			parameter-problem,  # type 12
		} accept \
		comment "Accept ICMP"

		# ICMPv6

		icmpv6 type {
			destination-unreachable,  # type 1
			packet-too-big,  # type 2
			time-exceeded,  # type 3
			parameter-problem,  # type 4
			echo-request,  # type 128
			echo-reply,  # type 129
		} accept \
		comment "Accept basic IPv6 functionality"

		icmpv6 type {
			nd-router-solicit,  # type 133
			nd-router-advert,  # type 134
			nd-neighbor-solicit,  # type 135
			nd-neighbor-advert,  # type 136
		} ip6 hoplimit 255 accept \
		comment "Allow IPv6 SLAAC"

		icmpv6 type {
			mld-listener-query,  # type 130
			mld-listener-report,  # type 131
			mld-listener-reduction,  # type 132
			mld2-listener-report,  # type 143
		} ip6 saddr fe80::/10 accept \
		comment "Allow IPv6 multicast listener discovery on link-local"

		ip6 saddr fe80::/10 udp sport 547 udp dport 546 accept \
		comment "Accept DHCPv6 replies from IPv6 link-local addresses"
	}

	chain forward {
		type filter hook forward priority 0; policy drop;
	}

	chain output {
		type filter hook output priority 0; policy accept;
	}
}

# The state of stateful objects saved on the nftables service stop.
include "/var/lib/nftables/*.nft"

# Rules
include "/etc/nftables.d/*.nft"

I also have a small config file:
/etc/nftables.d/firewall.nft

#!/usr/sbin/nft -f

define WIREGUARD_PORT = 51820
define WIREGUARD_ADDRESS = 10.0.0.0/24
define SSH_PORT = 5025
define SSH_ADDRESSES = { $WIREGUARD_ADDRESS . $SSH_PORT, 192.168.40.204 . $SSH_PORT }
define PUBLIC_PORTS = { 5050 }

table inet filter {
	chain input {
		udp dport $WIREGUARD_PORT accept \
		comment "Accept WireGuard connections"

		ip saddr . tcp dport $SSH_ADDRESSES accept \
		comment "Accept SSH connections from known devices or WireGuard"

		tcp dport $PUBLIC_PORTS accept \
		comment "Accept public connections"
	}
}

After loading the new rules, I get the following output while listing the ruleset:

21:23 server-pi:~ $ doas nft list ruleset
table inet filter {
	chain input {
		type filter hook input priority filter; policy drop;
		iifname "lo" accept comment "Accept any localhost traffic"
		ct state { established, related } accept comment "Accept traffic originated from us"
		ct state invalid drop comment "Drop invalid connections"
		tcp dport 113 reject comment "Reject AUTH to make it fail fast"
		ip protocol icmp icmp type { echo-reply, destination-unreachable, echo-request, time-exceeded, parameter-problem } accept comment "Accept ICMP"
		icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, echo-request, echo-reply } accept comment "Accept basic IPv6 functionality"
		icmpv6 type { nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } ip6 hoplimit 255 accept comment "Allow IPv6 SLAAC"
		icmpv6 type { mld-listener-query, mld-listener-report, mld-listener-done, mld2-listener-report } ip6 saddr fe80::/10 accept comment "Allow IPv6 multicast listener discovery on link-local"
		ip6 saddr fe80::/10 udp sport 547 udp dport 546 accept comment "Accept DHCPv6 replies from IPv6 link-local addresses"
		udp dport 51820 accept comment "Accept WireGuard connections"
		ip saddr . tcp dport { 10.0.0.0/24 . 5025, 192.168.40.204 . 5025 } accept comment "Accept SSH connections from known devices or WireGuard"
		tcp dport 5050 accept comment "Accept public connections"
	}

	chain forward {
		type filter hook forward priority filter; policy drop;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}
21:23 server-pi:~ $ doas netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      3515/rootlessport   
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      3584/rootlessport   
tcp        0      0 0.0.0.0:5025            0.0.0.0:*               LISTEN      3743/sshd: /usr/sbi 
tcp6       0      0 :::5025                 :::*                    LISTEN      3743/sshd: /usr/sbi 
tcp6       0      0 :::5050                 :::*                    LISTEN      3515/rootlessport   
udp        0      0 0.0.0.0:51820           0.0.0.0:*                           -                   
udp6       0      0 :::51820                :::*                                -                   
21:23 server-pi:~ $ 

I can connect perfectly fine with SSH, WireGuard and my reverse proxy on port 5050 but if I ping the server I don't get any response at all. Pings worked as normal when I was using iptables so I am not sure what I am doing wrong with nftables. I've tried to keep the rules as simple as possible to figure out what is happening but I have not been able to make any progress. Any help would be appreciated.

4
 
 

cross-posted from: https://discuss.online/post/45517222

Over the last year I've been customizing my applications like Castopod and Dokuwiki, in order to make them easier to navigate by my users. I'm trying to build a sustainable setup where upgrades don't break things I've manually customized in a text editor and I don't waste hours reapplying changes. I'd rather invest time in doing it right this time.

This is my first time managing a self-hosted wiki long-term, so I want to establish good practices early... before I start telling everyone to join up. I also intend to share my findings with the larger Dokuwiki and Castopod projects, because I can see where I could submit some pull requests eventually.

Thanks for any advice!

5
 
 

I have everything I host and expose behind authelia (which requires 2fa) as middleware or as the only login method with oicd, thus far it seems to work well, of course I get a bunch of malicious traffic and spam but this gets to authelia and stops there, I don't even see multiple tried login tries ever so I felt pretty safe. However it does seem that everyone uses either fail2ban or crowdsec in addition so I have been wondering if it would really add any security in my setup or if I'm missing something. I'm sure it wouldn't hurt but crowdsec always seemed a little too complex for me and I don't want something I don't fully understand in my security layer and I never saw a nice way to setup fail2ban so never bothered. Afaik there's no webui or such things and you have to manually make working regex for everything. I'd like to know if I'm missing something or if anyone has tipps to give

6
 
 
A screenshot of an email from Crowdsec saying they blocked 137k bots last week
7
 
 

Purely a hypothetical for me; I don't have the means for a VPS or that many files. But in the future, if I'd want to use the 3-2-1 rule with a VPS subscription, what sort of software would I need to ensure that my files can't be accessed on the VPS and need off-site decryption keys? What kind of setup would allow you to access said files from a different device if the decryption keys are stored locally on it? People who've done something similar, how has that gone for you?

8
 
 

I've now managed to get the stream of my HiWatch Series, model HWI- T641H-Z 2.8-12 mm by accessing via browser to rtsp://USERNAME:PASSWORD@192.168.30.50:554/Streaming/Channels/101. Working nice. But on its own, very unusful unless I get storage and image detection going. So, I need something like Frigate.

I believe the Frigate docs suggest running in a docker container installed on a VM. Very convienient as I have Proxmox (installed on a optiples 7070 micropc with 32MB ram) running a VM on which i have a few containers. The idea is to mount a "frigate" dataset created on my Truenas server on Proxmox which is then mounted to the VM. Lots of layers but hoping it should be ok.

I heard that the Google Coral TPU is not sold anymore. Is this going to be a problem for Frigate image recognition? Are there alternatives to the Coral TPU?

9
 
 

I've seen so many 10" servers that look amazing from the front and very polished, but then having a rats nest of cables and a mess at the back.

After 62 iterations and many 3D prints, blood, sweat, profanity and tears. I my design and implementation is finally done. image
I used Hexagons where possible, because as you know, Hexagons are the bestagons

This is Before:
image

And the After:
image
The ducky adds 200MHz

The front of my mini-rack is actually still somewhat of a mess, I thought I'd focus on the back first.

I've published it in excruciating detail on my GitHub Leave a Star if you like what you see.

I self host a bunch of stuff on here to get away from Big-Tech, and because I find it fun. For a lot more details see https://erasmus.works/

It always bothered me the the fronts of racs are modular, but not the backs, this solves that
If you have any questions feel free to ask, hopefully this helps other clear up their rats nests.

10
 
 

It was way easier than I thought it would be to get started. I put Sparky Linux on an 18 year old laptop and moved a bunch of movies and shows over to it, got Tailscale squared away, and now I can watch my media ANY WHERE IN THE WORLD. The only problem is storage. Jellyfin doesn't recognize my external drive for some reason and says the path is invalid. Is there a simple solution I'm missing?

Also I'm just stoked I was able to do this. I know I just followed a recipe, but it's a pretty cool feeling having all my music and shows right there, and I don't have to pay some middle man one red can't to access media I already own.

11
 
 

Portainer is changing to a mostly AI and kubernetes supported app.

12
13
 
 

Cliparr 2.0 is out now

What is Cliparr?

Cliparr is a browser-based, simplified video editor with a single purpose: to create and export clips from Plex, Jellyfin, and local video.

What's new?

Check the blog post for the full breakdown, but the biggest change is the new canvas-based timeline editor.

While adding support for editable subtitles, I discovered the timeline component we were using was highly inefficient. Also, no other free or open-source timeline editors existed.

So... we now also have https://canvastimeline.com/ which is a new open-source headless video editor for JavaScript.

Canvas Timeline allows us to load and render literally hundreds of clips without any performance issues.

Also new:

  • Subtitle editor
  • Export size estimation
  • Mobile UI updates
  • Maintenance automations

Aside: When making the Export Size Estimator, it made sense to also release a fully in-browser video converter: https://cliparr.dev/convert/



AI Disclosure:

Implementation - Generated Testing - Generated Documentation - Assisted Review - Assisted Deployment - Assisted

14
 
 

As I start to host more and more services on my home server, my family and friends are interested in using some of the services I host as well. Up to now, all of my services have been internal-only, and my wife and I just use Tailscale to access everything. Getting others set up with tailscale isn’t an issue, but I can only have up to 4 other users before I have to pay to add more, and I have more than 4 people I would like to have access to some of the things I host.

Right now I’m using cloudflare tunnels to make some services available externally. I’m behind CGNAT, so I’m forced to use something like tunnels or similar. I’ve always read that if you are going to open things up externally to use a reverse proxy (which I use internally), but does this still apply with cloudflare tunnels? What else should I be looking at to make sure I have everything secured properly?

15
submitted 4 days ago* (last edited 1 day ago) by to c/selfhosted@lemmy.world
 
 

This is not strictly self-hosted per se, but I am looking for your guidance.

I am standing up a wiki. I want it to use available FOSS wiki frameworks, all our self-hosted loving things.

However: the probably of this becoming a moderately trafficked page are high. So I also need to consider scale (cloudflare, captcha, auth, do I use Vercel? etc.), light-weightness (this is a Wiki but not too massive), and all that jazz. This is also someone who won't like alt-wikis and is a very layman, mainstream audience. So "wikipedia but SEO friendly/article style" is also a plus. It will be less deeply linked than Wikipedia across pages, but is still a repository for info that will be revisited for its different components for a long time.

People with experience spinning up or hosting trafficked wiki pages: what do I do?

Thanks gang.

EDIT: So many great replies here to triage. Thanks everyone. I'll keep you posted!

16
 
 

I was considering something new from supermicro, but I decided to go considering grade for a change, as I mainly just need single threaded performance from this one.

My only requirement was rack mount, so I went for a Ryzen 5 build inside a rack mount chassis from Inter-Tech. My first build combining these two worlds.

I'm gonna miss IPMI, though.

17
 
 

I pay for the Nabu Casa subscription for remote access to Home Assistant. Mostly as a way to give them money for a great service, but it's convenient and felt pretty secure. It should be the only remote way into Home Assistant. About an hour ago I got a login attempt notice that an IP was trying to access API/config. The IP is in some bad IP databases. What I found interesting was that the log shows an AI bot. A Google Gemini bot specifically. Makes me worry that AI is going to make yet another aspect of life frustrating and unfun.

18
 
 

Time to find a new VPS host.

19
 
 

> Mullenweg is the founder of Automattic, the company that owns WordPress, Tumblr, Pocket Casts, and a host of other popular internet brands and pieces of software. Mullenweg has faced several controversies over his management of the company in recent years.

> On a company-wide Slack this morning, Automattic CEO Matt Mullenweg announced he has been put on a paid leave of absence. [...] He continued, writing that Mark Davies, current Automattic Chief Financial Officer, has “conspired” with Automattic Board of Directors members Ann Dunwoody, Toni Schneider, and Sue Decker “behind my back and they voted to put me on a paid leave of absence. I voted against that.”

20
 
 

I'm looking at dusting off my motion setup. It was an old setup to monitor what my pets are doing in the house with a webcam.

However, I need cameras outside to monitor my gardens and the webcams are not really usefull for that (for one, the're not waterproof and USB cams)

I try to look for stand alone cameras, but can't find a good test of them. (probably user error) Any tips on good, safe, cameras for outside? (pref poe, wifi when it can't be avoided, not battery powered)

Thanks in advance

21
 
 

I built Versentry to scratch my own itch: I run Docker across several self-hosted boxes and wanted to know when images have updates - without anything auto-pulling or restarting my containers behind my back.

Before that, I used WUD, but at the time Versentry was created, it didn’t have a proxy for Telegram notifications, which was the impetus. As a result, I ended up with a micro‑service that fully meets my needs.

What it does: reads running containers from the local Docker socket, compares their tags and digests against OCI registries, and sends a notification when something's newer. It never pulls images or touches containers. That's the whole point - notify-only by design.

A few things that set it apart:

  • Central tag-filter rules in config (regex by image repo), so you're not forced to label every container. Per-container versentry.include labels also work if you prefer them.
  • Built-in proxy (SOCKS5/HTTP) for notifier delivery and registry traffic - handy behind network restrictions.
  • Any OCI registry - Docker Hub, GHCR, Quay, GitLab out of the box; private/self-hosted via type: oci.
  • Notifiers: stdout, Telegram, Discord, Gotify, ntfy, and a generic webhook.
  • Readable notifications out of the box - sensible default messages, no template-wrangling required; Go text/template overrides are there if you want to customize.
  • semver/numeric detection (cross-major updates get flagged) plus digest comparison for floating tags like latest.
  • Tiny ~5 MB scratch-based image, MIT licensed.

It's probably not for you if you need: a web UI (try WUD), automatic pull-and-restart (that's Watchtower's job), non-Docker providers like Kubernetes/Podman (Diun covers more), or Slack/email as first-class notifiers.

It's a young project - fewer battle-tested deployments than the established tools - so I'd genuinely welcome feedback from anyone who runs it.

GitHub: https://github.com/BlackRaincoat/versentry

AI Disclosure:

  • Design - Pair
  • Implementation - Generated
  • Testing - Assisted
  • Documentation - Generated
  • Review - Assisted
  • Deployment - Generated

Note: The idea, the architecture decisions, and all real-world testing were mine - I ran it across multiple live servers and that's what caught the actual bugs. The AI wrote the implementation, the test code, docs, and CI config from my prompts. I reviewed behavior on real deployments rather than reading every line, so code-level review leaned on the AI.

22
 
 

As my kids want their own rooms in the future I’ll need to downsize a bit. Is there a list for recommended 10” Equipment? Any help appreciated. My research so far turned always in the direction of get rack bars and a 3D printer ( or shops selling the 3d prints)

23
 
 

I had the following issue: Stremio would open normally and even load subtitles but would not load videos at all in Linux Mint 22.3. Other people on github have had the same issue.

You can revert to an older version like 1.1.4. by downloading it from the offical Github of the stremio linux shell. You can then install the flatpak by going into your downloads and typing the following commands into terminal:

cd ~/Downloads

flatpak install com.stremio.Stremio.Devel.flatpak

You then should stop the app from auto-updating with:

flatpak mask com.stremio.Stremio

I hope this helps anyone in my situation, I'm fairly new to using Linux and it took me some time. Also can you edit text on Lemmy to be in code block?

24
submitted 1 week ago* (last edited 3 days ago) by to c/selfhosted@lemmy.world
 
 

I have a minipc with proxmox on it. I have tried caddy in a lxc to set up DNS challenges to my owned domain and I set the url in my router to point to the IP (for example, proxmox.DOMAIN.com could be 192.168.10.22). The hope was to have everything local within my house and nothing needs the internet to be accessed. Some services I can host in proxmox NEED https to use, which I could not get working with my own certs or ones proxmox could make, thus Caddy. However, I get proxmox with a proper cert, but i cannot get any of the other services from proxmox working. If I were doing it all manually, I would expect DNS issues with the domain, but from what I understand, Caddy by default does wildcard domains which should mean that my services should work. but they do not. Networking is new to me so perhaps I am missing something obvious. Any guidance would be appreciated.

EDIT: You guys helped me find my issue! Turns out that I did everything right except for 1 simple step. Once I have everything set up, I have my router point the urls to the CADDY address, not the services address. For example, I had bookmarks.DOMAIN.com set in my router to point at the readeck lxc ip and it didn't work. Changing that to the Caddy ip fixed it. So all my services would point to the same ip (caddy). I do not know how I never saw this in any of the tutorials/videos/guides I checked, but THANK YOU for pointing it out to me.
Now the only odd thing is why does the proxmox ip work fine without pointing to caddy? I will leave it as is, but its the odd one out :/

25
view more: next ›