Is this the easiest way to zip a folder? Probably not. Is it the most reliable way to avoid Windows-induced Firefox rejection? Also probably not, but at least it works.
LinZipper is a Dockerized utility designed to create ZIP archives with native Linux metadata.
While developing a browser extension, I found that ZIP archives created on Windows were often rejected during the Firefox extension validation process. After some research, I discovered this is because Linux-based environments require specific Unix file attributes and permissions that Windows-native zipping utilities do not consistently preserve.
LinZipper runs the zipping step inside a small Linux container. Upload a folder and it returns a ZIP that preserves Linux-native metadata so the archive works properly on Linux (and for use cases like browser extensions).
docker compose up --builddocker build -t linzipper .
docker run -p 5000:5000 linzipperNavigate to http://localhost:5000 to upload and process folders.
Copy the example file and set any environment variables you want to change:
cp .env.example .env
# On Windows (PowerShell):
# copy .env.example .envThe service reads MAX_CONTENT_MB (megabytes) from the environment and uses it to set Flask's upload limit. The default in .env.example is 100 (100 MB). When using Docker Compose, the .env file is loaded automatically.
Recommended default: 100 MB is a sensible starting point for most uses; lower it if you only expect small uploads.
.
βββ web/
β βββ static/ # CSS and JS assets
β βββ templates/ # HTML templates
β βββ app.py # Flask backend
βββ Dockerfile # Alpine build configuration
βββ docker-compose.yml # Local deployment config
βββ README.md
- Base Image:
python:3.12-alpine - Tools: Native
zippackages. - Environment: Fully containerized to isolate the filesystem from the host OS.
For Local Use Only: This tool is intended for personal development workflows. It is not hardened for production environments and should not be exposed to the public internet.
MIT
