Tutorial

Postman Alternatives: Bruno and Hoppscotch on VPS

Development8 min read12 steps

In March 2026, Postman removed collaborative workspaces from its free plan, requiring a minimum of $19/user/month for small teams. Bruno and Hoppscotch offer a complete alternative: locally stored collections, no subscription, and a migration from Postman that preserves environment variables, OAuth2 authentication, and automated tests. This guide explains how to choose, migrate, and deploy either tool in under an hour.

Contents· Why migrate from Postman now1/8
  1. 01Why migrate from Postman now
  2. 02What you gain by migrating
  3. 03Prerequisites before you start
  4. 04Migrate to Bruno in six steps
  5. 05Deploy self-hosted Hoppscotch with Docker Compose
  6. 06Bruno vs Hoppscotch vs Insomnia — which to choose
  7. 07Migrating Postman automated tests
  8. 08Host Hoppscotch on a ServOrbit VPS

Why migrate from Postman now

Until February 2026, Postman allowed sharing collections as a team on its free plan. Since the March 2026 update, collaborative workspaces are reserved for paying subscribers, with a minimum price of $19/user/month (Basic plan). For a team of five developers, that is $95/month, or $1,140/year, for a tool whose main value is collection sharing. For a team of ten, the bill exceeds $2,000 per year.

Two open source alternatives cover this need without a subscription. Bruno stores collections directly in your Git repository — each request is a versionable text file readable by any code review tool. Hoppscotch provides a collaborative web interface deployable on your own VPS with Docker Compose in under twenty minutes. Both projects natively import Postman collections and preserve environment variables, pre-request scripts, and automated tests.

The choice between the two depends on your workflow: Bruno suits teams already working in Git who do not need real-time synchronization — each push makes changes available to everyone. Hoppscotch suits teams that share active test environments, prefer a web interface accessible from any workstation, and want immediate visibility into requests modified by a colleague.

What you gain by migrating

  • Zero subscription — Bruno is an open source desktop client (MIT), Hoppscotch deploys on any VPS with Docker
  • Versioned collections — Bruno stores each request in a .bru file: git diff, git blame, and code reviews apply naturally
  • Direct import from Postman — both tools read Postman v2.1 JSON exports and preserve variables, OAuth2 authentication, and automated tests
  • No data sent to third parties — self-hosted Hoppscotch contacts no external servers; Bruno never syncs your requests to the cloud
  • Lightweight resources — Bruno has no backend; Hoppscotch runs on 1 vCPU / 1 GB RAM for typical team usage
  • No per-seat billing — a single Hoppscotch deployment serves the entire team, regardless of size

Prerequisites before you start

For Bruno, only each developer's workstation is involved: the desktop client installs on macOS, Linux, and Windows, with no server. Collections live in a folder in your existing Git repository. No account is required, and no external service is contacted at startup.

For self-hosted Hoppscotch, you need a VPS with at least 1 vCPU and 1 GB RAM (2 GB recommended for the instance with database and cache), Docker and Docker Compose installed, a domain name pointing to the server, and a TLS certificate (Let's Encrypt via Certbot or Traefik). SSH access to the server is also needed for initial configuration and updates.

In both cases, an export of your Postman collections in JSON v2.1 format is required. In Postman, go to File → Export → Collection v2.1 for each collection. Environments are downloaded separately from the Environments tab. Keep these files: they serve both for the initial migration and as a backup.

Migrate to Bruno in six steps

  1. Export your collections from Postman

    In Postman, click the … next to each collection, then Export. Choose Collection v2.1 (recommended) and save the JSON file. For environment variables, go to Environments, click … then Export for each environment.

  2. Install Bruno

    Download the package from usebruno.com/downloads for your OS. On Debian/Ubuntu: sudo dpkg -i bruno_<version>_amd64_linux.deb. On macOS via Homebrew: brew install --cask bruno. Bruno is signed and requires no account.

  3. Create a Bruno collection in your repository

    Open Bruno, click Create Collection, choose a folder in your Git repository (for example api-tests/). Bruno creates a bruno.json file there and stores each request as a .bru file — a readable, diffable text format.

  4. Import the Postman collection

    In Bruno, click Import Collection → Postman Collection v2 / v2.1, then select your exported JSON file. Requests, folders, pre-request scripts, and pm.test() tests are converted. The {{variable}} variables are preserved under Bruno's {{variable}} syntax.

  5. Import environment variables

    Click the environment selector in the top right → Configure → Import. Select the environment JSON file exported from Postman. Verify that secrets are marked Secret in Bruno so they are not committed in plain text to Git.

  6. Version and share the collection

    Commit the api-tests/ folder to your repository: git add api-tests/ && git commit -m 'feat: migrate Postman collections to Bruno'. Each developer clones the repository and opens the folder in Bruno — no account configuration, no cloud workspace.

Deploy self-hosted Hoppscotch with Docker Compose

  1. Retrieve the official Docker Compose file

    Clone the repository: git clone https://github.com/hoppscotch/hoppscotch.git && cd hoppscotch. The compose.yml file contains three services: hoppscotch (frontend + API), db (PostgreSQL 15), and hoppscotch-migrate (migrations at startup).

  2. Configure environment variables

    Copy the example file: cp .env.example .env. Fill in at minimum: DATABASE_URL=postgresql://postgres:yourpassword@db:5432/hoppscotch, JWT_SECRET (a random string of at least 32 characters), VITE_BASE_URL=https://api.your-domain.com, VITE_SHORTCODE_BASE_URL=https://your-domain.com. For OAuth2 (login via GitHub, Google, or GitLab), fill in the corresponding keys in the Auth block.

  3. Start the services

    Run docker compose up -d. On first startup, the hoppscotch-migrate service applies PostgreSQL migrations, then stops — this is normal. Check with docker compose ps that hoppscotch and db are in running state.

  4. Configure the reverse proxy and TLS

    Add an nginx virtual host that proxies port 3000 to localhost:3000 and port 8080 (backend API) to localhost:8080. Obtain a Let's Encrypt certificate: certbot --nginx -d your-domain.com -d api.your-domain.com. Reload nginx: systemctl reload nginx.

  5. Create the first admin account

    Open https://your-domain.com in your browser. The first account created automatically receives admin rights. Go to https://your-domain.com/admin to manage users, enable or disable authentication methods, and define team policies.

  6. Import Postman collections into Hoppscotch

    In Hoppscotch, go to Collections → Import / Export → Import from Postman. Select your v2.1 JSON file. Collections, folders, requests, variables, and test scripts are imported. Share the collection with your team via the Share Collection menu — each connected member has access in real time.

Insomnia, a third commonly cited API client, went through a turbulent period in 2023: the Kong team removed local synchronization in favor of a mandatory cloud account, before reversing course under community pressure. The project is now split into two branches — insomnium (community fork, offline-first) and official Insomnia (open-core with optional cloud). The comparison below covers Insomnia in its current state (open-core, Apache 2.0 license), which remains a valid alternative for solo developers but loses its advantage when team collaboration is central.

Bruno vs Hoppscotch vs Insomnia — which to choose

Scroll the table

CriterionBrunoHoppscotch self-hostedInsomnia open-core
ModelDesktop client (MIT)Self-hosted web app (MIT)Desktop client (open-core, Apache 2.0)
Collection storage`.bru` files in GitPostgreSQL database on your VPSLocal files or paid cloud
Real-time collaborationVia Git (pull/push)Yes, native in web UINo on free plan (cloud required)
RAM required< 200 MB (client only)1 GB minimum (server)< 300 MB (client only)
Postman v2.1 importYes, nativeYes, nativeYes, native
OAuth2 / advanced authYesYes, with configurable providersYes
Automated tests (scripts)Yes (JS)Yes (JS)Yes (JS)
Team deploymentNo server — share via GitDocker Compose, 1 VPSCloud subscription or Enterprise self-hosting
Offline accessFullPartial (offline interface, sync impossible)Full

Migrating Postman automated tests

Postman pm.test() scripts use the global pm library. Bruno and Hoppscotch both expose a compatible API: test('test name', () => { ... }) with expect() for assertions. Conversion is straightforward for status code assertions (pm.response.to.have.status(200) → expect(response.status).toBe(200)) and JSON body assertions (pm.response.json() remains identical). Pre-request scripts that modify environment variables (pm.environment.set(...)) are natively supported by both tools.

Host Hoppscotch on a ServOrbit VPS

A VPS with pre-configured Docker is perfectly suited to hosting Hoppscotch: the hoppscotch + db (PostgreSQL 15) + nginx stack fits in 1 GB RAM for typical team usage, and scales to 2 GB if you enable mock generation or CI integration. A dedicated IPv4 simplifies DNS configuration and ensures your test instance traffic is never shared.

A VPS dedicated to your developer tools also centralizes other stack tools: Gitea for source code, Woodpecker CI for continuous integration, and Hoppscotch for API testing form a coherent set on the same server. ServOrbit offers developer-oriented VPS with pre-configured Docker to host Hoppscotch or any API from 99 DH/month.

Host your API testing tool on a developer VPS

ServOrbit offers VPS with root access, dedicated IPv4, and pre-configured Docker. Deploy self-hosted Hoppscotch in under an hour, with no additional network configuration.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab