Everything posted by Espressomatic
-
[Plugin] LXC Plugin
That much was also correct on my system. Even installing packages inside the container worked without issue. The only way I found the error was by copying in Unraid's (not the container's) shell and getting the no free space error. That led me to look at the Shares tab in Unraid where I saw the image I posted above. Like a simple check-box when creating the container to include Tailscale? The only issue I had with NPM was that it's only distributed for docker and I had no clue how to install it any other way - so I had to hunt for someone else's script. A baremetal download/install, download/compile/install or package download from an existing repo for the host OS would have been pretty straight-forward. I'm loving having the option of rolling out LXC as-needed on Unraid, even if I don't have immediate plans to install anything else yet.
-
[Plugin] LXC Plugin
I may have found an issue with the way the plugin creates its folder/share structure. Running Unraid 7.0.0beta2 When setting it up, I made sure to specify the lxc directory under my only pool (/mnt/nvme_pool/lxc/) instead of under user (/mnt/user/lxc). The pool is my only storage on this system. When I look at my shares, this is what I see: The lxc directory says it's on "array" which doesn't exist. It's the only share on any of my 4 systems that's ever shown up like this. Curious also it shows 0B for free space. Trying to copy anything from Unraid's command-line into the path of the sole Debian container I have set up doesn't work - says disk is full. But I'm not sure if that's a correct way to put content into the container anyway. UPDATE: I fixed the issue by toggling a change (change any setting and change it back) in the lxc plugin settings which re-enabled the "Apply" button. Pressing Apply then seems to have fixed the issue and the directory is correctly shown as "nvme_pool" along with correct free space.
-
[Plugin] LXC Plugin
NGINX Proxy Manager - Install on Debian 12 LXC This post is for reference, if in the future someone needs to get NPM installed in LXC on Unraid. Why: There's a perfectly good docker container in the CA store for NPM, however, by having it in LXC, other packages can easily be installed and maintained along side it. Like Tailscale. So... There's a popular script for Proxmox out there referenced in a number of guides which has dependencies preventing it from working. However, I found another one, that despite some output errors, seems to install everything correctly. The only things I've added have been some additional packages, mainly for testing and maintenance: dnsutils, nano, wget, resolveconf Originally the LXC didn't seem to be getting its nameserver set by DHCP, though it didn't seem to affect performance. I decidced to set my local DNS IP manually anyway, so installed resolveconf and added it in /etc/resolvconf/resolv.conf.d/head
-
Setting Up WireGuard® on Unraid
I set up Tailscale yesterday using your plugin without reading any guides, and it seems to be working with each of my systems - Unraid servers, Mac, iOS. I plan to hit up some guides and instructions next so I can make purposeful config changes. Is there a process for accessing all resources using original/local subnet/IPs (and FQDN)? I don't really have any desire to look at Tailscale's own IP assignments and would love for access to resources at home to be transparent, no matter where I am or what device I'm connecting from (as they are/were before Tailscale here at home)
-
[Script] Unassigned Devices Share Re-Mounter (SMB and NFS)
Updated to Version 1.1 - now using "ip" (FQDN) of the server instead of derived "short name" to check if it's online - in case MDNS doesn't resolve the server name without domain.tld Version 1.2 - ? Version 1.3 - Check for already-mounted share in /proc/mounts instead of using the mount command to prevent unnecessary syslog messages (and it's potentially safer) Version 1.4 - Simplified by combining previous duplicate code used for mounting SMB and NFS shares Version 1.5 - Simplified by combining more duplicate code - Get the custom "mountpoint" if the share has been renamed in UD UI - this fixes an error display on checking if a renamed share is already mounted Version 1.6 - Minor typo corrections to output text and comments, plus minor reformatting of comment blocks
-
Unassigned Devices - Managing Disk Drives and Remote Shares Outside of The Unraid Array
The problem isn't the delay, it's that mounting only happens once. I might have a system come up seconds or minutes behind another one, or it may be hours. And since the shares are crossed, not one-way, it can affect any of the systems - each of the four Unraid systems mounts one or more shares from each of the other three. Specifically, three systems each share out one volume and the other system (general-purpose NAS) shares out 5. Not Unraid-specific, but a similar situation exists on on my Mac, which mounts shares from all of the servers. I have a program (Automounter) running at all times that mounts any defined shares when their server(s) come online, as MacOS also doesn't have built-in automounting except at startup.
-
Unassigned Devices - Managing Disk Drives and Remote Shares Outside of The Unraid Array
I'll take a look. Having multiple machines, it wasn't just shares potentially going offline, but also not being available until well after the system (mounting them) has started. That could be less of an issue when everything's been up and steady for a long time, but while doing a lot of setup and configuration, I'm taking things down, rebooting, etc. quite often - any one or more of the 4 systems multiple times per day.
-
Unassigned Devices - Managing Disk Drives and Remote Shares Outside of The Unraid Array
I decided to tackle this myself with a script, linked below. Run the script every 5 minutes and never worry about shares being down nor delaying Unassigned Devices auto-mounting. Works with both SMB and NFS shares. No configuration needed - just add the script to User Scripts and set a custom schedule to run it every 5 (or other) minutes.
-
UD Addon: SMB Unremounter: unmount offline shares and remount them
If anyone needs a better working solution that handles mounting SMB and NFS, I've made a new script that works much faster. No unmounting as there's never a need for that. Run the script every 5 minutes and never worry about shares being down nor delaying Unassigned Devices automounting.
-
[Script] Unassigned Devices Share Re-Mounter (SMB and NFS)
Keep your UD shares up all the time. The script will mount any unmounted shares that have been set to "Automount" by Unassigned Devices. Add it to User Scripts and set a custom schedule to run it every n minutes. Remote shares set up in Unassigned Devices as Automount are only brought online when the system is first started. If the shares become unmounted for any reason, such as rebooting their server(s), they remain unavailble, potentially causing problems for apps/containers where they're referenced, such as Plex/Jellyfin, etc. This script checks which shares are currently unmounted, verifies the server is available, then uses Unassigned Devices own mount function to reactivate them. EDITED: version 1.6 (Feb 2 2025) #!/bin/bash ##================================================================================================ ## ## Unassigned Devices Share Re-Mounter - Espressomatic @Unraid Forums - 08 Aug 2024 - 2 Feb 2025 ## - inspired by Marc Gutt @Unraid Forums - 20 Nov 2020 ## version 1.6 ## ## Keep Unassigned Devices' "Automount" remote shares mounted ## ##================================================================================================ # # Info # ---- # # Tested on Unraid versions 6.12 and 7.0 # # Remote shares added to Unassigned Devices as Automount are only brought online when the system # is first started. If the shares become unmounted for any reason, such as rebooting their # server(s), they remain unavailble, potentially causing problems for apps/containers where # they're referenced, such as Plex/Jellyfin, etc. # # This script checks which shares are currently unmounted, verifies the server is available, # then uses Unassigned Devices own mount function to reactivate them. # # When scheduled as instructed below, the script will run every 5 minutues. # # # Installation # ------------ # # - Install "User Scripts" plugin on each Unraid Server that will run this script # # - Create a new script named "Re-Mount Unassigned Devices Remote Shares" # # - Click the gear icon next to the script, click Edit Description, select all the text and replace with # "Mount unmounted shares if they're set to Automount" - click the green check-mark icon # # - Click the gear icon, click Edit Script and Copy and Paste this script # into the editor - Click the Save Changes button # # - There is no need to edit nor make changes to the script # # - Click the Run Script button to test - shares are checked and mounted as needed # # - Click the Schedule button for the script and select a custom schedule # # - Paste "*/5 * * * *" into the text box to the right, excluding quotes # # - Click the Apply button at the bottom # ##================================================================================================ ## ##================================================================================================ ##------------------------------------------------------------------------------------------------ ## The Business - you shouldn't need to make edits below for typical use ##------------------------------------------------------------------------------------------------ ## Make script race condition safe # if [[ -d "/tmp/${0///}" ]] || ! mkdir "/tmp/${0///}"; then exit 1; fi; trap 'rmdir "/tmp/${0///}"' EXIT; ## Read Unassigned Devices mount list for remote shares (/tmp/unassigned.devices/config/samba_mount.cfg) # printf "\n\nStarting...\n\n" cat "/tmp/unassigned.devices/config/samba_mount.cfg" | while read line do ## Process a server entry when found ( lines starting with "[" ) # if [[ $line == [* ]];then check_server=$line ## Move to the next line - share protocol # read line ## Get the share type - SMB or NFS (needed later for mounting format) # if [[ $line == "protocol"* ]]; then share_type=$(cut -d'"' -f\2 <<<"$line") if [[ $share_type != "SMB" ]] && [[ $share_type != "NFS" ]]; then printf "Not NFS or SMB ... skipping\n\n" continue fi else printf "The server protocol wasn't read where expected ... skipping\n\n" continue fi ## Get the FQDN/ip of the server to later check if it's online # server_ip="" mountpoint="" read line if [[ $line == "ip"* ]]; then server_ip=$(cut -d'"' -f\2 <<<"$line") else printf "The server IP/FQDN wasn't read where expected ... skipping\n\n" continue fi ## Check Unassigned Devices Automount setting for each share # while read line do if [[ $line == "automount"* ]]; then break ## If the mount point has been renamed in the Unassigned Devices UI, take note of it # elif [[ $line == "mountpoint"* ]]; then mountpoint=$(cut -d'"' -f\2 <<<"$line") ## If a duplicate key is read before the automount, then stop the script # elif [[ $line == [* ]] || [[ $line == "protocol"* ]] || [[ $line == "ip"* ]]; then printf "The formatting of the samba_mount.cfg file isn't as expected ... aborting\n\n" printf "Please contact the developer or file a bug on the github repo.\n\n" exit fi done ##--------------------------------------------------------------------------------------------- ## If this is an Automount share, check its type and whether it needs to be re-mounted # if [[ $line == "automount"*"yes"* ]]; then ## Construct SMB Share Name/Path # if [[ $share_type == "SMB" ]]; then server_name=${check_server##*//} server_name=${server_name%/*} ## Construct NFS Share Name/Path # else server_name=${check_server##*[} server_name=${server_name%%:*} share_path=${check_server#*:} share_path=${share_path%]*} fi share_name=${check_server##*/} share_name=${share_name%%]*} ## If share has been renamed in Unassigned Devices UI, use that name instead of original source # if [[ $mountpoint == "" ]]; then mount_name="${server_name}_${share_name}" else mount_name="${mountpoint}" fi ## Construct mount path, SMB: "//SERVER/sharename" or NFS: "SERVER:/mnt/some_pool/sharename" # if [[ $share_type == "SMB" ]]; then mount_path="//${server_name}/${share_name}" else # NFS mount_path="${server_name}:${share_path}" fi ## Mount the share using constructed name & path if not mounted & server is online # if grep -qs "$mount_name" /proc/mounts; then printf "The $share_type share $mount_name is already mounted\n\n" check_server="" else ping -c 1 -W 1 $server_ip > /dev/null 2>&1 if [[ $? -eq 0 ]]; then printf "Mounting $share_type share $mount_path as ${mount_name} ... " /usr/bin/nice /var/local/overlay/usr/local/sbin/rc.unassigned mount "$mount_path" printf "\n" fi fi fi # ## End if Automount Share ##--------------------------------------------------------------------------------------------- fi done printf "\n...Finished\n\n" ##================================================================================================
-
Bonding 2 NICs will enhance my speed?
Bandwidth != speed Short answer to the OP: NO. You won't get any extra "speed" at all nor any extra bandwith. You will not be able to bond as your switch won't support it - unmanaged. Now for some pictures (in the mind) Imagine sending trucks down a single-lane road at 1 giga-kilometer per hour. Now imagine sending trucks down a 2 or 3-lane road at 1 giga-kilometer per hour. The speed is still 1 gkm, but you're moving 3 trucks across the same distance at the same time. Now imagine that in the back of every truck are your packets. Some trucks might be full, some might be empty, some might be half full, etc. Maybe only 1 is ever full and the parallel ones are always empty. Same speed, more bandwidth CAPACITY, but not necessarily any additional throughput. Such a bond is to lessen the potential of a bottleneck when your server is moving a lot of data to/from multiple clients. If you bond as fail-over, all of this is moot and it's just a single lane like always. And literally everything from end to end has to support the bonding - your clients don't need bonded interfaces, but need to connect to a switch that supports the bond before the server. A managed switch with the correct bond support is the most important part, IMO.
-
UD Addon: SMB Unremounter: unmount offline shares and remount them
This works below Applied the suggestions made by dlandon Commented out the unmounting - I have no use for it Replaced the web page access with shell command from Unassigned Devices run from RAM Changed the variables so this actually works. I have no idea if UD or Mount produce totally different output today versus 2020, but there's no chance whatsoever that the original code works today. #!/bin/bash # ##################################### # Script: SMB Unremounter # Description: Automatically unmounts SMB shares which went offline and remounts them if host is available again. # Author: Marc Gutt # # Changelog: # 0.1 # - first release # 0.2 # - Espressomatic: Made it work # # ######### Settings ################## timeout_seconds=1 # ##################################### # # ######### Script #################### # make script race condition safe if [[ -d "/tmp/${0///}" ]] || ! mkdir "/tmp/${0///}"; then exit 1; fi; trap 'rmdir "/tmp/${0///}"' EXIT; # auto unmount offline smb shares #while read line; do # smb_server=$(echo $line | grep -oP '^//.*?/') # smb_server=${smb_server:2:-1} # smb_share=$(echo $line | grep -oP '^//.*? on ') # smb_share=${smb_share:0:-4} # timeout $timeout_seconds ping -c 1 $smb_server # if [[ $? -eq 124 ]]; then # echo "Automatically unmount offline $smb_share" # #/sbin/umount -tfl cifs $smb_share # else # echo "$smb_share is online" # fi #done < <(mount -t cifs) # auto mount smb shares next_server="" while read line || [ -n "$line" ]; do if [[ -n "${next_server}" ]]; then # check if it is an SMB server if [[ $line == "protocol"* ]]; then if [[ $line != *"SMB"* ]]; then echo "Non-SMB Server $next_server skipped" next_server="" continue else echo "$next_server is an SMB share" fi fi # check automount setting if [[ $line == "automount"* ]]; then if [[ $line == *"yes"* ]]; then smb_server=$(echo $next_server | grep -oP '//.*?/') smb_server=${smb_server:2:-1} smb_share=$(echo $next_server | grep -oP '//.*?\]') smb_share=${smb_share:0:-1} smb_share=$(echo $smb_share | awk -F/ '{print $NF}') full_share="${smb_server}_${smb_share}" echo "Auto mounting of $smb_share is enabled" # check if share is already mounted if mount -t cifs | grep -q "$full_share"; then echo "$smb_share is already mounted" next_server="" continue fi # check if server is online timeout $timeout_seconds ping -c 1 $smb_server if [[ $? -eq 0 ]]; then echo "Automatically mounting //${smb_server}/${smb_share}" /usr/bin/nice /var/local/overlay/usr/local/sbin/rc.unassigned mount "//${smb_server}/${smb_share}" else echo "$smb_server is offline" fi fi next_server="" fi continue fi next_server=$(echo $line | grep -oP '^\[//.*?\]') done < <(cat "/tmp/unassigned.devices/config/samba_mount.cfg")
-
Home Assistant VM (HAOS) can't be shut down from within HA nor from Unraid VM UI
Sonofa! Good call. I have it installed but thought I also had it disabled - the plugin page says "stopped," but checking the Settings page I can see it's active. Sure enough the VM starting option was on and turning it off solved the shut-down issue. The plugin itself was a lifesaver when I was running a USB Zigbee stick, as it had the same VID/PID as my Z-Wave stick. Zigbee stick has been replaced with a PoE device, but I keep the plugin anyway to give the Z-Wave stick a nicer display name in HA's device list. Unrelated, but something odd, is that I just received an email notification about the reply to this thread today, and have never received any kind of notification here in the forum. 🤷🏻♂️
-
CaddyV2 Docker Issue
The docker template is a disaster FFS.
-
Unassigned Devices - Managing Disk Drives and Remote Shares Outside of The Unraid Array
Is there a possibility we can get an an option for "Retry every xxx (seconds/minutes)" for mounting remote shares? I have multiple Unraid systems, each mounting one or more of each-other's shares and it's difficult, if not impossible, to get them all to have automatically mounted shares even after specifying delays. The systems don't all go down or come up at the same time. I might need to spin one or more down and then back up at random times. A power failure might cause them all to shut down, and startup times are very different on each of them. Etc.
-
[Plugin] CA Fix Common Problems
Request: Is it possible to get a page-fold feature added to hide ignored issues? 2/3 of the entire rendered page is ignored issues. Issues: The Plex slave shares issue is duplicated - two identical entries. I have 3 shares done like this in the Plex docker config. I'd expect the issue to show 3 entries, but only 1 ideally since they're all the same. The second NIC is bonded to the first and in fail-over mode on one system. On a second system the second NIC is disabled/shut-down and not on the network. Monitoring and re-scan made the NIC items disappear - they were left-overs from initial setup. Oddity: Also odd that everything except "multiple nics" is always repeated twice in two sections. The repeated nics comes up as expected, only shown in the bottom "all ignored"
-
More Icons.
User Scripts plugin or the script "cp" line added to your go file Script "Install Custom VM Icons" - set to launch "At First Array Start Only" Script contents: #!/bin/bash cp /mnt/user/YOUR_SHARE_NAME/vm_icons/*.png /usr/local/emhttp/plugins/dynamix.vm.manager/templates/images Edit the script to replace "YOUR_SHARE_NAME" with a valid share/path Drop your custom icons as PNG24 into the vm_icons folder wherever you've stored it The single row icon list in the VM editor is a bug and fixed in the next beta update. Here's a pfSense icon I made for my firewall VM on a dedicated system
-
Authentik: How to Install with Docker and Why You Should
I've yet to have any of Ibracorp's dockers and video instructions "just work" - why should this be any different. 👌
-
External authentication for WebUI
I've got no idea how this needs to be implemented, but if it were possible to sign-on with one of the above-mentioned auth services, then be able to access secure dockers without authenticating again, that would be fantastic. I've already got plans to roll out Authentik or at the very least Authelia on my systems to complement the reverse proxy and secure transport.
-
What is your go-to HDD manufacturer?
How about those Conner and Rodime drives?
-
[Plugin] CA Fix Common Problems
Looks like it's back! Must be a typo or similar issue in the plugin again, as it shows up regardless of Unraid version on each of my systems (4x 7.0 beta 2 here)
-
Unraid turns 19
Hmm, it turns out I've only been running Unraid for a little over 5 years - it feels longer. That means I had a big rackmount 3U sitting around here for over a year before spinning up Unraid 24/7 on it. No worries though, I'm trying to make up for the time in volume. Currently sitting at 4 licenses and a fifth will be activated before the year's done. That's half way to OEM volume. A little bird whispered that it may be bad luck to have an odd number of licenses, so I should probably come up with a reason to get a sixth. Header images from the 5 machines. Backup Server not online yet.
-
QEMU Command Line form not saved - no effect
Still can't get it to work. I'm in a hurry, about to head out the door, but the whole format (according to that link) seems completely obnoxious. Mainly because of the butchered XML - and the fact they're not using a nice structure of keys and values. Ugh... Ugly. But here's what I'd been trying to do, finally working: <qemu:commandline> <qemu:arg value='-boot'/> <qemu:arg value='menu=on,splash-time=5000'/> </qemu:commandline>
-
QEMU Command Line form not saved - no effect
Thanks for the heads up! Kind of thought the UI would create the XML based on what I typed into that box - sort of like every other form element on the page. If the box were pre-populated with <qemu:commandline> </qemu:commandline> then it would be instantly obvious what needed to be done.
-
Simple File Sharing app with Mac Finder Mounting options
You're not going to want to hear this but... VPN. But but but... Make it easy and seamless. Netbird. Go free, use their management service (coordinator), just use an agent on every machine that will be part of that VPN mesh. It should be very transparent for your wife's device where she doesn't have to remember to do any configuration when using it - or not using it. Setting this up for my wife and kids right now for similar reason, also to access file share and photos.