All apps · 0 apps
hamal
Docker app from ilker's Repository
Overview
Readme
View on GitHubWhat is HAMAL?
HAMAL (Turkish for porter / carrier) is a fast, lightweight, self-hosted web application designed for frictionless, temporary file transfers across your local network (LAN / Wi-Fi).
In traditional culture, a hamal carries goods and heavy loads from one place to another. In HAMAL, the cargo is digital: files move directly between devices on your local network without intermediate cloud storage, permanent user accounts, advertising, or telemetry.
+---------------+ +----------------+ +-----------------+
| | 1. Scans QR Code | | 2. Streams File | |
| Room Creator | -----------------> | HAMAL Server | <----------------- | Participant |
| (Desktop) | | (Local Network)| | (Mobile/Laptop) |
+---------------+ +----------------+ +-----------------+
Screenshots
Home / Landing Page
Start temporary transfer rooms with customizable TTL and optional PIN security.

Creator Dispatch Dashboard
Real-time QR code with instant expansion lightbox, parcel dropzone, countdown timer, and secure file manifests.

Key Features
- 🚀 Zero Setup for Participants: Scan a QR code or open a local link to immediately upload or download files.
- ⏱️ Auto-Expiring Rooms: Rooms automatically expire and clean up files after a configurable TTL (5 minutes to 24 hours).
- 🔒 PIN Protection: Optional 4–8 digit PIN with exponential backoff and lockout to prevent brute-force attacks.
- 📦 True Streaming I/O: Multi-gigabyte transfers stream directly to disk without exhausting server RAM.
- 🎨 Warm Courier Aesthetics: Clean, modern interface in dark and light modes with warm amber courier accents.
- 🔍 Interactive QR Lightbox: One-click smooth zoom for scanning QR codes from across the room.
- 🛡️ Self-Hosted & Private: Zero cloud dependencies, zero external analytics, zero tracking.
Quick Start
Using Docker Compose (Recommended)
Clone the repository:
git clone https://github.com/i1k3r/HAMAL.git cd HAMALCopy the sample environment file:
cp compose.example.env .envStart the container:
docker compose up -dOpen your browser and navigate to:
http://localhost:7700
Unraid Installation
- Place
unraid-template.xmlinto/boot/config/plugins/dockerMan/templates-user/on your Unraid flash drive. - Go to the Docker tab in Unraid and click Add Container.
- Select HAMAL from the template list.
- Set your preferred web UI port and appdata directory path (
/mnt/user/appdata/hamal), then click Apply.
Manual Binary Build (Go)
Prerequisites: Go 1.22+, GCC / CGO (for SQLite support).
# Clone the repository
git clone https://github.com/i1k3r/HAMAL.git
cd HAMAL
# Run tests
go test ./...
# Build the executable
go build -o hamal ./cmd/lan-drop
# Run HAMAL
./hamal
Configuration
HAMAL is configured via environment variables:
| Variable | Default | Description |
|---|---|---|
LAN_DROP_LISTEN_ADDR |
:7700 |
Address and port to bind the HTTP server |
LAN_DROP_DATA_DIR |
/data |
Root directory for SQLite DB, temporary files, and secrets |
LAN_DROP_DEFAULT_TTL |
1h |
Default room lifetime |
LAN_DROP_MIN_TTL |
5m |
Minimum allowed room lifetime |
LAN_DROP_MAX_TTL |
24h |
Maximum allowed room lifetime |
LAN_DROP_MAX_FILE_SIZE |
10737418240 (10 GB) |
Maximum size of an individual file |
LAN_DROP_MAX_ROOM_SIZE |
10737418240 (10 GB) |
Maximum aggregate file storage per room |
LAN_DROP_MAX_FILES_PER_ROOM |
100 |
Maximum number of files per room |
LAN_DROP_CLEANUP_INTERVAL |
1m |
Frequency of background room and orphan file sweeps |
LAN_DROP_LOG_FORMAT |
json |
Log format (json or text) |
LAN_DROP_LOG_LEVEL |
info |
Log verbosity (debug, info, warn, error) |
LAN_DROP_SECURE_COOKIES |
auto |
Cookie security (auto, true, false) |
Brand Assets
Official HAMAL vector logos and icons are available in the brand/ directory:
brand/hamal-logo-dark.svg(Horizontal dark-mode wordmark)brand/hamal-logo-light.svg(Horizontal light-mode wordmark)brand/hamal-logo-stacked.svg(Stacked badge wordmark)brand/hamal-app-icon.svg(Square container icon)brand/hamal-monochrome.svg(Monochrome asset)brand/hamal-path-mark.svg(Vector path symbol)
License
Released under the MIT License.
Install Hamal on Unraid in a few clicks.
Find Hamal in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Related apps
Explore more like this
Explore allDetails
ghcr.io/i1k3r/hamal:latestRuntime arguments
- Web UI
http://[IP]:[PORT:7700]- Network
bridge- Privileged
- false
- Extra Params
--read-only --tmpfs /tmp --security-opt no-new-privileges:true
Template configuration
Web interface port
- Target
- 7700
- Default
- 7700
- Value
- 7700
Persistent storage directory for SQLite database, uploaded files, and server secrets (must be owned/writable by UID:GID 10001:10001).
- Target
- /data
- Default
- /mnt/user/appdata/hamal
- Value
- /mnt/user/appdata/hamal
Container timezone
- Target
- TZ
- Default
- Europe/Istanbul
- Value
- Europe/Istanbul