Skip to content

siddhesh92/filevm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileVM

Lightweight file manager web app for Ubuntu VMs. Install once, access via SSH tunnel from your laptop.

Dark UI · Dir tree · Download / Zip folders · Upload · Rename · Delete · Preview text files

Quick start on the VM

# 1. Upload the filevm/ folder to your VM
scp -r filevm/ user@your-vm:~/

# 2. SSH in
ssh user@your-vm

# 3. Install (installs as a systemd service)
cd ~/filevm
chmod +x install.sh run.sh
./install.sh

# 4. Set a password (edit the service override)
sudo systemctl edit filevm@$(whoami)
# Add:
# [Service]
# Environment="FILEVM_SECRET=yourpassword"
sudo systemctl restart filevm@$(whoami)

Access from your laptop

ssh -L 7780:127.0.0.1:7780 user@your-vm-ip -N &
open http://localhost:7780

Or add to ~/.ssh/config:

Host myvm
    HostName your-vm-ip
    User ubuntu
    LocalForward 7780 127.0.0.1:7780

Then just ssh myvm and FileVM is available at http://localhost:7780.

Features

Feature How
Browse dirs Click folder name or breadcrumb
Download file Click ⬇ or click file name
Download folder Right-click → Download (zips on the fly)
Upload files ↑ Upload button or drag & drop
Rename ✏️ button or right-click
Delete 🗑 button or right-click
Preview Click text/code files — opens inline (first 64 KB)
New folder + Folder button
Sort Click column headers

Config

All via environment variables:

Var Default Description
FILEVM_ROOT ~ (home dir) Root directory to serve
FILEVM_HOST 127.0.0.1 Bind address (keep as loopback)
FILEVM_PORT 7780 Port
FILEVM_SECRET (empty) Password — set this!

Run without systemd

FILEVM_SECRET=mypassword FILEVM_ROOT=/data ./run.sh

Multiple VMs

Each VM runs its own FileVM. Just forward different local ports:

ssh -L 7780:127.0.0.1:7780 user@vm1 -N &   # http://localhost:7780
ssh -L 7781:127.0.0.1:7780 user@vm2 -N &   # http://localhost:7781
ssh -L 7782:127.0.0.1:7780 user@vm3 -N &   # http://localhost:7782

Security

  • Binds to 127.0.0.1 only — not exposed to the internet
  • Accessible only through your SSH tunnel (SSH encryption + auth)
  • FILEVM_SECRET adds a browser password on top
  • Path traversal protection (all paths are resolved under root)
  • No shell execution, no symlink escape

About

Lightweight web file manager for Ubuntu VMs — browse, upload, download, rename, delete over SSH tunnel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors