Files
HomeAssistantAddons/nfs/run.sh

48 lines
1.4 KiB
Bash

#!/usr/bin/env bashio
# Build /etc/exports from configured shares
bashio::log.info "Configuring NFS exports..."
> /etc/exports
for index in $(bashio::config 'shares|keys[]'); do
FOLDER=$(bashio::config "shares[${index}].folder")
NETWORK=$(bashio::config "shares[${index}].allowed_network")
READ_ONLY=$(bashio::config "shares[${index}].read_only")
MOUNT_PATH="/${FOLDER}"
if bashio::var.true "${READ_ONLY}"; then
OPTIONS="ro,sync,no_subtree_check,no_root_squash"
else
OPTIONS="rw,sync,no_subtree_check,no_root_squash"
fi
bashio::log.info "Exporting ${MOUNT_PATH} to ${NETWORK} (${OPTIONS})..."
echo "${MOUNT_PATH} ${NETWORK}(${OPTIONS})" >> /etc/exports
done
cat /etc/exports
# Load NFS kernel module
bashio::log.info "Loading nfsd kernel module..."
modprobe nfsd 2>/dev/null || bashio::log.warning "nfsd module not available, assuming built-in..."
# Mount nfsd filesystem if not already mounted
if ! mountpoint -q /proc/fs/nfsd 2>/dev/null; then
bashio::log.info "Mounting nfsd filesystem..."
mount -t nfsd nfsd /proc/fs/nfsd || bashio::log.warning "Could not mount nfsd filesystem, it may be built-in..."
fi
# Start NFS services
bashio::log.info "Starting NFS services..."
rpcbind
exportfs -ra
# Start rpc.statd for file locking
rpc.statd &
# Start the NFS server kernel threads
rpc.nfsd
# Start rpc.mountd in the foreground to keep the container running
exec rpc.mountd --no-udp -F