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:
- Clone the repository
- Copy the example environment file and fill it in
- Run the database migrations and the seed
- 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.
Freelancezero charges 0% commission — no fees to apply, no cut of your invoice.
Create a free accountKeep reading
How to Raise Your Freelance Rates Without Losing Clients
The script, the timing, and the arithmetic — including why losing a few clients to a rate rise usually means you earn more.
Freelancer Taxes 101: What to Set Aside and When
The tax basics every freelancer needs: what percentage to reserve, what you can deduct, and the quarterly rhythm that avoids nasty surprises.
How to Spot Freelance Scams (and Never Work Unpaid Again)
The seven scams that target freelancers, the warning signs in the first message, and the rules that make you nearly unscammable.