Napp-it cs web-gui for any OS server and cluster

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
Concept

up from v26.06,
- napp-it cs is a real copy and run application incl Perl based http/https webserver. Apache no longer required
- 2FA with smartphone Authenticator
- encrypted socket remote control (chacha20)
- encrypted buffered ZFS replication any to any (z-stream)
- RustFS S3 included for backup, restore or move of filesystems incl ACL restore with rclone or restic (encryption, dedup, snaps)


Unlike many other web-gui tools, the napp-it cs frontend and backend can run on any OS (Free-BSD, Illumos, Linux, OSX and Windows) where you only need Perl. Main platform is Illumos (OmniOS), Linux (Proxmox) and Windows (Windows 11 or Windows Server). One frontend setup can manage multiple hosts (locally and remote) with a select option for localhost and remote hosts. Any menu option affects then the selected host.

Napp-it cs is a real Copy and Run application. This means that installation = download csweb-gui app folder and deinstallation=delete csweb-gui app folder, Update and downgrade (last 5 versions) can be done online (menu About > Update.

Napp-it cs can manage any service and server. You can extend napp-it cs by private menus (update save). Default menus are intended to manage storage, either Storage Spaces on Windows or ZFS (any OS including Windows)


1776550442129.png


1. What is napp-it cs ?
1.1 Concept
2. Hardware and Software options
2.1 Single disk minimal system
2.2 Bootdisk + dedicated data disk(s)
2.3 Bootdisk + dedicated data disks (hybrid pool)
2.4 RAM
2.5 OS options for fileserver
2.6 Options for AiO (fileserver + hypervisor)
3. Setup and first steps
3.1 Download napp-it cs application folder
3.2 napp-it cs web-gui (any OS)
3.3 napp-it cs servergroup
3.4 Create Storage Pools (Storage Spaces and ZFS)
3.5 Extend a Storage Pool
3.6 Repair a Storage Pool
3.7 Share data over SMB
3.8 Protect data with ACL
3.9 Posix ACL settings (Linux)
4. Special functions
4.1 napp-it cs Autoscrub
4.2 napp-it cs Autosnap
4.3 napp-it cs Replication
4.4 napp-it cs Encryption
4.5 Data versioning and disaster backup
 
Last edited:
  • Like
Reactions: liv3010m and gb00s

kapone

Well-Known Member
May 23, 2015
2,072
1,408
113
My friend...take this as constructive criticism. That UI...is living in the 90s. You keep pushing this, but if you really wanna make an impact, this needs a serious update.
 
  • Like
Reactions: Teg Bains

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
You are right. The UI is a "no modern ui" concept as you know it from your mobile phone. You can`t even run it there or on a tablet without display problems as it is intended to run on large high resolution monitors. The intended user is an administrator with more than one server, douzens of pools and hundreds of filesystem or snaps who want a very fast overview of the most important storage aspects without going through different apps for disks, pools, shares or datasets, in the end me as storage admin to do my daily work and this is where it started - do similar like Nexenta or netApp without the costs and easily adjustable for new tasks.

The ui is basically a pure and minimalistic listing of disks, pools, filesystems etc with their say 10-20 most important properties. In most cases I only need the Pools and Filesystem menu as they combine 90% of most wanted informations and settings. To change a property, just click on the property. If you ever used napp-it within the last 15 years, you will have the same user experience. Not like your supermarket where you are lost to find milk within a decent time after a usual reorder from time to time. Does not matter if you use napp-it 10x a day or once a year, you find needed options very fast without searching.

Another aspect is the background structure. Every menu item is a folder with a script in it for menu interactions. This makes it a matter of minutes to include menus for new ZFS features or adjust for a given OS environment. Beside the default menus there are user menus that must be update save. Just create such a folder, add some Perl and you have extended napp-it with your own new menu options. So any update must not break such user menus and this would mean a whole new structural concept, basically a new software with a different goal. The current napp-it cs evolved from the former napp-it se for OpenSolaris/Solaris/Nexentacore in 2009 to Illumos/OI/OmniOS ZFS, then Linux OpenZFS, now all OSs with different filesystems and features, from single host to multi host management. Adding for example btrfs would be as easy as was Storage Spaces on Windows, say less than a week of work for an experienced btrfs user.

Last item is, that napp-it is not "big" enough for a whole redesign that would last a year or more to reach a similar state of functionality and stability with a modern UI and same options that is more than a different css with other icons for html pages. Do you remember FreeNAS 10/Corral when they tried a redesign and failed completely what needs a whole restart of development. A smaller company wouldn't have survived that.

If napp-it becomes bigger or someone bigger takes over the concept, this may change.
 
Last edited:

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
I am convinced too that AI tools can help in future to debug and redesign software.

At the moment, you get as much bullshit as genious ideas if not coding is the problem but identifying and solving administration tasks in an area where you get new features and options month by month that differ by OS and ZFS release.

You need experience for the problems not a fancy UI, but AI becomes better day by day.
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
About permissions with napp-it cs on different operating systems

Q:
How to set permissions in a SMB share where each local user should have a folder with full permissions.
In the share itself there should only be folders, no files

A: on Windows or Solaris/Illumos
ex OmniOS with ntfs/nfs4 ACL
- no need to manually add a SMB password (passwd user includes this on Illumos)

- create these two ACL for the shared folder:

allow to read for everyone (this folder only)
allow to create folders for everyone (this folder only)


This means, everyone has read access to the share and can create a folder with no access to foreign subfolders
Creator/Owner has full permissions and can grant read/delete/modify/file create/folder create for other users or groups
(with groups in groups ex students that contain sem1, sem2 etc with users) via Windows Explorer (Property>Security).
You can decide per ACL if it affects this folder only or also folders below

To modify permissions afterwards:
- modify inherited ACL on a parent folder or disable inheritance and replace with a dedicated set of ACL

If you copy/move a filesystem, ACL remain intact (unique Windows SID as filereference with Domain part of a SID)

B: on Linux with Posix ACL and SAMBA

- edit smb.conf with basic permission settings
- create an additional SMB pw for all Linux users with special commands

As Posix has only rwx and no "create folder only" ACL or a restriction "affects this folder only", you must
(menu Filesystems > Permissions)

- set an ACL readx for everyone to the shared folder (allow read, not delete) with setfacl
- manually create a folder for every user (as root)

- set Posix ACL rwx rwx rwx for a list of users with setfacl,
- groups cannot contain groups, you can only assign a user to several groups
- set default Posix ACL for a folder to define ACL for newly created files or folders with setfacl

A user with write permissions can create, modify or delete files and folders. You cannot differ between.
If you want to modify permissions afterwards, you must set on any folder as there is no ACL inheritance from parent folders.

If you copy/move a filesystem, ACL are not unique across systems (simple gid number like 101)
 
Last edited:

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
napp-it cs and Object Storage

A file server or NAS primarily offers hierarchical local storage using file systems like ext4, NTFS, or ZFS. These are used to store the operating system and local data. Access to this data is efficient, whether locally or via multi-user NFS/SMB file sharing—even simultaneously—by locking individual files or database records. When a file is modified, only the corresponding data block is rewritten. Local storage can be designed with redundancy to survive the failure of one or more drives, either via RAID or through multiple data copies, such as with Storage Spaces.

S3 Object Flat Storage was developed as a web service for "Big Data," cloud storage, and backups. On an S3 server or cluster, entire files are stored under a unique ID. Access is handled via HTTPS GET, PUT, or DELETE and a REST API. Since there is no hierarchical file system to search or organize, access to 100 petabytes of data is nearly as fast as access to 10 terabytes. S3 storage can be organized as a cluster, where every additional node increases capacity and throughput. S3 distributes data copies across multiple servers within the cluster, ensuring that the failure of individual nodes does not lead to data loss (High Availability). There is no "Single Point of Failure" (such as a central metadata server), which increases stability in large clusters. S3 is the protocol that keeps the internet alive. The disadvantage of S3 is that file modifications (e.g., in a 10GB file) require the entire file to be re-uploaded rather than just changing the affected data block; therefore, it does not replace a local file system.

The market leader for large corporations is Amazon S3. For smaller companies or in-house on-premise solutions, MinIO S3 has become the standard. MinIO is open-source but has transitioned to the AGPLv3 license, which is legally problematic for many companies when integrating it into their own systems (due to the "copyleft" requirement for modifications).

Previously, MinIO was integrated into napp-it. I am currently preparing the switch to RustFS, a MinIO-compatible S3 server. It is no longer developed in Go; instead, it consistently relies on Rust under a liberal Apache license to leverage well-known advantages in performance and security. It is significantly more resource-efficient and faster with small files. RustFS is currently in version 1.0 beta, with a stable release announced for summer 2026.

RustFS webconsole
1777386544981.png
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
Where the journey is headed..

ZFS is the best storage you can have locally on your machine, both in terms of data security and features like hybrid pools, RAID functions, encryption, and much more. It is a mature technology, and very little—like "AnyRaid"—is missing to make it a "perfectly happy" solution.

However, even with ZFS, you can lose data. Lightning strikes, theft, hardware failure, or sabotage—and it's all gone. That is why, even with ZFS, you need Disaster Backup, traditionally implemented as a 3-2-1 backup (3 copies on 2 different media, with 1 copy stored offsite). You can still do this today using external (USB) ZFS pools or one or two additional NAS systems with ZFS replication.

But there is a much more modern approach. I see 1S3 as the successor to the 3-2-1 principle: one copy of the data locally and one copy remotely on an S3 single server or, ideally, an S3 cluster. An S3 server or cluster can be rented relatively cheaply from a hoster or built yourself—privately with friends or family, or on-premise in an office, business, or school. Local data is synchronized from a ZFS snapshot to the S3 server over the internet. Deduplication and encryption are possible across platforms using tools like rclone, restic, or kopia. If you have an S3 cluster, it replicates the data automatically within the cluster, providing high availability for your backups.

One or more ZFS servers combined with one or more S3 installations as a cluster, centrally managed with a multi-OS / multi-server napp-it cs—that is the goal.
 
  • Like
Reactions: T_Minus

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
napp-it
Concept Study
RustFS / MinIO · restic · rclone
ZFS is the best thing you can do for your data locally.

Crash-safe with Copy-on-Write
Protects filesystem and ZFS RAID from bit-rot using checksums
Snapshot versioning, quotas and reservations
Rich feature set for disks, RAID, data management and data retention
Local SMB multi-user access with flexible ACL file permissions after login

And on the internet?

Upload/download via HTTPS after login, as common with cloud providers?
ZFS backup/restore over the internet?
Replication of data between regional or remote servers over the internet?
High availability (RAID across multiple servers instead of local disk RAID only)?

For this, Amazon developed S3 — and documented it very well:

Very fast, whether 1 TB or 100 PB
Every file has its own URL: https://...
S3-compatible open source servers (MinIO, RustFS etc.)
In-house or affordable S3 file hosters
RAID across servers with access via cluster IP or individual server IPs
Autonomous site replication S3 ? S3

For a complete concept you need:

A local ZFS server
An S3 server as single node or HA multi-node, e.g. RustFS
A program for S3 backup repositories, encrypted with deduplication, e.g. restic
A sync/copy tool to move data from/to/between S3, e.g. rclone or the web console

My concept proposal:
Multilingual with other documents:
 

tarasque

New Member
May 8, 2026
4
0
1
I tried to install napp-it cs to my proxmox 9 server. I followed the steps in the Quick start guide (3 steps) and when i try to open the server ip through the browser i get the following error:
______________________
initialize Web-UI, please wait...

in case of problems, use terminal and check

- poolstatus: zpool status
- zfsstatus: zfs list
- pw reset: del/edit /xamp/[web-gui]/data[n]/_log/web-gui.cfg - web-gui restart:
/xamp/[web-gui]/data[n]/start-web-gui_as_admin.bat
______________________

The first zpool status and zfs list are looing good.

When I stop the cs_server.service then I can access the web server with just the interface and this message:
_______________________
Your OS is 4375 Socketerror or backend not started: sub socket on connect with ip: 127.0.0.1 (127.0.0.1) >on

Connection refused on 127.0.0.1
_______________________

I even tried it with a fresh installation of proxmox 9 with all the updates installed but ended up with the same problem. It looks like that frontend fail to connect to backend.
Any ideas for what might be wrong are welcome.
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
The backend is a Perl service server.pl
You can start in the foreground for debugging (console as root or Putty)

perl /var/csweb-gui/startup/backend_only/non_windows/_restart_server_foreground.pl

btw
The start comments with "xampp" are for Windows
 

tarasque

New Member
May 8, 2026
4
0
1
this is the output:
Code:
#  perl /var/csweb-gui/startup/backend_only/non_windows/_restart_server_foreground.pl

timeout:20
max_connections:20
allowed_cmd:
allowed_ip:














cs_server 26.05.02

###########################
initiate cs_server 26.05.02
1555 read auth: /var/csweb-gui/cfg/server.auth
935 run autostart
autostart: no member.log

sh: 1: print: not found

zfs yes
dn: Proxmox
on: Proxmox;PVE:ap;Linux 6.17.13-6-pve x86_64
fn: linux
hn: ap
os: Linux 6.17.13-6-pve x86_64
rh: PVE:ap
hi: Proxmox;PVE:ap;Linux 6.17.13-6-pve x86_64
nc: /var/csweb-gui/data/cs_server/tools/nc/lin/nc
ncl: -l -w 20 -p
ncs:
sc:  /etc/samba/smb.conf
auth: cd5e..

timeout: 20
max_connections: 20
timeout: 20
allowed_ip:
enforce_upsrv:
keyserver w1:
keyserver w2:
spath: /var/csweb-gui/data/cs_server
wpath: /var/csweb-gui
path:

Perl @INC
/var/csweb-gui/data/cs_server/CGI, /xampp/csweb-gui/data/cs_server/CGI, /etc/perl, /usr/local/lib/x86_64-linux-gnu/perl/5.40.1, /usr/local/share/perl/5.40.1, /usr/lib/x86_64-linux-gnu/perl5/5.40, /usr/share/perl5, /usr/lib/x86_64-linux-gnu/perl-base, /usr/lib/x86_64-linux-gnu/perl/5.40, /usr/share/perl/5.40, /usr/local/lib/site_perl,
zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
rpool    49G  4.03G  45.0G        -         -     2%     8%  1.00x    ONLINE  -


waiting for client requests..
use IO::Socket::INET

---
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
This is a normal startup of server.pl.
Any napp-it cs frontend (Proxmox lokally or remote e.g. Windows) should now be able to manage the server..

Do you use a default webserver setup with Apache (port 80/443) or the test setup with mini_http on port 8080?
 

tarasque

New Member
May 8, 2026
4
0
1
I tried with the default apeche webserver with both 80 and 443 and with the mini_http on port 8080 as stated in the old documentation (some days ago that is) and the result is exactly the same. I get stuck at the "initialize Web-UI, please wait..." message for ever.
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
The message indicates that the webserver is running as it shows the index.html page. Port with Apache is http:80 and https:443, http:8080 is only for a basic test with the mini_httpd webserver (you can start mini_httpd from the startup folder)

The Apache startpage index.html (initializing..) should either redirect to the login page of the webui or show an error if this fails, press F5 to reload page to rule out a browser cache problem.
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
Napp-it cs menus can be extended by your own menus.
Each private menu is update/downgrade save and a simple folder under ./csweb-gui/_my/menues with a script action.pl within.

If you want to use AI to create or review private menus e.g. Claude

- make a zip from the csweb-gui folder (csweb-gui.zip)
- upload that zip to claude

ask claude to insert and update two file in the root folder of the zip
- changelog.txt with current modifications and
- guideline.txt with the following initially

-- always create a zip file with all files within for download
-- update changelog with modifications and a list of modified files
-- local OS commands are executes via &exe("command") over server.pl, always check commands against server.pl
-- server.pl parses commands, e.g. ps axww gives a tasklist also on Windows
-- -fi [edf] filename can do a test (exist, file, directory)

you can add your own rules

Then ask Claude to
--- insert a new menu ex testmenu under ./csweb-gui/_my/menues/101/Private_menus
similar to the examples there

--- the new menu should ask the user for a certain information ex a task or filename
--- prozess this when answered with following ...
 
Last edited:

tarasque

New Member
May 8, 2026
4
0
1
The message indicates that the webserver is running as it shows the index.html page. Port with Apache is http:80 and https:443, http:8080 is only for a basic test with the mini_httpd webserver (you can start mini_httpd from the startup folder)

The Apache startpage index.html (initializing..) should either redirect to the login page of the webui or show an error if this fails, press F5 to reload page to rule out a browser cache problem.
I tried installing napp-it cs in a fresh new Proxmox 9.1, a Debian 13 and an Ubuntu 24.04 installation.
I downloaded the latest napp-it cs (dated 2026-05-01 as per script dates in the cs_server folder of the zip)
I did exactly as stated in the docs:

Code:
curl -Ok www.napp-it.org/doc/downloads/napp-it_cs.zip
unzip -o -d /var ./napp-it_cs.zip

apt install apache2 smartmontools

sh /var/csweb-gui/startup/backend+web-gui/proxmox/apache/apache_proxmox.sh

I tried with 3 different browsers: Firefox, Chrome, Safari to open http://server-ip or https://server-ip
Same error “initialize Web-UI, please wait...”


All totally reproducible.
 

gea

Well-Known Member
Dec 31, 2010
3,691
1,454
113
DE
Thia indicates that the Apache webserver is running (showing index.html with initialising),
but starting the web-ui fails, check Apache log: /var/log/apache2/error.log (e.g. via WinSCP)

check if there is a folder /var/csweb-gui with folders like data within

Does a test with mini_httpd and http work?
sh /var/csweb-gui/startup/backend+web-gui/proxmox/mhttpd/mini-httpd.sh
then open web-gui via browser and http://ip:8080