New HAOS App - NFS Server

NFS Server (Ganesha) App

I’ve created a Home Assistant App (formally add-on) that provides an NFS server using nfs-ganesha. This allows you to mount your Home Assistant config, media, ssl etc folders via NFS to your desktop machine in the same way the Samba App allows you to mount the folders via a windows share.

Originally created to meet my own requirements, I’ve been using it for a few weeks now and it seems to work well. So I thought I would publish it in case others could make use of it.

Important Security Fix. v1.2.0 contains a fix for a bug whereby all exports were ReadWrite to everyone, regardless of the authorised IPs configured. Any existing users are encouraged to update to v1.2.0

Features

  • Select which HA folders to export
  • IP-based access control
  • NFSv4 support only
  • Full read-write access

Installation

Add Repository

Or add manually: GitHub - sam-ward/nfs-ganesha-addon · GitHub

Documentation

Full documentation: nfs-ganesha-addon/nfs-ganesha/DOCS.md at main · sam-ward/nfs-ganesha-addon · GitHub

Feedback and contributions welcome!

4 Likes

Hi

Thanks a lot for the share, at least possible to get rid of that crap Samba share :smiley:
Will install and report how it goes as soon as I have fixed my HAOS problem of impossible updates :wink:

Vincèn

Awesomesauce!

Would it be possible to use the apps recommended base images (filter for Debian) instead of vanilla bookworm? Also maybe switch to trixie since this ia the current release version.

Thank you!

I can give it a go. This is the first time i’ve tried creating an add-on/app, so its all new for me. What would switching the base image give me over the vanilla bookworm though?

Check the base images repo for more details: GitHub - home-assistant/docker-base: Home Assistant base images

All other addons I have installed are based on HA base images, but you might be right and don’t need the extra stuff (s6, jq, bashio) they put on top of the vanilla flavor.

It probably doesn’t add much as the whole thing starts up with a relatively simple shell script, but I’ll have a look at migrating if nothing else for consistency.

1 Like

Decided to switch from Samba to NFS and gave this App a try. It was super easy to configure and get it up and running.

One problem though: I cannot export the addon_configs folder.

Running HAOS with the following versions

App config
authorized_ips:
  - 192.168.1.222
export_folders:
  - addon_configs
  - config
App logs

Watch for the first [WARN]:

[NFS] Starting NFS-Ganesha (Debian Mode)...
[NFS] Authorized IPs: 192.168.1.222
[NFS] Export folders: addon_configs, config
[NFS] Starting D-Bus...
[INFO] Starting rpcbind...
[WARN] Directory /addon_configs does not exist, skipping...
[NFS] Exporting: /config
[DEBUG] ===== Generated Ganesha Config =====
###################################################
#     NFS-Ganesha Config Generated by Addon       #
###################################################
NFS_CORE_PARAM
{
    NFS_Port = 2049;
    NFS_Protocols = 3,4;
    # Enable mount protocol (needed for showmount)
    Mount_Path_Pseudo = true;
}
NFSv4
{
    Grace_Period = 60;
    # Use numeric IDs to avoid ID mapping issues
    Only_Numeric_Owners = true;
}
EXPORT_DEFAULTS
{
    Access_Type = RW;
}
LOG {
    # limit log clutter
    Default_Log_Level = WARN;
}
EXPORT
{
    Export_Id = 10;
    Path = "/config";
    Pseudo = "/config";
    Access_Type = RW;
    # Map all users to root for full access
    Squash = All_Squash;
    Anonymous_Uid = 0;
    Anonymous_Gid = 0;
    CLIENT
    {
        Clients = 192.168.1.222;
        Access_Type = RW;
    }
    FSAL {
        Name = VFS;
    }
}
[DEBUG] ====================================
[NFS] Launching Ganesha Daemon...
03/03/2026 22:06:07 : epoch 69a73f2f : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] main :MAIN :EVENT :ganesha.nfsd Starting: Ganesha Version 4.3
...
More details

If I ssh into the HAOS host (not SSH App)

# ls -la /mnt/data/supervisor/
total 168
drwxr-xr-x   18 root     root          4096 Mar  3 22:07 .
drwxr-xr-x    6 root     root          4096 Jan 20 14:30 ..
drw-------    2 root     root          4096 Mar 13  2025 .mounts_credentials
drwxr-xr-x    7 root     root          4096 Feb 21 18:53 addon_configs
drwxr-xr-x    6 root     root          4096 Mar 13  2025 addons
-rw-------    1 root     root         43361 Mar  3 22:07 addons.json
drwxr-xr-x    3 root     root          4096 Mar 13  2025 apparmor
drwxr-xr-x    4 root     root          4096 Mar  3 22:06 audio
-rw-------    1 root     root            84 Mar  3 22:06 audio.json
drwxr-xr-x    2 root     root          4096 Mar  3 04:58 backup
drwxr-xr-x    2 root     root          4096 Mar  3 22:07 cid_files
-rw-------    1 root     root           216 Mar  3 22:06 cli.json
-rw-------    1 root     root           350 Mar  3 22:07 config.json
drwxr-xr-x    3 root     root          4096 Mar 13  2025 core
-rw-------    1 root     root           209 Sep 25 22:16 discovery.json
drwxr-xr-x    2 root     root          4096 Mar  3 22:06 dns
-rw-------    1 root     root           148 Mar  3 22:06 dns.json
drwxr-xr-x    2 root     root          4096 Mar 13  2025 emergency
-rw-r--r--    1 root     root            64 Feb 26 19:49 hassio_supervisor.cid
drwxr-xr-x   14 root     root          4096 Mar  3 22:06 homeassistant
-rw-------    1 root     root           634 Mar  3 22:06 homeassistant.json
-rw-------    1 root     root           930 Mar  3 22:05 ingress.json
drwxr-xr-x    2 root     root          4096 Mar 13  2025 media
drwxr-xr-x    2 root     root          4096 Mar 13  2025 mounts
-rw-------    1 root     root            88 Mar  3 22:06 multicast.json
-rw-------    1 root     root           221 Mar  3 22:06 observer.json
-rw-------    1 root     root            31 Mar  3 22:06 services.json
drwxr-xr-x    2 root     root          4096 Mar 13  2025 share
drwxr-xr-x    2 root     root          4096 Mar 13  2025 ssl
-rw-------    1 root     root           386 Mar  3 21:32 store.json
drwxr-xr-x    2 root     root          4096 Mar  3 04:58 tmp
-rw-------    1 root     root          1086 Mar  3 22:06 updater.json
# docker exec -it 43b76717bc9e bash
root@5a568ec9-nfs-ganesha:/# ls -la
total 96
drwxr-xr-x   1 root root 4096 Mar  3 22:06 .
drwxr-xr-x   1 root root 4096 Mar  3 22:06 ..
-rwxr-xr-x   1 root root    0 Mar  3 22:06 .dockerenv
drwxr-xr-x   2 root root 4096 Mar 13  2025 addons
drwxr-xr-x   2 root root 4096 Mar  3 04:58 backup
lrwxrwxrwx   1 root root    7 Feb 23 02:00 bin -> usr/bin
drwxr-xr-x   2 root root 4096 Jan  2 14:40 boot
drwxr-xr-x  14 root root 4096 Mar  3 22:06 config
drwxr-xr-x   2 root root 4096 Mar  3 22:06 data
drwxr-xr-x  17 root root 3360 Mar  3 22:05 dev
drwxr-xr-x   1 root root 4096 Mar  3 22:06 etc
drwxr-xr-x   2 root root 4096 Jan  2 14:40 home
lrwxrwxrwx   1 root root    7 Feb 23 02:00 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Feb 23 02:00 lib64 -> usr/lib64
drwxr-xr-x   2 root root 4096 Mar 13  2025 media
drwxr-xr-x   2 root root 4096 Feb 23 02:00 mnt
drwxr-xr-x   2 root root 4096 Feb 23 02:00 opt
dr-xr-xr-x 357 root root    0 Mar  3 22:06 proc
drwx------   1 root root 4096 Mar  3 22:15 root
drwxr-xr-x   1 root root 4096 Mar  3 22:06 run
-rwxr-xr-x   1 root root 2580 Mar  3 21:32 run.sh
lrwxrwxrwx   1 root root    8 Feb 23 02:00 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Mar 13  2025 share
drwxr-xr-x   2 root root 4096 Feb 23 02:00 srv
drwxr-xr-x   2 root root 4096 Mar 13  2025 ssl
dr-xr-xr-x  12 root root    0 Mar  3 22:05 sys
drwxrwxrwt   1 root root 4096 Mar  3 22:06 tmp
drwxr-xr-x   1 root root 4096 Feb 23 02:00 usr
drwxr-xr-x   1 root root 4096 Feb 23 02:00 var
# docker inspect 43b76717bc9e
[
    {
        "Id": "43b76717bc9e3373c0f6e1265d9fcbdb9e9defe2e64adda1407209d29d7b7ee9",
        "Created": "2026-03-03T20:06:07.334923897Z",
        "Path": "/run.sh",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2023,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2026-03-03T20:06:07.377268856Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:505c8095e78ea93735999a9ccbba61496c49a861444d7514996acac7c9103a13",
        "ResolvConfPath": "/mnt/data/docker/containers/43b76717bc9e3373c0f6e1265d9fcbdb9e9defe2e64adda1407209d29d7b7ee9/resolv.conf",
        "HostnamePath": "/mnt/data/docker/containers/43b76717bc9e3373c0f6e1265d9fcbdb9e9defe2e64adda1407209d29d7b7ee9/hostname",
        "HostsPath": "/mnt/data/docker/containers/43b76717bc9e3373c0f6e1265d9fcbdb9e9defe2e64adda1407209d29d7b7ee9/hosts",
        "LogPath": "",
        "Name": "/addon_5a568ec9_nfs_ganesha",
        "RestartCount": 0,
        "Driver": "overlayfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "unconfined",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {
                    "tag": "{{.Name}}"
                }
            },
            "NetworkMode": "host",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": [
                "DAC_READ_SEARCH",
                "SYS_ADMIN"
            ],
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [
                "172.30.32.3"
            ],
            "DnsOptions": [
                "timeout:10"
            ],
            "DnsSearch": [
                "local.hass.io"
            ],
            "ExtraHosts": [
                "supervisor:172.30.32.2",
                "hassio:172.30.32.2"
            ],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 200,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [
                "seccomp=unconfined",
                "apparmor=unconfined"
            ],
            "Tmpfs": {
                "/dev/shm": ""
            },
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/dev",
                    "Target": "/dev",
                    "ReadOnly": true,
                    "BindOptions": {
                        "ReadOnlyNonRecursive": true
                    }
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/addons/data/5a568ec9_nfs_ganesha",
                    "Target": "/data"
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/homeassistant",
                    "Target": "/config"
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/ssl",
                    "Target": "/ssl"
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/addons/local",
                    "Target": "/addons"
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/backup",
                    "Target": "/backup"
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/share",
                    "Target": "/share",
                    "BindOptions": {
                        "Propagation": "rslave"
                    }
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/media",
                    "Target": "/media",
                    "BindOptions": {
                        "Propagation": "rslave"
                    }
                },
                {
                    "Type": "bind",
                    "Source": "/mnt/data/supervisor/cid_files/addon_5a568ec9_nfs_ganesha.cid",
                    "Target": "/run/cid",
                    "ReadOnly": true
                }
            ],
            "MaskedPaths": [
                "/proc/acpi",
                "/proc/asound",
                "/proc/interrupts",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/sys/devices/virtual/powercap",
                "/sys/firmware",
                "/sys/devices/system/cpu/cpu0/thermal_throttle",
                "/sys/devices/system/cpu/cpu1/thermal_throttle",
                "/sys/devices/system/cpu/cpu2/thermal_throttle",
                "/sys/devices/system/cpu/cpu3/thermal_throttle"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ],
            "Init": false
        },
        "Storage": {
            "RootFS": {
                "Snapshot": {
                    "Name": "overlayfs"
                }
            }
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/addons/data/5a568ec9_nfs_ganesha",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/homeassistant",
                "Destination": "/config",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/ssl",
                "Destination": "/ssl",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/addons/local",
                "Destination": "/addons",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/backup",
                "Destination": "/backup",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/media",
                "Destination": "/media",
                "Mode": "",
                "RW": true,
                "Propagation": "rslave"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/cid_files/addon_5a568ec9_nfs_ganesha.cid",
                "Destination": "/run/cid",
                "Mode": "",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/dev",
                "Destination": "/dev",
                "Mode": "",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mnt/data/supervisor/share",
                "Destination": "/share",
                "Mode": "",
                "RW": true,
                "Propagation": "rslave"
            }
        ],
        "Config": {
            "Hostname": "5a568ec9-nfs-ganesha",
            "Domainname": "local.hass.io",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "TZ=Europe/Bucharest",
                "SUPERVISOR_TOKEN=51c8d67af3985e9905627a2886f1c74a6dd4945b1c2f9520007d26b433b3d0e74d19018edccd61baff5e25b9e33fa3f674e33d49e8c7",
                "HASSIO_TOKEN=51c8d67a3f398e9905627a2886f1c74a6dd4945b1c2f952007bd16fb433b3d0e74d1908edccd6baff5e25b9e33fa3f674e33d49e8c7",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/run.sh"
            ],
            "Image": "5a568ec9/amd64-addon-nfs_ganesha:1.0.0",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "Labels": {
                "io.hass.arch": "amd64",
                "io.hass.description": "Expose Home Assistant folders via NFS using nfs-ganesha",
                "io.hass.name": "NFS Server (Ganesha)",
                "io.hass.type": "addon",
                "io.hass.url": "https://github.com/sam-ward/nfs-ganesha-addon",
                "io.hass.version": "1.0.0",
                "supervisor_managed": ""
            }
        },
        "NetworkSettings": {
            "SandboxID": "8f91797bcec2addd20f6cb5967cda26d745836ca726aa87eee91b2051fb5ec55",
            "SandboxKey": "/var/run/docker/netns/default",
            "Ports": {},
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "DriverOpts": null,
                    "GwPriority": 0,
                    "NetworkID": "2e17e737496ce36e4690b42522d22ac79671f9291a41480c6c4cf9ccdf580dc8",
                    "EndpointID": "4f612fc773f35a1daa28d791666693bc2f9bae8bb860f6b3b44f129ede12fe7a",
                    "Gateway": "",
                    "IPAddress": "",
                    "MacAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": null
                }
            }
        },
        "ImageManifestDescriptor": {
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "digest": "sha256:0b204ad7444fcdc7c7fefbfe57ab1347ebc6d31167efc3372c2b4c2c854240e9",
            "size": 1239,
            "platform": {
                "architecture": "amd64",
                "os": "linux"
            }
        }
    }
]

Any idea why addon_configs is not mounted?

I spotted that myself on the weekend. I have just pushed v1.0.1 that fixes the missing export.

1 Like

That did it, it works now! Thank you so much!

Great i’m glad it worked. Thanks for the confirmation.

1 Like

I have a problem with the HA version 2026.3.1

My logs:
[NFS] Launching Ganesha Daemon…

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] main :MAIN :EVENT :ganesha.nfsd Starting: Ganesha Version 4.3

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] load_rados_config :CONFIG :WARN :Missing RADOS URLs backend library

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] apply_logger_config_levels :LOG :NULL :LOG: Changing Default_Log_Level from (null) to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_LOG from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_MEM_ALLOC from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_MEMLEAKS from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_FSAL from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFSPROTO from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_V4 from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_EXPORT from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_FILEHANDLE from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_DISPATCH from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_CACHE_INODE from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_CACHE_INODE_LRU from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_HASHTABLE from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_HASHTABLE_CACHE from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_DUPREQ from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_INIT from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_MAIN from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_IDMAPPER from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_READDIR from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_V4_LOCK from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_CONFIG from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_CLIENTID from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_SESSIONS from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_PNFS from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_RW_LOCK from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NLM from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_RPC from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_TIRPC from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetNTIRPCLogLevel :LOG :NULL :LOG: Changed RPC_Debug_Flags from 7 to 5

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_CB from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_THREAD from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_V4_ACL from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_STATE from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_9P from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_9P_DISPATCH from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_FSAL_UP from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_DBUS from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] SetComponentLogLevel :LOG :NULL :LOG: Changing log level of COMPONENT_NFS_MSK from NIV_EVENT to NIV_WARN

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] log_conf_commit :LOG :NULL :LOG: Changing custom RPC_Debug_Flags from 7 to 7

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] nfs_Init_svc :DISP :CRIT :Cannot acquire credentials for principal nfs

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] find_keytab_entry :NFS CB :WARN :Configuration file does not specify default realm while getting default realm name

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] gssd_refresh_krb5_machine_credential :NFS CB :CRIT :ERROR: gssd_refresh_krb5_machine_credential: no usable keytab entry found in keytab /etc/krb5.keytab for connection with host localhost

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] nfs_rpc_cb_init_ccache :NFS STARTUP :WARN :gssd_refresh_krb5_machine_credential failed (-1765328160:0)

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] rpc :TIRPC :WARN :getclnthandle: RPC: Unknown host

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] rpc :TIRPC :WARN :svc_rqst_hook_events: 0x5634a6449c00 fd 1024 xp_refcnt 1 sr_rec 0x5634a64244e0 evchan 2 ev_refcnt 3 epoll_fd 24 control fd pair (22:23) direction in hook failed (9)

12/03/2026 12:25:11 : epoch 69b2a297 : 5a568ec9-nfs-ganesha : ganesha.nfsd-23[main] rpc :TIRPC :WARN :getclnthandle: RPC: Unknown host

All of those log messages are normal (for the addon). What problem exactly are you having with the addon?

Sorry,
I’ve now tested mounting from another system (Debian) and NFS works.
However, I can’t mount the share on FreeBSD.
I try the command “mount 192.168.0.101:/share /mnt/share” and get an error.

[tcp] 192.168.0.101:/share: RPCPROG_NFS: RPC: Program not registered

Maybe FreeBSD doesn’t support NFS3+.?


FOUND A SOLUTION

mount -o nfsv4 192.168.0.101:/share /mnt/share

Now it works!
Thank you for NFS in HA :slight_smile:

You’re welcome :slight_smile: I’m glad it is useful for others given I threw it together just to fix a pain point for myself.

I was going to suggest trying to force NFSv4. In theory NFSv3 should be an option as well but I think I will have to do more work to get it working. But given NFSv4 is over 20 years old at this point, I also think it would be fair just to remove v3 support.

1 Like

I’ve noticed another problem
My NFS configuration is:

authorized_ips:
  - 192.168.0.80/32
 
export_folders:
  - share

Access is only set for address 192.168.0.80
but it also allows mounting from other addresses with full permissions.

I’ve been able to reproduce the problem on my system, and I think I can see whats happening, but my initial fix is not working as expected, so this might take me a little longer to resolve.

Ok, I’ve just pushed v1.2.0. This should fix the exports so that the authorised IPs are applied.

V1.2.0 has also removed the (broken) support for NFSv3. It wasn’t working anyway, and at this point NFSv4 is widely supported.

2 Likes