700 blocked www-data from entering the dir even though the passwd file
had correct group permissions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- /etc/micronas.env → /etc/micronas/micronas.env
- /etc/micronas-webdav.passwd → /etc/micronas/webdav.passwd
- _save_credentials creates /etc/micronas/ if missing
- _write_webdav_conf: chown root:www-data on passwd file so Apache can read it
- micronas.service EnvironmentFile updated
- README: credentials now set via /setup, config dir step added
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dashboard:
- Server IPs card showing all non-loopback IPv4 interfaces
- Restart buttons next to smbd/nfsd status dots (POST /api/service/<name>/restart)
- Active SMB connections table (smbstatus -b parsed in backend)
SMB edit modal:
- Read only toggle (writable vs read only in smb.conf)
- Recycle Bin toggle (vfs objects = recycle, files go to .recycle folder)
Docs: PLANNING.md phase 3.5, README recycle bin + read-only, CLAUDE.md JS overview
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Explains valid users, folder permissions, force user/group, guest ok,
no_root_squash, all_squash with use cases and recipes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Covers one-time and permanent (fstab) mounts for both protocols,
credentials file for SMB, _netdev flag, multi-network NFS clients,
and useful commands (showmount, umount, mount -a).
Also remove stale "quotas" from the project description line.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
app.py:
- Remove 'raw' field from export dict entries (only comment/blank
kinds need raw; export entries are always reconstructed from
path/rest/enabled when writing back)
- Remove extra blank line
shares.js:
- Remove unused pathJson variable in SMB row (was only needed for
the quota button, which was removed)
docker-compose.yml:
- Deleted entirely: was missing templates/ and static/ mounts so the
Flask app couldn't serve pages; SYS_ADMIN cap_add was only needed
for quotas; deployment is systemd, not Docker
README.md:
- Remove quota package from apt install command
- Remove quota setup section (feature removed)
- Remove docker-compose from Dev section
CLAUDE.md / PLANNING.md:
- Remove docker-compose.yml references and quotas.js from file tree
.gitignore:
- Remove redundant micronas.env entry (already covered by *.env)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- main.js: show live countdown "Updated HH:MM:SS — next in Xs" so the
30s auto-refresh is visually obvious instead of just a static timestamp
- app.py: rename _find_mountpoint → _find_quota_fs and fix the stale
call site that caused a NameError; function now returns mountpoint from
df, falling back to the path itself if df returns /
- README: add full quota setup section (fstab usrquota, quotacheck,
quotaon, verify with repquota); fix stale "127.0.0.1" bind note
(service already uses 0.0.0.0); update Auth section (sessions, not
Basic Auth)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>