A simple desktop GUI app (share.py) that turns any folder on your computer into a temporary HTTP file server, so other devices on your local network (phone, laptop, tablet) can browse and download files from it — no cloud, no account, no internet required.
Repo: https://github.com/meetsalmvn/LocalShare
- Pick any folder and share it over your local Wi-Fi/LAN
- Auto-detects your machine's local IP address
- Custom port selection with validation
- Start/Stop the server anytime — GUI stays responsive
- One-click "Open in Browser" button
- Binds only to your LAN interface, not the whole internet
⚠️ Security note: Anyone who can reach the shown address on your network can view and download files in the shared folder. Only run this on networks you trust (e.g. your home Wi-Fi), and stop the server when you're done.
LocalShare needs only two things to run:
| Requirement | Why |
|---|---|
| Python 3.8+ | The app is written in Python |
| Tkinter | Powers the GUI (bundled with Python on Windows/macOS, but a separate package on most Linux distros and Termux) |
No third-party pip packages are required — the app only uses Python's standard library (tkinter, http.server, socket, threading, webbrowser).
You'll also need git (or just download the ZIP from GitHub) to get the code.
- Install Python from python.org/downloads.
- During setup, check "Add python.exe to PATH".
- Leave "tcl/tk and IDLE" checked (it's checked by default) — this installs Tkinter for you.
- Open Command Prompt or PowerShell and verify:
A small test window should pop up if Tkinter is installed correctly.
python --version python -m tkinter
- Clone or download the repo:
git clone https://github.com/meetsalmvn/LocalShare.git cd LocalShare
- Run the app:
python share.py
- Install Python 3 using the official installer from python.org/downloads — this bundles Tcl/Tk (Tkinter) already.
- (Homebrew alternative:
brew install python-tkif you use a Homebrew Python and get a Tkinter error.)
- (Homebrew alternative:
- Verify:
python3 --version python3 -m tkinter
- Clone the repo:
git clone https://github.com/meetsalmvn/LocalShare.git cd LocalShare - Run:
python3 share.py
sudo apt update
sudo apt install python3 python3-tk git -y
git clone https://github.com/meetsalmvn/LocalShare.git
cd LocalShare
python3 share.pysudo dnf install python3 python3-tkinter git -y
git clone https://github.com/meetsalmvn/LocalShare.git
cd LocalShare
python3 share.pysudo pacman -S python tk git --needed
git clone https://github.com/meetsalmvn/LocalShare.git
cd LocalShare
python3 share.pysudo apt update
sudo apt install python3 python3-tk git -y
git clone https://github.com/meetsalmvn/LocalShare.git
cd LocalShare
python3 share.pyDisplay:
- Windows 11: WSLg is built in — the GUI window just appears, no extra setup needed.
- Windows 10: You need a Windows X server such as VcXsrv. Start it, then in WSL run:
before launching
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
share.py.
Reaching the share from other devices on your home network:
WSL2 sits behind Windows' own virtual network, so the LAN IP the app shows (something like 172.x.x.x) is only reachable from Windows itself, not from your phone or other PCs. To expose it, forward the port from Windows to WSL2 (run in an elevated PowerShell on Windows, after the server is running):
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=<WSL2-IP-shown-in-app>Then also allow the port through Windows Firewall, and share your Windows machine's own LAN IP (not the WSL2 one) with other devices.
Tkinter doesn't have a native display on Android, so running LocalShare's GUI in Termux requires Termux:X11.
- Install Termux from F-Droid (not the Play Store version).
- Install Termux:X11 from the official GitHub Releases. Download
termux-x11-universal-debug.apkand install it. - In Termux, install the required packages:
If
pkg update && pkg upgrade -y pkg install x11-repo python git -y pkg install termux-x11-nightly -ytermux-x11-nightlyisn't available, download the.debpackage manually from the official Releases and install it with:apt install ./<package-name>.deb
- Install Ubuntu:
pkg install proot-distro -y proot-distro install ubuntu
- Start Termux:X11 from Termux:
Then open the Termux:X11 app.
termux-x11 :1
- Open a new Termux session and enter Ubuntu:
proot-distro login ubuntu --shared-tmp export DISPLAY=:1 apt update && apt install python3 python3-tk git -y
- Clone and run:
git clone https://github.com/meetsalmvn/LocalShare.git cd LocalShare python3 share.py
Note: If termux-x11-nightly cannot be installed, the Termux:X11 APK alone is not enough — the Termux companion package is also required.
Simpler alternative for Termux: if you just want to share a folder from your phone and don't need the GUI, skip Tkinter entirely and use Python's built-in server:
pkg install python -y
cd /path/to/folder
python3 -m http.server 8000Then visit http://<phone-IP>:8000 from another device on the same Wi-Fi.
- Launch the app:
python3 share.py(orpython share.pyon Windows). - Click Select and choose the folder you want to share.
- (Optional) Change the Port — default is
8000. - Click Start Server.
- Copy the address shown (e.g.
http://192.168.1.42:8000/) and open it on another device connected to the same Wi-Fi/network — or click Open in Browser to test it locally. - Click Stop Server when you're done sharing.
| Problem | Fix |
|---|---|
ModuleNotFoundError: No module named 'tkinter' |
Install the Tkinter package for your OS (see platform sections above). |
| "Could not determine your local network IP address" | Make sure you're connected to Wi-Fi/Ethernet. The app can't detect an IP with no active network. |
| "Address already in use" when starting | Another program is using that port. Pick a different port (e.g. 8080). |
| Other devices can't open the link | Check they're on the same network, and that your OS firewall allows inbound connections on the chosen port. On WSL2, see the port-forwarding note above. |
| GUI window doesn't appear on WSL2/Termux | Make sure your X server (WSLg, VcXsrv, or Termux:X11) is running and DISPLAY is set correctly. |