Add refresh countdown, fix quota fs lookup, update README

- 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>
This commit is contained in:
marcandClaude Sonnet 4.6 committed 2026-06-19 22:38:42 +02:00
1 parent 6631b9e832
commit f4943b6b6d
4 files changed
+75 -14

No files matched your search

+45 -3
View File
@@ -1,6 +1,6 @@
# MicroNAS
Lightweight web GUI to manage SMB shares, NFS exports, and quotas on a single home server (Proxmox LXC/VM). Runs directly on the host as a systemd service.
Lightweight web GUI to manage SMB shares, NFS exports, quotas, and users on a single home server (Proxmox LXC/VM). Runs directly on the host as a systemd service.
## Proxmox LXC setup
@@ -57,6 +57,48 @@ systemctl enable --now micronas
Open `http://<lxc-ip>:5000` in your browser.
---
## Quota setup (one-time, per filesystem)
Quotas are a **filesystem feature** — they must be enabled on the partition that holds your shares (usually `/srv`) before MicroNAS can set them.
### Step 1 — Enable quota mount options
Edit `/etc/fstab`. Find the line for the partition that contains `/srv` and add `usrquota`:
```
# Example — your device path and options may differ
/dev/sdb1 /srv ext4 defaults,usrquota 0 2
```
Remount to apply without rebooting:
```bash
mount -o remount /srv
```
### Step 2 — Initialise quota database
```bash
quotacheck -ugm /srv
quotaon /srv
```
This creates `/srv/aquota.user`. You only need to run this once; `quotaon` is automatically called on boot via the quota init script.
### Step 3 — Verify
```bash
repquota -u /srv
```
If it prints a header and user list (even if empty), quotas are active. MicroNAS reads this output for the dashboard.
> **Note:** if `/srv` is not a separate partition (e.g. it lives on the root `/` filesystem), add `usrquota` to the `/` entry in fstab instead and run `quotacheck`/`quotaon` on `/`. The Quota button in MicroNAS detects the correct filesystem automatically via `df`.
---
## Updates
```bash
@@ -67,7 +109,7 @@ systemctl restart micronas
## Network
The service binds to `127.0.0.1:5000` by default. To reach it directly from the LAN, change `-b 127.0.0.1:5000` to `-b 0.0.0.0:5000` in `micronas.service`, then run `systemctl daemon-reload && systemctl restart micronas`.
The service binds to `0.0.0.0:5000` — accessible from any LAN device at `http://<lxc-ip>:5000`.
For HTTPS, put nginx in front as a reverse proxy.
@@ -85,4 +127,4 @@ docker compose up
## Auth
All routes require HTTP Basic Auth. Credentials come from `MICRONAS_USER` / `MICRONAS_PASS` environment variables (set via `/etc/micronas.env` in production). If `MICRONAS_PASS` is not set the app starts unprotected and logs a warning — don't do this in production.
All routes require a login session. Go to `http://<lxc-ip>:5000` — you will be redirected to the login page automatically. Credentials come from `MICRONAS_USER` / `MICRONAS_PASS` in `/etc/micronas.env`. If `MICRONAS_PASS` is not set the app starts unprotected and logs a warning — do not do this in production.