NiceTryBot REAL HUMANS ONLY

Deploy

We don't host it.
You do.

NiceTryBot runs on your own servers, in front of your own sites, and we'd rather not know anything about you. Security is a you thing, so we made the you part short: one line on Ubuntu, a compose file, a droplet, a stack.

Free. Source available under the Elastic License 2.0.

A robot leaves a wrapped parcel with a key on a doorstep and walks away waving

The public release is being prepared. The code, the images and the installer land together, and this page is the recipe they ship with. The install address already answers, and says so until then.

We don't want your data.

No account to run it, no telemetry, no call home. The one exception is a paid add-on asking us once a day whether its key is still good, and the answer is yes or no.

We don't want to host it.

Whatever sits in front of your sites sees every request, every handshake, every IP. That belongs on a box you control, not on ours.

Security is a you thing.

Nobody else is responsible for your sites: not a vendor, not a cloud, not us. You own the box, the keys and the decisions. We give you the code, the recipes and the checks, and we keep them short.

Before you start

What you need.

A box, two open ports and DNS. That's the list.

Pick your box

Four ways in. All of them short.

One installer underneath. The droplet and the stack just run it for you on first boot.

Any Ubuntu server

One line. The installer puts Docker on if it's missing, writes a compose file and secrets, asks for the control panel's hostname and brings the stack up.

bash
curl -fsSL https://nicetrybot.com/install.sh | bash
  1. 01 Run it as a user who can sudo. It's plain shell: read it first at nicetrybot.com/install.sh.
  2. 02 Point a DNS record for the control panel's hostname at the server.
  3. 03 Open the control panel, make your admin account, add your first domain.
  4. 04 Look at the site through its preview hostname, then move the site's DNS.

Docker Compose

Already on Docker? The same installer writes compose.yml and .env into ./nicetrybot and stops, so you read, change and run them yourself.

bash
curl -fsSL https://nicetrybot.com/install.sh | bash -s -- --compose-only
cd nicetrybot && docker compose up -d
  1. 01 Edge, app, worker, scheduler, Postgres 17 and Valkey, one container each.
  2. 02 Every setting in .env has a comment. Point it at a Postgres you already run if you like.
  3. 03 The edge listens on 80 and 443. Nothing else is public.

DigitalOcean

A 1-Click droplet with the stack baked in. Create it, SSH in once, and the welcome message finishes the setup.

  1. 01 Create the droplet from the NiceTryBot image in the Marketplace.
  2. 02 Point DNS at the droplet, or at a Load Balancer in TCP passthrough mode for 80 and 443.
  3. 03 To grow, add droplets behind the balancer. They share the same Postgres.

AWS

A CloudFormation stack: an instance behind a Network Load Balancer with TCP listeners, and RDS Postgres and ElastiCache Valkey if you want them managed.

  1. 01 Pick the instance size and whether to use RDS.
  2. 02 Point DNS at the load balancer's hostname.
  3. 03 Not an ALB, not CloudFront: they terminate TLS, and the edge has to see the handshake.

Forge, Ploi, or a PHP box you already have

The control panel is a Laravel app, so Forge or Ploi can run it the way they run any Laravel app, with a worker and the scheduler. The edge is the part that can't live behind their nginx: nginx would terminate TLS before the edge sees the handshake. Give the edge a box of its own with the one-liner and point it at the app.

The one rule, whichever box: nothing may terminate TLS in front of the edge. It reads each visitor's own handshake, so a balancer passes raw TCP through on 80 and 443. An NLB with TCP listeners, a DigitalOcean balancer in passthrough, HAProxy in TCP mode. Not an ALB, not CloudFront, not a CDN proxy.

Agents welcome

Bring your agent.

Deployments are what coding agents are good at: read a brief, run the commands, check the result. So we wrote the brief for them. Paste the prompt into Claude Code, Codex or whichever agent has a shell on your server, and keep DNS and keys in your own hands.

  • The brief is plain Markdown at nicetrybot.com/deploy/agent.md: the stack, what it needs, the one rule, the steps and the checks.
  • For crawlers and model tools there's nicetrybot.com/llms.txt.
  • The brief tells the agent what to leave to you: DNS, cloud credentials, the admin account, licence keys and the secrets in .env.

The prompt

prompt
Deploy NiceTryBot on this server for me.

Read https://nicetrybot.com/deploy/agent.md first and follow it. My setup:
- Server: <Ubuntu 24.04, 2 vCPU, 4 GB, public IP ...>
- Control panel hostname: <panel.example.com>
- First site to protect: <www.example.com>, origin <https://origin.example.com>
- In front of the server: <nothing | a load balancer that passes raw TCP>

Rules:
- Show me each command before you run it. Never terminate TLS in front of the edge.
- Don't change DNS. Tell me which records to set and I'll do it.
- Don't send anything about this server to anyone, NiceTryBot included.
- When it's up, run the checks in the brief and show me the results.

Fill in the angle brackets. The rules at the bottom are the ones we'd want kept, too.

Then snap on what you need.

The core watches, tags and sends bots to the gym on its own. Add-ons install with Composer when you want captchas, fingerprints, or to see inside a request.