• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

OpenZFS NAS (BSD, Illumos, Linux, OSX, Solaris, Windows + Storage Spaces) with napp-it web-gui

As an additional note:

The new rc10 with the integrated Perl web server and client-server encryption is copied to /opt (no longer /xampp, as XAMPP for Windows is no longer required). This also resolves the critical Apache < v2.4.64 security issue in XAMPP.

If you want to update an older napp-it cs in /xampp/csweb-gui and retain settings like jobs or groups, copy the config folder _cfg (and _log, if present) to /opt/csweb.

Under Windows, Windows Defender may flag nc64.exe as a hacker tool. This is Netcat for Windows, which Napp-it uses for ZFS replication (any OS to any OS) because it is already included by default in Linux or Unix. Without nc64, LAN replication to or from Windows is not possible. As an alternative, there is S3 backup/restore, which can be used to transfer any folders or file systems, including ACL save/restore.
 
OpenZFS 2.4.1 on Windows

https://github.com/openzfsonwindows/openzfs/releases
https://github.com/openzfsonwindows/openzfs/issues



** rc12

a lot of big changes, test calmly

  • fix MountManager confusion from snapshot mounts
  • fix zfs_vss_pool_remove not removing snapshots on pool export
  • zfs_vnops_windows_lib: also filter snapshot DCBs from BusRelations
  • zfs_vnops_windows_lib: exclude snapshot mounts from BusRelations reply
  • zfs_ctldir: return mounted snapshot root vnode from zfsctl_root_lookup
  • icp: fix AVX2-VAES GCM path for both kernel and userland on Windows
  • icp/simd: add VAES and VPCLMULQDQ runtime detection, enable AVX2-VAES GCM path
  • icp: restore ASMABI on aesni_gcm_encrypt/decrypt declarations
  • zfs_windows_unmount: rmdir reparse-point directory after deletion
  • zfs_windows_unmount: clear DCB mounted_on before DeleteReparsePoint
  • zfs_vnops_windows_lib: fix FileStandardInformation size for ADS
  • wosix_open: strip trailing backslash from paths
  • posix/zutil: fix zpool import -d . from UNC CWD
  • zfs_vnops_windows: fix FileStreamInformation for directories
  • zfs_vnops_windows: fix fsutil fsinfo volumeinfo storage IOCTL failures
  • zfs_vnops_windows: advertise FILE_SUPPORTS_BLOCK_REFCOUNTING when feature is enabled
  • zfs_vnops_windows: implement FileLinkInformationEx support
  • zfs_vnops_windows: fix git clone (pack file corruption + unlink failure)
  • zfs_vnops_windows: implement FSCTL_OFFLOAD_READ and FSCTL_OFFLOAD_WRITE
  • zfs_vss/vfsops/vnops: fix three BSODs in VSS snapshot path

** rc11

  • Show selected letter in driveletter property
  • Delete required admin privileges, fixed
  • Unmounted BSOD fix
  • Fix mount timeout
  • Volume Shadow Copy provider for Previous Versions
 
Napp-it cs rc10.1
- improved non blocking behaviour of webserver.pl
- backup job for system settings
- System > Backup/Restore, manual backup, restore of all or selected system settings.
- Disks > Enclosure Maps (visualisation of disk locations in a backplane, set + printout)

eg (per member several maps, unterschiedliche Brands, horizontal, vertical 2,4,6,8,16,24,60,90 disks,
no special hardware. create Maps/ different brands, assign disks, printout

1782374768979.png
 
#############

## napp-it cs rc 10.2_dev


- encrypted zstream instead ssh, netcat or mbuffer for remote replication
Release v1.1.0 · guenther-alka/zstream

Go application, transfer is encrypted, has buffering like mbuffer,
can limit transfer like pv, can show progress


- Antivir like Avast may block zstream.
This is a common false positiv problem with Go apps, allow zstream


# Windows dev release ps or cmd shell (copy paste to an admin terminal)
cmd /c "curl.exe -ksLo %TEMP%\cs_setup_dev.bat https://www.napp-it.org/cs_setup_dev.bat && %TEMP%\cs_setup_dev.bat


# non Windows dev release
curl -ksL https://www.napp-it.org/cs_setup_dev.sh | sh
 
AI for development and new features

The new Claude 5 models (Sonnet 5, Fable 5) represent a true epochal leap in the quality and efficiency of AI-assisted software development. While they still make mistakes and require diligent verification of their output, this is precisely where agentic models come into play. Claude is not only capable of directly versioning and modifying code, but can also verify it independently—for instance, by accessing logs or dynamically generating improved logging on the fly. In a multi-OS cluster solution like napp-it cs, tools like pscp or plink allow this loop to extend seamlessly to remote FreeBSD, Illumos, Linux, macOS, Solaris, or Windows member nodes.

I am currently using Windows for development via Claude Desktop and MCP, with other operating systems serving as the member servers.

howto


Code:
================================================================================
  napp-it cs -- Claude Desktop Setup (English)
  AI-assisted development with direct filesystem access,
  SSH tools and ZFS snapshot backup
  File: csweb-gui/_my/howto.ai/setup_claude_en.info
================================================================================

================================================================================
  Preword
================================================================================
napp-it is a copy and run user extendable web management suite to manage single
servers or whole servergroups. It consists of the frontend webserver (pure Perl)
and backend services for remote control via encrypted socket connections. There
are no requirements/ modifications outside the napp-it cs folder /opt/csweb-gui

Frontend and backend run on Free-BSD, Illumos, Linux, OSX, Solaris and Windows.


================================================================================
  OVERVIEW
================================================================================

This setup gives Claude full access to the napp-it cs project (C:\opt\csweb-gui)
without any ZIP upload/download cycle. Claude reads and edits files directly on
disk. Version control is handled via robocopy mirroring to ZFS snapshots on an
OmniOS/Illumos NAS.

Components:
  1. Claude Desktop for Windows       -- AI client with MCP extensions
  2. MCP Filesystem Extension         -- direct read/write access to C:\opt
  3. MCP Desktop Commander            -- Windows terminal, shell, processes
  4. SSH tools (PuTTY suite)          -- remote access to member servers
  5. Robocopy + ZFS snapshots         -- backup and versioning


================================================================================
  1. PREREQUISITES
================================================================================

  - Windows 10/11 (64-bit)
  - napp-it cs installed at C:\opt\csweb-gui
  - Strawberry Perl at C:\opt\perl (included in the napp-it cs package)
  - NAS / OmniOS host with ZFS reachable on LAN (here: 192.168.2.203)
  - SMB share "opt" on the NAS (\\192.168.2.203\opt) as sync target
  - Internet access for Claude Desktop download


================================================================================
  2. INSTALL CLAUDE DESKTOP
================================================================================

  1. Download: https://claude.ai/download  -> "Download for Windows"
  2. Run the installer (claude-setup.exe) -- no admin rights required
  3. Start Claude Desktop, sign in with your claude.ai account
     (Recommended: Claude Pro, approx. $17/month -- larger context window,
      no throttling during intensive development sessions)
  4. On first start the chat opens directly -- no further setup needed


================================================================================
  3. SET UP MCP FILESYSTEM EXTENSION
================================================================================

  The Filesystem extension gives Claude direct read/write access to selected
  directories -- no file upload needed.

  3.1  Install the extension

    Claude Desktop -> Menu (☰ top left) -> Settings -> Extensions
    -> Search "Filesystem" -> Install / Add

    Alternatively: Claude Desktop -> Settings -> Developer -> Edit Config
    Open: %APPDATA%\Claude\claude_desktop_config.json

  3.2  Configure allowed directories

    Edit the filesystem entry in claude_desktop_config.json:

    {
      "mcpServers": {
        "filesystem": {
          "command": "npx",
          "args": [
            "-y",
            "@modelcontextprotocol/server-filesystem",
            "C:\\opt"
          ]
        }
      }
    }

    This grants Claude access to C:\opt\ and all subdirectories.
    NOTE: C:\opt\ssh\ contains the private SSH key -- Claude only reads it
    for command construction and never writes to it.

  3.3  Restart Claude Desktop

    After changing claude_desktop_config.json: fully quit Claude Desktop
    (tray icon -> Quit) and restart.

  3.4  Test access

    In chat: "List the files in C:\opt" -- Claude should list the folders
    without any file having been uploaded.


================================================================================
  4. SET UP MCP DESKTOP COMMANDER (Windows Terminal / Shell)
================================================================================

  Desktop Commander gives Claude access to a persistent Windows shell
  (PowerShell/cmd), can start processes, search files, and more.

  4.1  Installation

    Claude Desktop -> Settings -> Extensions -> Search "Desktop Commander"
    -> Install

    Or manually in claude_desktop_config.json:

    {
      "mcpServers": {
        "desktop-commander": {
          "command": "npx",
          "args": ["-y", "@wonderwhy-er/desktop-commander"]
        }
      }
    }

  4.2  Restrict allowed directories (optional)

    Desktop Commander can execute commands system-wide. For tighter control:
    set allowedDirectories to ["C:\\opt"] in Desktop Commander settings.

  4.3  Typical use

    Claude can directly:
      - Run perl -c syntax checks
      - Start sync_version.bat
      - Call plink.exe / pscp.exe
      - Start/stop processes (server.pl, webserver.pl)
      - Tail logs (Get-Content ... -Wait)


================================================================================
  5. SET UP SSH TOOLS (PuTTY suite)
================================================================================

  SSH tools give Claude remote access to member servers and the NAS host
  for snapshot management and log analysis.

  5.1  Install PuTTY tools

    Place the following files under C:\opt\ssh\:
      plink.exe      SSH command-line client   -- from putty.org
      pscp.exe       SCP/SFTP file transfer    -- from putty.org
      puttygen.exe   Key conversion utility    -- from putty.org
      id_rsa.ppk     Private key (PuTTY format)

    Download: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
    -> download plink.exe, pscp.exe, puttygen.exe directly

  5.2  Create or convert an SSH key

    Option A -- Create a new key:
      Run puttygen.exe -> Generate -> move mouse -> Save private key
      -> save as C:\opt\ssh\id_rsa.ppk
      Copy the public key text from the text field

    Option B -- Convert an existing OpenSSH key:
      puttygen.exe -> Conversions -> Import Key -> id_rsa (OpenSSH format)
      -> Save private key -> C:\opt\ssh\id_rsa.ppk

  5.3  Deploy the public key to target hosts

    On each member server (root@HOST):
      mkdir -p ~/.ssh
      echo "ssh-rsa AAAA... your-key" >> ~/.ssh/authorized_keys
      chmod 600 ~/.ssh/authorized_keys

    Same on the NAS host (192.168.2.203).

  5.4  Test the connection

    In PowerShell / cmd:
      C:\opt\ssh\plink.exe -ssh -batch -i C:\opt\ssh\id_rsa.ppk root@192.168.2.203 hostname

    Expected: NAS hostname without any password prompt.
    On the very first connection: confirm the host key fingerprint once
    (stored in registry, -batch works afterwards without any prompts).

  5.5  Pre-accept host keys (required for -batch mode)

    Connect once WITHOUT -batch to store the host key:
      C:\opt\ssh\plink.exe -ssh -i C:\opt\ssh\id_rsa.ppk root@192.168.2.203 hostname
    -> Answer "Store key in cache? (y/n)" with y.
    All subsequent -batch calls work silently after that.


================================================================================
  6. ROBOCOPY SYNC + ZFS SNAPSHOT BACKUP
================================================================================

  6.1  Set up the SMB share on the NAS

    On the OmniOS/Illumos NAS:
      zfs create tank/daten1/opt           (or your pool name)
      zfs set sharesmb=name=opt tank/daten1/opt
      svcadm restart smb/server

    From Windows: \\192.168.2.203\opt should be accessible.
    Optionally map a drive letter:
      net use Z: \\192.168.2.203\opt /persistent:yes

  6.2  sync_version.bat

    File: C:\opt\sync_version.bat
    See the existing script (already present at C:\opt).

    The script:
      1. Creates ZFS snapshot daten1/opt@TIMESTAMP via plink.exe
      2. Runs robocopy C:\opt -> \\192.168.2.203\opt /MIR
      3. Excludes tmp\ and ssh\ from the sync
      4. Writes a log to C:\opt\sync_version.log

  6.3  Set up autosnap on the NAS (safety net)

    On the NAS -- ZFS autosnap every 15 minutes via cron:
      crontab -e
      */15 * * * * zfs snapshot daten1/opt@auto-$(date +\%Y\%m\%d_\%H\%M)

    Or configure via napp-it cs Jobs > Snap.
    Recommended retention: 8 days (approx. 768 snapshots).

  6.4  Snapshot recovery

    List available snapshots:
      C:\opt\ssh\plink.exe -ssh -batch -i C:\opt\ssh\id_rsa.ppk root@192.168.2.203 ^
        "ls /daten1/opt/.zfs/snapshot/ | tail -20"

    Restore a single file:
      C:\opt\ssh\pscp.exe -i C:\opt\ssh\id_rsa.ppk ^
        "root@192.168.2.203:/daten1/opt/.zfs/snapshot/TIMESTAMP/csweb-gui/PATH/TO/FILE" ^
        C:\opt\csweb-gui\PATH\TO\FILE

    After recovery: run perl -c on the restored file.


================================================================================
  7. CLAUDE DESKTOP -- GENERAL INSTRUCTIONS (System Prompt)
================================================================================

  Claude Desktop -> Menu -> Settings -> General Instructions for Claude:

  Recommended text:
  -----------------------------------------------------------------------
  napp-it cs project is at C:\opt\csweb-gui.
  At session start read the guideline: csweb-gui/data/howto.ai/guideline.info
  and all *.info files in that folder and in _my/howto.ai/.
  Before larger changes: run sync_version.bat and wait for success.
  For recovery: ZFS snapshots accessible via pscp.exe
  (see _my/howto.ai/extra.info).
  -----------------------------------------------------------------------

  These instructions apply automatically to every new chat.


================================================================================
  8. TYPICAL WORKFLOW (daily use)
================================================================================

  1. Start Claude Desktop
  2. Open a new chat
  3. Claude confirms automatically:
       - Project C:\opt\csweb-gui read
       - Guideline and all *.info files read
       - sync_version.log checked (backup current?)
       - admin.pl / server.pl version strings shown
  4. Describe the task (paste a screenshot if helpful)
  5. For larger changes: Claude runs sync_version.bat first
  6. Claude edits files directly (no ZIP upload needed)
  7. Reload the browser page -> changes visible immediately
  8. For server.pl changes: restart the backend via napp-it cs


================================================================================
  9. REMOTE ACCESS TO MEMBER SERVERS (logs, diagnostics)
================================================================================

  Read logs:
    plink.exe -ssh -batch -i C:\opt\ssh\id_rsa.ppk root@192.168.2.185 ^
      "tail -50 /opt/csweb-gui/tmp/error.log"

  ZFS status:
    plink.exe -ssh -batch -i C:\opt\ssh\id_rsa.ppk root@192.168.2.185 ^
      "zpool status"

  Fetch file from member:
    pscp.exe -i C:\opt\ssh\id_rsa.ppk ^
      root@192.168.2.185:/opt/csweb-gui/tmp/error.log ^
      C:\tmp\error_185.log

  Push file to member:
    pscp.exe -i C:\opt\ssh\id_rsa.ppk ^
      C:\opt\csweb-gui\data\cs_server\server.pl ^
      root@192.168.2.185:/opt/csweb-gui/data/cs_server/server.pl


================================================================================
  10. TROUBLESHOOTING
================================================================================

  Claude cannot see files in C:\opt
    -> Filesystem extension not installed or wrong path in config
    -> Check claude_desktop_config.json, restart Claude Desktop

  plink.exe asks for password
    -> Host key not yet accepted: connect once without -batch
    -> Wrong PPK key: puttygen.exe -> Load -> id_rsa.ppk -> Verify

  robocopy fails (access denied)
    -> Check SMB share: net use \\192.168.2.203\opt
    -> Store Windows credentials for the NAS:
       Control Panel -> Credential Manager -> Windows Credentials -> Add

  Claude edits the wrong files
    -> Always check: Claude reads _my/howto.ai/ last (overrides standard)
    -> Ask in chat: "Which file did you just edit?"

  modifier.js only 13 bytes ("# placeholder")
    -> Known issue: restore from last snapshot
    -> Use the pscp.exe command from extra.info

================================================================================
 
New in napp-it cs Jul.09: Job type: Filesync with rclone
https://www.napp-it.org/index_en.html

Sync: "Server 1 ZFS Filesystem 1" -> "Server 2 Filesystem 2"
Before everyone says this has existed for ages with rsync, robocopy, and zfs send — here's the feature list:
  • Direct sync any-to-any, including e.g. Windows <-> FreeBSD <-> Solaris (daisy-chain capable)
  • Encrypted sync via z-stream tunnel with one-time key (https://github.com/guenther-alka/z-stream/releases)
  • Restartable (file-based), unlike incremental replication
  • Creates ZFS snapshots (source and destination)
  • ACLs are preserved (within a single OS)
  • Practical up to about 1TB — beyond that, zfs send is unbeatably faster

Since the last version
  • Single folder (/opt/csweb-gui), copy and run, no dependencies (https://www.napp-it.org/downloads_en.html)
  • Frontend web GUI for managing the local server (free) or a group via an encrypted backend connection
  • Frontend and backend on any OS (FreeBSD, Illumos, Linux, OSX, Solaris, and Windows)
  • 2FA with mobile authenticator
  • S3, Storage Spaces, and ZFS with ACL, user, and share management
  • Encrypted replication of unencrypted filesystems via z-stream
  • Easily extensible with custom menus (optimized for Claude AI-assisted work, https://www.napp-it.org/pdf/csweb-gui_use_ai.pdf)
 
napp-it cs and AI-assisted work, a few tips
The latest Anthropic 5 AI models with local agents are a genuine generational leap in terms of code quality and result effectiveness. napp-it is an ideal candidate for anyone who wants to (or needs to) try this out — best done on a Windows frontend with the Claude Desktop app + Claude Pro + MCP Filesystem and Desktop Commander + plink and pscp — because:

Claude can directly edit menus and scripts and read/optimize logs, using tools like plink and pscp on remote hosts too
Custom napp-it cs menu extensions can be used for all kinds of multiuder/multihost things, not just storage
Changes take effect immediately after a page reload (no extra compile or deployment delays)

This makes it possible, when facing a problem, to say: "Create a menu that...", "optimize and test the script until it works...", "improve the logging for troubleshooting..." — then go get a coffee. Claude will keep working on it until it runs and document everything cleanly. You can then test the final functionality instead of the 50 intermediate steps. Claude Pro costs about 17 USD/month. Depending on the model and working style, that can get you quite far — or not: https://the-decoder.de/claude-fable...-strategien-um-die-kosten-deutlich-zu-senken/ (use chrome to translate on the fly)

Anyone developing with AI for the first time has to change their sense of role. Until now, a software developer was both "architect" and "craftsman." As the craftsman, they always knew the complete project — its general goals, requirements, and interdependencies. With AI, I picture the process like this: I'm the architect, creating and planning the building concept, commissioning construction phases and supervising them. The AI is something like a "craftsman subcontractor" that I can assume works extremely precisely and competently. Unfortunately, a different company shows up for every construction phase, sometimes from abroad, so that communication beyond the single, exact work order is difficult. On top of that, they're all craftsmen with narrow, singular talents — perfect bricklayers and painters, but without an eye for the big picture, and extremely eager to keep working. A "make a hole in the wall" quickly turns into "I repainted the wall while I was at it since the scaffolding was already up."
A particular problem is chat sessions with limited knowledge transfer to a new session. If Claude has direct access to the local disk, the project data is at least always current. However, knowledge of the overall concept and project planning, as well as the most recent work steps or individual pieces of functionality, gets lost. If you don't want to re-explain all the principles and functionality, the type of client-server communication, and a thousand other details in every single chat session, it's essential to create a guideline, document general behaviours, and create info files on important individual pieces of functionality. On top of that, the most recently started and completed work steps need to be documented, along with a to-do list of open items.
All of that is already set up. A "read guideline" at the start of a Claude chat session takes care of all of this automatically, because all of these points are stored in /howto.ai/guideline.info.
 
What's going on?

napp-it cs consists of two Frontend services

  • webserver.pl (for common and private menus)
  • auto.pl (job management)

and two Backend Services

  • server.pl (encryped remote control)
  • monitor.pl (cache management, update/restart handling)
On Windows you can start them minimized as an option.
You can then check actions and data flow between frontend and backend

1783780493597.png
 
Back
Top