feat(nfs): support multiple configurable NFS shares with folder/network/read_only options
This commit is contained in:
32
nfs/run.sh
32
nfs/run.sh
@@ -1,17 +1,37 @@
|
||||
#!/usr/bin/env bashio
|
||||
|
||||
# Read config
|
||||
NETWORK=$(bashio::config 'allowed_network')
|
||||
# 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
|
||||
|
||||
# Setup exports
|
||||
bashio::log.info "Exporting /media folder to ${NETWORK}..."
|
||||
echo "/media ${NETWORK}(rw,sync,no_subtree_check,no_root_squash)" > /etc/exports
|
||||
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
|
||||
@@ -24,4 +44,4 @@ rpc.statd &
|
||||
rpc.nfsd
|
||||
|
||||
# Start rpc.mountd in the foreground to keep the container running
|
||||
exec rpc.mountd --no-udp -F
|
||||
exec rpc.mountd --no-udp -F
|
||||
|
||||
Reference in New Issue
Block a user