Skip to main content

vaalboks

vaalboks logo

Vaalboks is a small file-sharing server for a local network. Drop files or folders in the browser, then download them from another device on the same network.

The name is Afrikaans for “dull box” — a straightforward tool for moving files between computers without a separate hosted service.

Stack

  • Python 3.14, Django 6.1, uv
  • Frontend: plain HTML/CSS/JS + htmx 4.0
  • Uploads use XHR for live progress and speed tracking; downloads use streaming fetch

Run

After installing the package, start the server with:

uvx vaalboks

This starts HTTPS on 0.0.0.0:8443 with two workers. Runtime data is stored in ./vaalboks-data, and a self-signed certificate is generated there on first launch. Migrations and static-file collection run automatically. Use --http for plain HTTP on port 8123. The CLI uses Gunicorn on Linux and macOS and Uvicorn on Windows.

When running from this checkout:

uv run python manage.py runserver 0.0.0.0:8123

Then open http://<your-LAN-IP>:8123/ from any device on the network. (Find your IP with ipconfig getifaddr en0.)

Use as a Django app

The file-sharing interface can also be mounted in an existing Django project. Install vaalboks, add share to INSTALLED_APPS, configure the directory used for uploads, and include the app URLs:

# settings.py
INSTALLED_APPS = [
    # ...
    "share",
]

VAALBOKS_SHARED_ROOT = BASE_DIR / "shared"
# urls.py
from django.urls import include, path

urlpatterns = [
    path("share/", include("share.urls")),
]

The app does not require the bundled vaalboks settings, middleware, or server. The host project remains responsible for Django middleware, static files, CSRF, and deployment configuration.

Direct Gunicorn HTTPS + zstd

This section applies to Linux and macOS. Windows users should use the vaalboks command, which selects Uvicorn automatically.

Gunicorn can terminate HTTPS, and Django compresses eligible text responses with zstd:

uv run gunicorn vaalboks.asgi:application \
  --worker-class uvicorn_worker.UvicornWorker \
  --workers 2 \
  --bind 0.0.0.0:8443 \
  --certfile certs/vaalboks-cert.pem \
  --keyfile certs/vaalboks-key.pem

Open https://<your-LAN-IP>:8443/ and trust the self-signed certificate on each device that will connect. This setup provides HTTPS and zstd compression.

The CLI also accepts --host, --port, --workers, --data-dir, --certfile, and --keyfile.

Publishing

Build artifacts locally with:

uv build

The repository includes GitHub Actions for quality checks and publishing on a published GitHub release. Configure PyPI trusted publishing for the GitHub repository before creating the first release; no long-lived PyPI token is required.

How it works

  • GET / — single page with drop zone and live file listing
  • GET /api/files/ — htmx partial that re-renders the listing after uploads
  • POST /api/upload/ — multipart upload; folders are traversed client-side (webkitGetAsEntry) and each file is sent with its relative path
  • GET /files/<path> — download a shared file (path-traversal protected)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vaalboks-0.1.0.tar.gz (41.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vaalboks-0.1.0-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

Details for the file vaalboks-0.1.0.tar.gz.

File metadata

  • Download URL: vaalboks-0.1.0.tar.gz
  • Upload date:
  • Size: 41.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for vaalboks-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f361bf76cb0e8ea8112d36c876873546d13ea62dc1f453e4179fc426ee7bab2f
MD5 8b11aa6e641f711c8e2d367f6cab85d9
BLAKE2b-256 52c1eaa84c035f9ee0265c573303fa543b85389b08d6155ce741ca86b2f75bc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for vaalboks-0.1.0.tar.gz:

Publisher: publish.yml on rsxm/vaalboks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vaalboks-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vaalboks-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 42.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for vaalboks-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d06f1aeddc8a8be4f3bc5e5337a1ff640ea39f1d5602cc9e6ff837515d7f617
MD5 d79ab3b6cb90a844bf2ddd40dc08191b
BLAKE2b-256 6453bf3a1e1e09edae570fa4816c5e5395b41118f42f0fdd356648c26ad16411

See more details on using hashes here.

Provenance

The following attestation bundles were made for vaalboks-0.1.0-py3-none-any.whl:

Publisher: publish.yml on rsxm/vaalboks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page