I'm syncoiding from my normal RAIDz2 to a backup mirror made of 2 disks. I looked at zpool iostat
and I noticed that one of the disks consistently shows less than half the write IOPS of the other:
capacity operations bandwidth
pool alloc free read write read write
------------------------------------ ----- ----- ----- ----- ----- -----
storage-volume-backup 5.03T 11.3T 0 867 0 330M
mirror-0 5.03T 11.3T 0 867 0 330M
wwn-0x5000c500e8736faf - - 0 212 0 164M
wwn-0x5000c500e8737337 - - 0 654 0 165M
This is also evident in iostat
:
f/s f_await aqu-sz %util Device
0.00 0.00 3.48 46.2% sda
0.00 0.00 8.10 99.7% sdb
The difference is also evident in the temperatures of the disks. The busier disk is 4 degrees warmer than the other. The disks are identical on paper and bought at the same time.
Is this behaviour expected?
Is there any service that will speak LDAP but just respond with the local UNIX users?
Right now I have good management for local UNIX users but every service wants to do its own auth. This means that it is a pain of remembering different passwords, configuring passwords on setting up a new service and whatnot.
I noticed that a lot of services support LDAP auth, but I don't want to make my UNIX user accounts depend on LDAP for simplicity. So I was wondering if there was some sort of shim that will talk the LDAP protocol but just do authentication against the regular user database (PAM).
The closest I have seen is the services.openldap.declarativeContents
NixOS option which I can probably use by transforming my regular UNIX settings into an LDAP config at build time, but I was wondering if there was anything simpler.
(Related note: I really wish that services would let you specify the user via HTTP header, then I could just manage auth at the reverse-proxy without worrying about bugs in the service)
This is a decent writeup on applying "Zero Tust" principles to a home lab using mostly open source tools. I'm not the author, but thought it was worth sharing.
I'm looking at getting a gateway device to replace the ISP router that sits between the internet connection and the mesh WiFi.
I am running pi-hole on a (very old) raspberry pi, but I know some gateways get quite fancy so I'm wondering if it's possible to have pi-hole on the gateway itself, to run as DNS and DHCP servers?
Other things I'm looking for in a gateway are VPN as a client (preferably Wireguard) and PoE ports for cameras.
If it's possible to host something like pi-hole directly on the gateway then hardware recommendations are appreciated!
Hi there self-hosted community.
I hope it's not out of line to cross post this type of question, but I thought that people here might also have some unique advice on this topic. I'm not sure if cross posting immediately after the first post is against lemmy-ediquet or not.
cross-posted from: https://lemmy.zip/post/22291879
I was curious if anyone has any advice on the following:
I have a home server that is always accessed by my main computer for various reasons. I would love to make it so that my locally hosted Gitea could run actions to build local forks of certain applications, and then, on success, trigger Flatpak to build my local fork(s) of certain programs once a month and host those applications (for local use only) on my home server for other computers on my home network to install. I'm thinking mostly like development branches of certain applications, experimental applications, and miscellaneous GUI applications that I've made but infrequently update and want a runnable instance available in case I redo it.
Anybody have any advice or ideas on how to achieve this? Is there a way to make a flatpak repository via a docker image that tries to build certain flatpak repositories on request via a local network? Additionally, if that isn't a known thing, does anyone have any experience hosting flatpak repositories on a local-network server? Or is there a good reason to not do this?
This seems like a solid choice for those of use looking for a obsidian-like replacement. Personally tried all editors out there, but nothing is able to defeat my love for obsidian. However, i look forwards to trying out Haptic when it comes to Linux. Currently it only supports Web and Mac. But state Linux and Windows support is on-the-way.
Kudos to selfh.st that provides consistent updates within this community and who shared this among other cool projects this week -> https://selfh.st/newsletter/2024-09-06/?ref=this-week-in-self-hosted-newsletter
Hi!
I have setup ScanServJS which is an awesome web page that access your scanner and let you scan and download the scanned pages from your self hosted web server. I have the scanner configured via sane locally on the server and now I can scan via web from whatever device (phone, laptop, tablet, whatever) with the same consistent web interface for everyone. No need to configure drivers anywhere else.
I want to do the same with printing. On my server, the printer is already configured using CUPS, and I can print from Linux laptops via shared cups printer. But that require a setup anyway, and while I could make it work for phones and tablets, I want to avoid that
I would like to setup a nice web page, like for the scanner, where the users no matter the device they use, can upload files and print them. Without installing nor configuring anything on their devices.
Is there anything that I can self-host to this end?
Looking for recommendations for a versatile USB stick with Ventoy. I'm trying to create the "perfect, all-in-all" USB stick using Ventoy to store various ISOs and rescue tools. So far, I have the following ISOs:
- Arch
- OpenSuse TW
- NixOS
- Bazzite + AuroraDX
- Win10 ISO
- Clonezilla
I'm looking for suggestions on additional ISOs or tools that are compatible with Ventoy. What do you recommend adding to make my USB stick to make it more useful?
So we're starting a general contractor company and i I'm wondering if anyone else did that and had general advice? Its with someone else that is not really technology savy.
Currently we're using:
- WordPress for website
- OpenProject for project related task
- InvoiceNinja for invoice purposes
Any advice and comments would be appreciated!
So, I'm selfhosting immich, the issue is we tend to take a lot of pictures of the same scene/thing to later pick the best, and well, we can have 5~10 photos which are basically duplicates but not quite.
Some duplicate finding programs put those images at 95% or more similarity.
I'm wondering if there's any way, probably at file system level, for the same images to be compressed together.
Maybe deduplication?
Have any of you guys handled a similar situation?
I'd like to get to a docker swarm sort of situation where I have 3 identical docker VMs, running 3 identical Caddy configurations, with 3 identical Apache VMs, and requests load balanced across them. And then I want a shared filesystem so the users can upload the files for their web sites to one location, and it's made available to all the web front ends.
I'm currently in a mixed environment:
-
#xcpng on bare metal
-
FreeBSD VMs running important services (bastions, email, DNS)
-
#AlpineLinux VMs running docker for all my container-based stuff
So I'm trying to do the shared, highly available FS part of this design and I'd stay with FreeBSD if I could. #selfhosted
I've been playing around with self hosting for file sharing, backups, and a handful of other ideas I might one day get round to. I like the idea of a mesh VPN and being able to, for example, connect a travelling laptop to a 'host' laptop nearby, though my only public ip is a VPS in another country.
Of all the options I found, I liked the look of Nebula most. Fiddly in some places, but it's working nicely for me, and I appreciate some of the simplicity of design.
I'm wondering if people here have much experience of it, though? My biggest concern is over its future. With,
- The Defined Networking site focusing on making money off it, and
- The Android app doesn't allow full configuration (including the firewall, so I can't host a website from a phone) but - I heard - does if you use Defined Networking's paid service for configuration,
makes me worry they might be essentially trying to deprecate viable FOSS Nebula in favour of a paid or controlled service.
Any thoughts? Insight?
I have been trying to setup my own newsletter for ages.
All of the platforms that I researched asked for stupid amounts of money for the services they where offering.
20$/month for 500 subscribers is not fair pricing mailchimp.
So I looked around the web for selfhosted solutions. Finally I found Listmonk, it's a selfhosted newsletter and mailing list manager, written in go and is extremely performant.
So I wrote an article on how to set that up!
I hope this helps some fellow selfhosters!
If you have any feedback please feel free to comment it bellow.
So I have a retired but still very serviceable PC that I intend to use as my first home server. I gave two basic goals in self-hosting:
- Host family media through Jellyfin, etc. This would include tv, music, and possibly books as well. Many of these will be managed through the Arr apps.
- Degoogle my phone - I'm beginning by replacing Photos with Immich, but hope to also use Home Assistant, backup other phone data such as messages media, shopping lists, etc. I hope to replace Google storage/backup with Proton Drive.
So the question is what OS should I set up to run that? My proof of concept was an immich container running in xubuntu on an old laptop. I chose Xubuntu because I like the availability of documentation and community support for Ubuntu like distros, but wanted a lower powered alternative for the older device.
It seems to be working well, but I've had a few hiccups trying to update it, and I've heard that once you get into it, Linux distros like Ubuntu are not very user friendly for self-hosting as a beginner.
So is it better on the whole for a beginner to have a popular distro with lots if documentation and step by step guides, or to have a purpose-built OS like TrueNAS that might be more straightforward, but with less support?
I host a website that uses mTLS for authentication. I created a client cert and installed it in Firefox on Linux, and when I visit the site for the first time, Firefox asks me to choose my cert and then I'm able to visit the site (and every subsequent visit to the site is successful without having to select the cert each time). This is all good.
But when I install that client cert into GrapheneOS (settings -> encryption & credentials -> install a certificate -> vpn & app user certificate), no browser app seems to recognize that it exists at all. Visiting the website from Vanadium, Fennec, or Mull browsers all return "ERR_BAD_SSL_CLIENT_AUTH_CERT" errors.
Does anyone have experience successfully using an mTLS cert in GrapheneOS?
I've been hosting Alexandrite as my main web UI for Lemmy because Lemmy's own UI is a bit too basic for my tastes, but Alexandrite hasn't been updated in 7 months and is still missing features like setting a default comment sort type. Can anyone recommend an alternative with a similar look and feel? I use the "list" view on smaller resolutions and the "cards" view on my ultrawide
Hello,
I have a Nextcloud server installed at home that works well on my LAN network, but when I try to make the server accessible via a DynDNS service, I cannot connect to it. The request doesn't even reach my server. My question is whether the router immediately blocks the request, because when I set the router to be accessible (it has separately that option), I can connect without any issues over dyndns url. Could my ISP (O2) be blocking it? I can confirm that it's not a firewall issue, and it's also not because I'm connected to the same WiFi as the server. It's not a port forwarding issue either, as I've gone through all possible options. My router is a Fritzbox 6660, and there are no logs indicating that a request has even come through.
My second question is whether this is even allowed in Germany? Also, I've noticed that my ISP rarely changes my IP address; in fact, I haven't seen it change at all in the past few months, which is strange because in my home country, it changed every 24 hours.
Edit: First, thank you all for your help. I will try your suggestions over the course of this week or month (due to time-related issues :) and will report back with the results. Since I am clearly a noob when it comes to self-hosting and I plan to have only a Nextcloud server for personal use, what is the best way to secure the system in these situations and allow only certain devices to access it over the external network? (if I ever manage to access it at all)
I’ve been doing POSSE for a while now and it had helped me immensely by saving time and stress.
Basically every time I post something on a 3rd party site I store the content locally. Currently only in Obsidian and some locally cached videos and articles (TubeArchivist and Raindrop)
When I get dragged to the same argument or topic again, I can just grab my old comment, maybe edit/update it a bit and post it.
For some stuff I have longer blog posts I can link to, for some they are images and graphs.
I'm a beginner in networking things but due to my ISP I can only open a certain range of ports in my router to be accessible from the outside of my network (something like ports 11000-11500).
That means I can't open port 443 to access my reverse proxy from the outside. Is it possible to redirect all traffic that's coming from one of the ports in the range to port 443 of my server?
I haven't found that possibility in my router (Fritzbox 7530) so is there a way to do this on my server (running Fedora Server)?
While reading many of the blogs and posts here about self hosting, I notice that self hosters spend a lot of time searching for and migrating between VPS or backup hosting. Being a cheapskate, I have a raspberry pi with a large disk attached and leave it at a relative's house. I'll rsync my backup drive to it nightly. The problem is when something happens, I have to walk them through a reboot or do troubleshooting over the phone or worse, wait until a holiday when we all meet.
What would a solution look like for a bunch of random tech nerds who happen to live near each other to cross host each other's offsite backups? How would you secure it, support it or make it resilient to bad actors? Do you think it could work? What are the drawbacks?
Disclaimer: This is for folks who are running services on Windows machines and does not have more than one device. I am neither an expert at self hosting nor PowerShell. I curated most of this code by doing a lot of "Google-ing" and testing over the years. Feel free to correct any mistakes I have in the code.
Background
TLDR: Windows user needs an uptime monitoring solution
Whenever I searched for uptime monitoring apps, most of the ones that showed up were either hosted on Linux or containers and all I wanted was a a simple exe installation file for some app that will send me alerts when a service or the computer was down. Unfortunately, I couldn't find anything. If you know one, feel free to recommend them.
To get uptime monitoring on Windows, I had to turn to scripting along with a hosted solution (because you shouldn't host the monitoring service on the same device as where your apps are running in case the machine goes down). I searched and tested a lot of code to finally end up with the following.
Now, I have services running on both Windows and Linux and I use Uptime Kuma and the following code for monitoring. But, for people who are still on Windows and haven't made the jump to Linux/containers, you could use these scripts to monitor your services with the same device.
Solution
TLDR: A PowerShell script would check the services/processes/URLs/ports and ping the hosted solution to send out notification.
What I came up with is a PowerShell script that would run every 5 minutes (your preference) using Windows Task Scheduler to check if a Service/Process/URL/Port is up or down and send a ping to Healthchecks.io accordingly.
Prereqs
-
Sign up on healthchecks.io and create a project
-
Add integration to your favorite notification method (There are several options; I use Telegram)
-
Add a Check on Healthchecks.io for each of the service you want to monitor. Ex:
Radarr, Bazarr, Jellyfin
When creating the check, make sure to remember the Slug you used (custom or autogenerated) for that service.
-
Install latest version of PowerShell 7
-
Create a PowerShell file in your desired location. Ex:
healthcheck.ps1
in the C drive -
Go to project settings on Healthchecks.io, get the
Ping key
, and assign it to a variable in the scriptEx:
$HC= "https://hc-ping.com/<YOUR_PING_KEY>/"
The Ping key is used for pinging Healthchecks.io based on the status of the service.
Code
- There are two ways you can write the code: Either check one service or loop through a list.
Port
- To monitor a list of ports, we need to add them to the
Services.csv
file.The names of the services need to match the Slug you created earlier because, Healthchecks.io uses that to figure out which Check to ping.
Ex:
"Service", "Port"
"qbittorrent", "5656"
"radarr", "7878"
"sonarr", "8989"
"prowlarr", "9696"
- Then copy the following code to
healthcheck.ps1
:
Import-CSV C:\Services.csv | foreach{
Write-Output ""
Write-Output $($_.Service)
Write-Output "------------------------"
$RESPONSE = Test-Connection localhost -TcpPort $($_.Port)
if ($RESPONSE -eq "True") {
Write-Host "$($_.Service) is running"
curl $HC$($_.Service)
} else {
Write-Host "$($_.Service) is not running"
curl $HC$($_.Service)/fail
}
}
The script looks through the Services.csv file (Line 1) and check if each of those ports are listening (
$($_.Port)
on Line 5) and pings Healthchecks.io (Line 8 or 11) based on their status with their appropriate name ($($_.Service)
). If the port is not listening, it will ping the URL with a trailing/fail
(Line 11) to indicate it is down.
Service
-
The following code is to check if a service is running.
You can add more services on line 1 in comma separated values. Ex:
@("bazarr","flaresolverr")
This also needs to match the Slug.
$SERVICES = @("bazarr")
foreach($SERVICE in $SERVICES) {
Write-Output ""
Write-Output $SERVICE
Write-Output "------------------------"
$RESPONSE = Get-Service $SERVICE | Select-Object Status
if ($RESPONSE.Status -eq "Running") {
Write-Host "$SERVICE is running"
curl $HC$SERVICE
} else {
Write-Host "$SERVICE is not running"
curl $HC$SERVICE/fail
}
}
The script looks through the list of services (Line 1) and check if each of those are running (Line 6) and pings Healthchecks.io based on their status.
Process
-
The following code is to check if a process is running.
Line 1 needs to match their Slug
$PROCESSES = @("tautulli","jellyfin")
foreach($PROCESS in $PROCESSES) {
Write-Output ""
Write-Output $PROCESS
Write-Output "------------------------"
$RESPONSE = Get-Process -Name $PROCESS -ErrorAction SilentlyContinue
if ($RESPONSE -eq $null) {
# Write-Host "$PROCESS is not running"
curl $HC$PROCESS/fail
} else {
# Write-Host "$PROCESS is running"
curl $HC$PROCESS
}
}
URL
-
This can be used to check if a URL is responding.
Line 1 needs to match the Slug
$WEBSVC = "google"
$GOOGLE = "https://google.com"
Write-Output ""
Write-Output $WEBSVC
Write-Output "------------------------"
$RESPONSE = Invoke-WebRequest -URI $GOOGLE -SkipCertificateCheck
if ($RESPONSE.StatusCode -eq 200) {
# Write-Host "$WEBSVC is running"
curl $HC$WEBSVC
} else {
# Write-Host "$WEBSVC is not running"
curl $HC$WEBSVC/fail
}
Ping other machines
-
If you have more than one machine and you want to check their status with the Windows host, you can check it by pinging them
-
Here also I use a CSV file to list the machines. Make sure the server names matches their Slug
Ex:
"Server", "IP" "server2", "192.168.0.202" "server3", "192.168.0.203"
Import-CSV C:\Servers.csv | foreach{
Write-Output ""
Write-Output $($_.Server)
Write-Output "------------------------"
$RESPONSE = Test-Connection $($_.IP) -Count 1 | Select-Object Status
if ($RESPONSE.Status -eq "Success") {
# Write-Host "$($_.Server) is running"
curl $HC$($_.Server)
} else {
# Write-Host "$($_.Server) is not running"
curl $HC$($_.Server)/fail
}
}
Task Scheduler
For the script to execute in intervals, you need to create a scheduled task.
- Open Task Scheduler, navigate to the Library, and click on
Create Task
on the right - Give it a name. Ex:
Healthcheck
- Choose
Run whether user is logged on or not
- Choose
Hidden
if needed
- Choose
- On Triggers tab, click on New
- Choose
On a schedule
- Choose
One time
and select an older date than your current date - Select
Repeat task every
and choose the desired time and duration. Ex: 5 minutes indefinitely - Select
Enabled
- Choose
- On Actions tab, click on New
- Choose
Start a program
- Add the path to PowerShell 7 in Program:
"C:\Program Files\PowerShell\7\pwsh.exe"
- Point to the script in arguments:
-windowstyle hidden -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\healthcheck.ps1
- Choose
- Rest of the tabs, you can choose whatever is appropriate for you.
- Hit Ok/Apply and exit
Notification Method
Depending on the integration you chose, set it up using the Healthchecks docs.
I am using Telegram with the following configuration:
Name: Telegram
Execute on "down" events: POST https://api.telegram.org/bot<ID>/sendMessage
Request Body:
```
{
"chat_id": "<CHAT ID>",
"text": "🔴 $NAME is DOWN",
"parse_mode": "HTML",
"no_webpage": true
}
```
Request Headers: Content-Type: application/json
Execute on "up" events: POST https://api.telegram.org/bot<ID>/sendMessage
Request Body:
```
{
"chat_id": "<CHAT ID>",
"text": "🟢 $NAME is UP",
"parse_mode": "HTML",
"no_webpage": true
}
```
Request Headers: Content-Type: application/json
Closing
You can monitor up to 20 services for free. You can also selfhost Healthchecks instance (wouldn't recommend if you only have one machine).
I've been wanting to give something back to the community for a while. I hope this is useful to some of you. Please let me know if you have any questions or suggestions. Thank you for reading!
I feel that sometimes resolution of sub-domain.duckdns.org
and host.sub-domain.duckdns.org
fails with empty result or even timeout result. Tested resolution against Google and Cloudfare DNS servers.
Do you have a similar behaviour?
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!