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, breadcrumb trail, and folder navigation
โฌ†๏ธ Upload Drag-and-drop files or entire folders โ€” with real-time progress
โฌ‡๏ธ Download Single files or bulk ZIP archives
๐Ÿ‘๏ธ Preview Images, video, audio, PDFs, and text files โ€” all in-browser
โœ๏ธ Rename & Delete Manage files without leaving the browser
๐ŸŒ 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

๐Ÿš€ Quick Start

pip install pineapplee
# Serve the current directory
pineapplee

# Serve a specific path
pineapplee ~/Downloads

# Different port
pineapplee --port 9000

# Share publicly over the internet
pineapplee --public

Open http://localhost:8089 โ€” and you're in.


๐Ÿ“– Usage

usage: pineapplee [-h] [--port PORT] [--public] [directory]

positional arguments:
  directory       Directory to serve (default: current directory)

options:
  -h, --help      show this help message 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

๐Ÿ›  Contributing & Development

# 1. Clone the repo
git clone https://github.com/ApoorvDixitt/Pinapplee.git
cd Pinapplee

# 2. Install in editable mode
pip install -e .

# 3. Run locally
pineapplee

Publishing a new version to PyPI

  1. Edit the version in two places:

    • pyproject.toml โ†’ version = "x.y.z"
    • pineapplee/__init__.py โ†’ __version__ = 'x.y.z'
  2. Build the package:

    pip install build twine
    python -m build
    
  3. Upload to PyPI:

    twine upload dist/*
    # Username: __token__
    # Password: <your PyPI API token>
    

Tip: create a ~/.pypirc file to avoid typing credentials every time:

[pypi]
username = __token__
password = pypi-your-token-here

๐Ÿ“„ 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.1.tar.gz (21.3 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.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pineapplee-0.1.1.tar.gz
  • Upload date:
  • Size: 21.3 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.1.tar.gz
Algorithm Hash digest
SHA256 4d9e9f795200bde0c6427467005adcc500817f18c3b9b3fa83395493f032be48
MD5 2b622027e976b33aca2092f223748c42
BLAKE2b-256 2497c13d7eacda42205ac2032c7f9cc091a1178191e8f62ec487f946c00a8cb2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pineapplee-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 85dd2bde3f604974303e4966f0474e4690e7d6b27a7090fb15d6945e56da90e7
MD5 3611fd09544857058995b9154bc3ef15
BLAKE2b-256 f10fb428c3423c07206f0b687311013a3ed8841c60cde64f22e28c676a603b14

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