BenchPress — Self-hosted Frappe Cloud alternative | FOSS Hack 2026

Hey FOSS community :wave:

Sharing my FOSS Hack 2026 project — BenchPress.

What is it?

BenchPress is an open-source, self-hosted alternative to Frappe Cloud. It’s built entirely as a Frappe app that lets you create, deploy, and manage isolated Frappe/ERPNext development environments with a single click — all through a modern Vue 3 dashboard.

If you’ve worked with Frappe Framework, you know the pain — setting up a dev environment means manually installing bench CLI, MariaDB, Redis, Node.js, wkhtmltopdf, and many more dependencies. Different projects need different Frappe versions, and one broken bench can pollute your machine. Multiply that by every new project or team member, and it gets old fast.

How it works:

  1. Create a Lab (reusable template) — Pick your Frappe version (v14/v15/v16/develop), add any apps (ERPNext, HRMS, CRM, LMS, Helpdesk, Wiki, or your custom app), set CPU/memory limits
  2. Build once — A 5-layer cached Dockerfile bakes all apps into an image. Only changed layers rebuild, so iterative builds are fast
  3. Deploy in clicks — Each bench runs in its own Docker container, connected to shared MariaDB and Redis infrastructure (managed via docker-compose)
  4. Access via WireGuard — Each container runs its own wg0 WireGuard interface with a dedicated VPN IP. SSH directly into any bench at ssh frappe@10.10.0.X
  5. Watch it happen live — Build and deploy logs stream in real-time via WebSocket, GitHub Actions-style with collapsible steps

Tech stack:

Python 3.14 + Frappe v16 · Vue 3 + Vite + TailwindCSS + frappe-ui · Docker (Python SDK) · WireGuard (kernel-level, inside-container) · Shared MariaDB 10.6 + Redis 7 via docker-compose · Socket.io for real-time

What makes it interesting technically:

  • Inside-container WireGuard — Each container manages its own VPN interface, so you get direct IP access without iptables DNAT complexity
  • Shared database infrastructure — A single benchpress-mariadb container serves all benches (each site gets its own SHA1-named database), with automated health checks every 5 min and daily backups at 2 AM with 7-day retention
  • 11 DocTypes modeling the complete bench lifecycle — Labs, Bench Instances, Sites, Devices, Logs, Settings, and more
  • Idempotent setup.sh — One script handles Docker group, shared infra, IP forwarding, sudoers, WireGuard tools, and server setup
  • VPN Device Management — Register persistent devices (Laptop, Mobile, etc.) with dedicated WireGuard configs that survive across sessions

The dashboard is a full Vue 3 SPA with searchable/filterable lists, tabbed detail views, live CPU/memory progress bars, connection info panels with copy-to-clipboard, collapsible log viewers, and dark mode.

Current status: Phase 1 complete — 8 stars, 5 forks on GitHub.

Quick setup:

bench get-app https://github.com/Venkateshvenki404224/benchpress --branch develop
bench pip install docker
bench --site your-site install-app benchpress
bash apps/benchpress/setup.sh your-site
cd apps/benchpress/frontend && yarn install && yarn build
bench start

Video explainer: https://www.youtube.com/watch?v=DzTNwA39PqA
GitHub: GitHub - Venkateshvenki404224/benchpress: Press a button. Get a Frappe bench. Self-hosted, Docker-powered, VPN-secured. · GitHub
Docs: Detailed guides in the /docs/ folder (Getting Started, Creating Labs, WireGuard Setup, Device Management, etc.)
License: MIT

Would love feedback, suggestions, and contributors. Whether you work with Frappe/ERPNext or are interested in Docker-based dev tooling, give it a try and let me know what you think!

Happy to answer any questions :raised_hands:

2 Likes