Skip to main content

A beautiful, feature-rich local file server

Project description

๐Ÿ Pineapplee

A clean, fast, local file server โ€” right in your browser.

PyPI version Python Downloads License: MIT

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-environment error? Modern macOS/Linux (PEP 668) blocks system-wide pip installs to protect your OS Python. Use pipx instead (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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pineapplee-0.1.7.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pineapplee-0.1.7-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file pineapplee-0.1.7.tar.gz.

File metadata

  • Download URL: pineapplee-0.1.7.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for pineapplee-0.1.7.tar.gz
Algorithm Hash digest
SHA256 78a44fc031d62c7fb61a12f72572c3031dc4d124a0b1d0e6158ccbe8b28f9fc3
MD5 403a4f0b50a2923c6fd3684300491ac4
BLAKE2b-256 f4e9f65d74098c2a6db0ecf282820abe94d888e692412dc61c5d8967364e3065

See more details on using hashes here.

File details

Details for the file pineapplee-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: pineapplee-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for pineapplee-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 809a66b1780840403b8ce45455c46534763cec7425381fc2eed302546c04fc90
MD5 a24abfc505c2732fe19f57f9ca07aee3
BLAKE2b-256 17cdd930667f6e9fd85ffa14149b9359aaa2a317b6550f5981d3815be48b34a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page