All resources
Product
8 min read

Self-Hosting Your Own Freelance Marketplace: A Practical Guide

Freelancezero is open source. Here is how to run your own instance — for an agency, a community, or a niche marketplace of your own.


Freelancezero is MIT-licensed and self-hostable. This guide covers who should run their own instance, what it takes, and the decisions that matter.

Why self-host

You run an agency or collective. A private marketplace where your vetted freelancers meet your clients, on your domain, with your branding.

You serve a niche. A marketplace exclusively for, say, accessibility specialists or Shopify developers is a viable business — the incumbents are too general to serve narrow communities well.

You need data residency. Some clients cannot use a platform that stores data outside their jurisdiction. Self-hosting puts the database where you need it.

You do not want to depend on us. The strongest argument for open source: our promise of 0% fees is only as good as our incentives. The licence means you never have to trust it.

What you need

  • A server or container host (Docker Compose works out of the box)
  • A PostgreSQL database
  • A domain
  • An SMTP provider for transactional email
  • Optional: S3-compatible storage for uploads

A small VPS handles a community-scale instance comfortably.

Getting it running

The repository ships with Docker Compose covering the app, Postgres, and a local mail catcher for development:

  1. Clone the repository
  2. Copy the example environment file and fill it in
  3. Run the database migrations and the seed
  4. Start the stack

The environment file is the whole configuration surface. The variables that matter most:

  • Database URL — your Postgres connection
  • Auth secret — generate a long random value; never reuse the example
  • App URL — the public URL, used in emails and callbacks
  • Email — either SMTP credentials or a Resend API key
  • Payments driver — which payment adapter to use

The decisions that actually matter

1. Email deliverability

The most common thing self-hosters get wrong. The platform requires email confirmation before users can post or apply — so if email does not arrive, every new user is stuck.

Do this properly:

  • Use a real transactional provider, not your own SMTP server
  • Verify your sending domain
  • Configure SPF, DKIM, and DMARC before launch
  • Send a test signup end-to-end and confirm it lands in an inbox, not spam

2. Payments stay non-custodial

The platform never holds funds — clients pay freelancers directly. Keep it that way. Custodying other people's money turns a side project into a regulated financial business with licensing obligations. The non-custodial design is a deliberate safety feature, not a limitation.

3. Approval policy

New accounts require manual approval before posting or applying. For a private agency instance that is ideal. For an open marketplace it is a bottleneck — decide who reviews the queue and how fast, before you launch.

4. Backups

Postgres holds everything: users, jobs, proposals, contracts, messages. Automate backups, and test a restore before you need one. An untested backup is a hypothesis.

5. Moderation

An open marketplace attracts spam. The platform includes proposal quality scoring and admin approval; you still need a human policy for reports and abuse.

Cold-start reality

The hardest part is not technical. A marketplace with no jobs attracts no freelancers, and vice versa.

Approaches that work:

  • Start one-sided. An agency instance already has both sides, which is why it is the easiest case.
  • Seed the demand side. The platform includes an external-job ingestion system that can seed listings from public job boards, so freelancers arrive to a populated marketplace.
  • Niche down hard. "Freelance marketplace" competes with everyone. "Marketplace for Django contractors in the EU" competes with nobody.

What you are responsible for

Running your own instance makes you the data controller. That means privacy compliance, security patching, uptime, backups, and support for your users. The licence gives you the software, not an operations team.

If that is more than you want, use the hosted version — it is free and takes 0% commission either way.

Self-hosting is the right call when you need control, branding, or data residency. It is the wrong call if you simply want a cheaper platform — the hosted one already costs nothing.

The code is on GitHub under the MIT licence. Deployment targets worth considering: Vercel for the app, Docker for a self-managed stack, and Resend for transactional email. Contributions welcome.

Keep 100% of what you earn

Freelancezero charges 0% commission — no fees to apply, no cut of your invoice.

Create a free account

Keep reading