Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LinZipper πŸ“¦πŸ§ 

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.

Web UI screenshot

The Problem

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.

The Solution

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).

πŸš€ Usage

Docker Compose (Recommended)

docker compose up --build

Manual Docker Build

docker build -t linzipper .
docker run -p 5000:5000 linzipper

Navigate to http://localhost:5000 to upload and process folders.

Configuration

Copy the example file and set any environment variables you want to change:

cp .env.example .env
# On Windows (PowerShell):
# copy .env.example .env

The 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.

πŸ“‚ Project Structure

.
β”œβ”€β”€ 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

πŸ› οΈ Technical Specs

  • Base Image: python:3.12-alpine
  • Tools: Native zip packages.
  • Environment: Fully containerized to isolate the filesystem from the host OS.

Security & Hosting

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.

License

MIT

About

The Firefox extension store wasn't liking that I had zipped my extension release on windows. Ended up making this. Its for sure a dumb way to do it πŸ™ƒ. Probably don't do this.

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages