Enterprise-hardened fork of quick-serve optimized for production deployment on Android/Termux with critical bug fixes, custom error pages, and comprehensive operational documentation.
No setup, zero-config, multi-platform, multi-protocol, standalone server for developers or whoever wants to promptly serve files over the network with production-grade reliability.
This fork extends the excellent upstream project with production-grade enhancements for real-world deployment:
- HTTP directory crash fix - Server no longer crashes when accessing directories without index.html
- Proper 403 Forbidden responses for directory access
- Submitted to upstream as Issue #39
- One-command installation -
curl | bashfor instant setup - ~/DropBasket/ folder - Human-friendly name (no technical jargon)
- Desktop shortcuts - Click-to-start with purple gradient basket icon (Linux)
- Termux widgets - Home screen widgets for Android (DropBasket-Start, DropBasket-Stop)
- Simple commands -
qs-start,qs-stop,qs-sync(no complex paths) - Auto-sync between devices - Share files across your network effortlessly
- Non-standard ports - Port 50080 by default (no conflicts)
- Installation error handling - Comprehensive troubleshooting guide
- 403 Forbidden - Professional styled page with purple gradient
- 404 Not Found - Professional styled page with pink gradient
- 500 Internal Server Error - Professional styled page with orange gradient
- All pages follow modern UI/UX principles
- runit service integration - Automatic startup and management
- noexec filesystem workarounds - Works on Android storage limitations
- Optimized build scripts - Cross-compilation support via V2 pattern
- Production-ready deployment - Battle-tested on ARM64 devices
- Simple Install Guide - One-command setup & DropBasket usage
- Installation Error Handling - Troubleshoot installation issues
- Deployment Guide - Complete production setup
- Maintenance Guide - Weekly/monthly procedures
- Disaster Recovery - Emergency protocols
- Troubleshooting - Common issues & solutions
- Monitoring Schedule - Health check procedures
- Bug Report Guide - Issue reporting template
- Simple commands (
qs-start,qs-stop,qs-sync) - One-command installers (install.sh, install-android.sh)
- Automated health checks
- Log rotation configuration
- Service monitoring scripts
| Feature | Upstream | Enterprise Edition |
|---|---|---|
| One-command installer | β Manual build | β curl | bash instant setup |
| Human-friendly interface | β CLI only | β DropBasket folder + desktop shortcuts |
| Quick commands | β Full binary path | β qs-start, qs-stop, qs-sync |
| Custom error pages | β Generic | β Professional styled (403/404/500) |
| Directory crash bug | β Crashes | β Fixed & handles gracefully |
| Android/Termux docs | β Basic | β Complete production guides |
| Service management | β Manual | β runit integration + aliases |
| Monitoring tools | β None | β Health checks + dashboards |
| Disaster recovery | β None | β Complete documented procedures |
| Maintenance guides | β None | β Scheduled procedures (weekly/monthly) |
| Build workarounds | β Standard | β Android noexec handling |
Upstream Project: joaofl/quick-serve v0.3.2
- Enterprise Features
- Quick Comparison
- Motivation
- Installation
- Usage
- Enterprise Documentation
- Build Dependencies
- Using Cross
- Testing
- Implementation Goals
- Contributing
- Contact & Support
- License
graph TB
subgraph "Client Layer"
A[HTTP Client] --> B[Request]
end
subgraph "Quick-Serve Enterprise Server"
B --> C{Router}
C -->|Static File| D[File Server]
C -->|Directory| E[Directory Handler]
C -->|Not Found| F[404 Handler]
D --> G{File Exists?}
G -->|Yes| H[Serve File]
G -->|No| F
E --> I{Has index.html?}
I -->|Yes| H
I -->|No| J[403 Handler]
H --> K[Response 200]
F --> L[Custom 404 Page]
J --> M[Custom 403 Page]
end
subgraph "Response Layer"
K --> N[Client Receives File]
L --> O[Client Sees Styled Error]
M --> O
end
style H fill:#28A745
style L fill:#E83E8C
style M fill:#7C3AED
sequenceDiagram
participant Client
participant Router
participant FileSystem
participant ErrorHandler
Client->>Router: HTTP GET /path/file.html
Router->>FileSystem: Check file exists
alt File Exists
FileSystem-->>Router: File found
Router-->>Client: 200 OK + file content
else File Not Found
FileSystem-->>Router: Not found
Router->>ErrorHandler: Trigger 404
ErrorHandler-->>Client: 404 + Custom styled page
else Directory Without Index
FileSystem-->>Router: Directory found
Router->>FileSystem: Check index.html
FileSystem-->>Router: No index
Router->>ErrorHandler: Trigger 403
ErrorHandler-->>Client: 403 + Custom styled page
end
graph LR
subgraph "Startup"
A[System Boot] --> B[runit Supervisor]
B --> C[quick-serve Service]
end
subgraph "Monitoring"
C --> D{Health Check}
D -->|Healthy| E[Continue Running]
D -->|Crashed| F[Auto Restart]
F --> C
end
subgraph "Control"
G[qs-start] --> B
H[qs-stop] --> I[Stop Service]
J[qs-sync] --> K[Sync Files]
end
E --> L[Serve Requests]
style C fill:#00FF41
style F fill:#FFC107
style L fill:#28A745
graph TB
subgraph "Android Device"
A[Termux App] --> B[Install Script]
B --> C[Create ~/DropBasket/]
B --> D[Install Binary]
B --> E[Setup runit Service]
B --> F[Create Widgets]
C --> G[User Files]
D --> H[quick-serve Binary]
E --> I[Auto-start on Boot]
F --> J[Home Screen Control]
G --> K[Port 50080]
H --> K
I --> K
K --> L[Network Access]
end
subgraph "Network"
L --> M[Local: localhost:50080]
L --> N[Network: 192.168.x.x:50080]
end
style C fill:#28A745
style K fill:#00FF41
style M fill:#17A2B8
As an embedded software engineer, I routinely encounter the need for seamless file transfers between host and target devices in the course of various development tasks. Whether the objective is upgrading a system image, booting a Linux Kernel from the bootloader, retrieving packages from remote repositories, fetching a Git repository or sharing files with your colleague next desk, the constant requirement is a quick and straightforward file server. The capability to promptly set up an FTP, TFTP, or HTTP server proves to be a time-saving and efficient solution in navigating the most diverse file exchange scenarios.
This Enterprise Edition takes the original concept and adds production-ready features, comprehensive documentation, and battle-tested deployment procedures for Android/Termux environments.
One-command installation with DropBasket setup:
curl -sSL https://raw.githubusercontent.com/hah23255/quick-serve-enterprise/main/install.sh | bashcurl -sSL https://raw.githubusercontent.com/hah23255/quick-serve-enterprise/main/install-android.sh | bashWhat gets installed:
- β Quick-serve binary (optimized, headless)
- β ~/DropBasket/ folder π§Ί (human-friendly name)
- β Desktop shortcut with icon (Linux)
- β Termux home screen widgets (Android)
- β Simple commands: qs-start, qs-stop, qs-sync
- β Auto-configured on port 50080 (non-standard)
- β Firewall auto-opened (Linux)
Installation time: 2-5 minutes | Disk space: ~100MB
π Quick Start Guide: docs/SIMPLE_INSTALL.md π§ Error Handling: INSTALL_GUIDELINES.md
Click to expand manual build instructions
For production deployment with all enterprise features:
# Clone the Enterprise edition
git clone https://github.com/hah23255/quick-serve-enterprise.git
cd quick-serve-enterprise
# Build (headless, optimized for production)
cargo build --release --no-default-features --bin quick-serve
# Binary will be at: target/release/quick-serveFor Android/Termux with noexec workaround:
# Set build directory to exec-allowed location
export CARGO_TARGET_DIR=~/tmp/cargo-build
export TMPDIR=~/tmp
# Build
cargo build --release --no-default-features --bin quick-serve
# Deploy
cp ~/tmp/cargo-build/release/quick-serve ./bin/quick-serveSee DEPLOYMENT.md for complete production setup including service management.
For quick testing without enterprise features:
# Install from crates.io (upstream version)
cargo install quick-serve
# Or build from upstream source
git clone https://github.com/joaofl/quick-serve.git
cd quick-serve
cargo run --releaseNote: This installs the upstream version without:
- Custom error pages
- Directory crash fix
- Enterprise documentation
- Android/Termux optimizations
- DropBasket human-friendly interface
Start server (serves ~/DropBasket/ on port 50080):
qs-start
# Server running at http://YOUR_IP:50080
# Access from any device on your networkStop server:
qs-stopSync files from another device:
qs-sync 192.168.1.120
# Downloads all files from another DropBasket serverShare files: Just copy to ~/DropBasket/ folder π§Ί
It can be used both headless or for an even more friendly experience, it can be used with a GUI:
Command line options:
Options:
--headless Headless
-b, --bind-ip=<IP> Bind IP [default: 127.0.0.1]
-d, --serve-dir=<PATH> Directory to serve [default: /tmp/]
-v, --verbose... Verbose logging
--http[=<PORT>] Start the HTTP server [default port: 8080]
--ftp[=<PORT>] Start the FTP server [default port: 2121]
--tftp[=<PORT>] Start the TFTP server [default port: 6969]
--dhcp[=<PORT>] Start the DHCP server [default port: 6767]
-h, --help Print help (see more with '--help')
-V, --version Print versionExamples:
# Serve on different port
qs-start 51234
# Use different directory
quick-serve --headless --http=8080 -d ~/Documents
# Multiple protocols
quick-serve --headless --http --ftp --tftp -d ~/sharedThis enterprise fork includes comprehensive operational documentation for production deployments:
| Document | Purpose | Audience |
|---|---|---|
| DEPLOYMENT.md | Production setup, service management, configuration | DevOps, System Admins |
| MAINTENANCE.md | Weekly/monthly maintenance procedures | System Admins |
| TROUBLESHOOTING.md | Common issues and solutions | Everyone |
| DISASTER_RECOVERY.md | Emergency recovery procedures | System Admins, On-Call |
| MONITORING_SCHEDULE.md | Health check schedules and procedures | DevOps, SRE |
| BUG_REPORT.md | Issue reporting template | Developers |
- Read DEPLOYMENT.md
- Configure
config/production.env - Set up service management (runit)
- Configure log rotation
- Set up convenience aliases
- Test health checks
- Review disaster recovery procedures
- Schedule maintenance windows
Getting Started: Start with DEPLOYMENT.md for step-by-step production setup.
sudo dnf install glibc2-devel atk-devel cairo-devel pango-devel gdk-pixbuf2-devel gtk3-devel gcc cmake clang clang-libssudo apt install libatk1.0-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev build-essentialNote: The ui is optional and can be excluded from compilation with --no-default-features flag.
- Install Docker
- Install Cross
cargo install cross --git https://github.com/cross-rs/cross- Build
./cross-build-all.shsudo apt install wget tftp-hpa
cargo build
cargo test- FTP
- HTTP
- TFTP
- DHCP
- HTTPS
- SFTP
- NFS
- SAMBA
- Command line
- Local interface
- Web interface
- Terminal interface
- Serve
nfiles and exit - Serve for
tseconds and exit - Show number of files being served
- Report transfer rate
- Report transferred files
- Show statistics when exit
- Color-code logs according to protocol
- Add log filtering options
- Fix excessive CPU usage when using the UI
- Custom error pages (403, 404, 500)
- Production deployment documentation
- Service management integration (runit)
- Health check scripts
- Maintenance procedures
- Basic authentication support
- HTTPS/TLS support
- Styled directory listing (optional)
- Rate limiting
- Prometheus metrics endpoint
- Health check endpoint (/health)
We welcome contributions! See CONTRIBUTING.md for guidelines.
Ways to contribute:
- π Report bugs using docs/BUG_REPORT.md template
- π‘ Suggest enterprise features (deployment, monitoring, operations)
- π§ Submit bug fixes and improvements
- π Enhance documentation
- π§ͺ Add test cases for Android/Termux
- π Platform-specific optimizations
Scope Note: This fork focuses on production deployment features. General feature requests should go to the upstream project.
Maintainer: Hristo Hristov LinkedIn: linkedin.com/in/hristo-hristov-93868648 Website: www.ccvs.tech
Issues & Bug Reports: GitHub Issues - Please use docs/BUG_REPORT.md template
Contributing: See CONTRIBUTING.md for guidelines on:
- Bug fixes and improvements
- Documentation enhancements
- Platform-specific optimizations
Original Author: JoΓ£o Loureiro Repository: github.com/joaofl/quick-serve Version: Based on v0.3.2
Feature Requests: Please direct general feature requests to the upstream project. Bug Fixes: Critical bugs discovered here are submitted upstream (e.g., Issue #39).
This project is licensed under the MIT License - see the LICENSE file for details.
Enterprise modifications Copyright (c) 2025 Hristo Hristov Original project Copyright (c) 2024 JoΓ£o Loureiro
- JoΓ£o Loureiro - Original quick-serve project and excellent foundation
- Rust Community - Amazing ecosystem and tooling
- Android/Termux Community - Platform support and testing
If this enterprise fork helped your production deployment, please star the repository!
Built with β€οΈ for production deployments
Enterprise-grade file serving for embedded systems and mobile devices


