# 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. ## Proxmox LXC setup Use a **privileged** Debian/Ubuntu container — required for the NFS server kernel module and quotas. On the **Proxmox host**, load the NFS kernel module before starting the container: ```bash modprobe nfsd echo nfsd >> /etc/modules ``` ## Install Run everything below **inside the LXC container** as root. ### 1. System dependencies ```bash apt update apt install -y git samba nfs-kernel-server quota python3 python3-venv ``` ### 2. Clone the repo ```bash git clone https://github.com/yourusername/micronas.git /opt/micronas # or if you're self-hosting: # git clone git@yourserver:micronas.git /opt/micronas ``` ### 3. Python environment ```bash python3 -m venv /opt/micronas/venv /opt/micronas/venv/bin/pip install flask gunicorn ``` ### 4. Credentials ```bash cat > /etc/micronas.env <:5000` in your browser. ## Updates ```bash cd /opt/micronas git pull 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`. For HTTPS, put nginx in front as a reverse proxy. LAN or Tailscale only — never expose to the internet. ## Dev / test ```bash # Quick local run (no gunicorn needed): MICRONAS_USER=admin MICRONAS_PASS=secret flask --app app.py run --debug --host=0.0.0.0 # Or with docker-compose (UI only — systemctl/samba calls won't work): 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.