A beautiful, feature-rich local file server
Project description
๐ Pineapplee
A clean, fast, local file server โ right in your browser.
PyPI ยท GitHub ยท Report a Bug
Pineapplee turns any folder on your machine into a shareable web interface โ browse, upload, download, and manage files from any device on your network, or share publicly with a single flag.
โจ Features
| ๐ Browse & Navigate | Clean file listing with sortable columns, pagination, breadcrumb trail, and folder navigation |
| โฌ๏ธ Upload | Drag-and-drop files or entire folders โ with real-time progress |
| โฌ๏ธ Download | Single files or bulk ZIP archives with smart compression |
| ๐๏ธ Preview | Images, video, audio, PDFs, and text files โ all in-browser |
| โ๏ธ Rename & Delete | Manage files without leaving the browser |
| ๐ Folder Sizes | Async background calculation โ listing loads instantly |
| ๐ Public Share | One flag to expose your server publicly via Cloudflare Tunnel โ no account needed |
| ๐ Safe by default | Path traversal protection, symlink validation, upload size limits |
๐ Installation
Recommended (using pipx)
pipx installs Python CLI tools in isolated environments โ no conflicts, no permission errors. This is the best way to install on macOS, Linux, and Windows.
# Install pipx if you don't have it
# macOS / Linux (Homebrew)
brew install pipx
# Windows (scoop)
scoop install pipx
# Or with pip (any OS)
pip install pipx
pipx ensurepath
Then install Pineapplee:
pipx install pineapplee
Update to the latest version:
pipx upgrade pineapplee
Using pip
If you're inside a virtual environment or managing packages yourself:
pip install pineapplee
Update:
pip install --upgrade pineapplee
Getting
externally-managed-environmenterror? Modern macOS/Linux (PEP 668) blocks system-wide pip installs to protect your OS Python. Usepipxinstead (see above), or use a virtual environment:python3 -m venv ~/myenv source ~/myenv/bin/activate pip install pineapplee
๐ Quick Start
# Serve the current directory
pineapplee
# Serve a specific path
pineapplee ~/Downloads
# Different port
pineapplee --port 9000
# Share publicly over the internet
pineapplee --public
# Check installed version
pineapplee --version
Open http://localhost:8089 โ and you're in.
๐ Usage
usage: pineapplee [-h] [-v] [--port PORT] [--public] [directory]
positional arguments:
directory Directory to serve (default: current directory)
options:
-h, --help show this help message and exit
-v, --version show installed version and exit
--port, -p Port to listen on (default: 8089)
--public Expose publicly via Cloudflare Tunnel
Local network sharing
Pineapple binds to 0.0.0.0, so any device on your LAN can reach it at the Network URL printed in the terminal:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Pineapple File Server โ
โฃโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโซ
โ โ
โ ๐ Serving /Users/you/Documents โ
โ ๐ Local http://localhost:8089 โ
โ ๐ Network http://192.168.1.5:8089 โ
โ ๐ฆ Max upload 500 MB โ
โ โ
โฃโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโซ
โ Press Ctrl+C to stop โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Public sharing
pineapplee --public
On first run this downloads the cloudflared binary (~50 MB, cached to ~/.pineapplee/bin/). A public trycloudflare.com URL is printed โ share it with anyone, anywhere.
๐ Security
- All file paths are validated and confined to the served directory
- Symlinks pointing outside the root are silently ignored
- Upload size capped at 500 MB by default
- Hidden files (dotfiles,
__pycache__,node_modules,.egg-info, etc.) are never shown
Note: Pineapple is designed for local and trusted-network use. Do not expose it to the public internet without understanding the implications.
๐ Requirements
- Python >= 3.8
- Flask >= 2.0
All dependencies are installed automatically.
๐ Troubleshooting
| Problem | Solution |
|---|---|
externally-managed-environment error |
Use pipx install pineapplee instead of pip |
command not found: pineapplee |
Make sure ~/.local/bin is in your PATH, or reinstall with pipx |
| Folder names with spaces return 404 | Upgrade to v0.1.5+ (pipx upgrade pineapplee) |
| Slow loading on large directories | Upgrade to v0.1.5+ โ listing is now paginated |
cloudflared not found (--public) |
First run downloads it automatically; ensure internet access |
๐ License
MIT ยฉ KalaaKaar
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pineapplee-0.1.6.tar.gz.
File metadata
- Download URL: pineapplee-0.1.6.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75a092e7dff3dfa03dfb578cf0b272001e6a21b2256a3ec0c570a3f972e68318
|
|
| MD5 |
912da641214c8b1783251b3300549e6c
|
|
| BLAKE2b-256 |
a060f445561964fe6070bc67ffb971ea78c89180ff51184323101f7df6029320
|
File details
Details for the file pineapplee-0.1.6-py3-none-any.whl.
File metadata
- Download URL: pineapplee-0.1.6-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b634252ead9262f6377159e8e0bdab84f274365c7ca80ceed6d6daada95fea14
|
|
| MD5 |
f93d5b95aaa0a8ff47a88619fc86ac22
|
|
| BLAKE2b-256 |
e1dd36cce8cf4cca9d2afcd26a6ad3be3cf75e1b27b7df9d2a2354f38502ee53
|