Database and cache

mCaptcha server requires dependencies like a Postgres database and a Redis cache



  • Database migrations are baked into the server binary so don’t worry about them.

  • When compiling from source, unset database configuration(comment out database configuration/ unset relevant environment variables). mCaptcha uses sqlx database client library which checks SQL queries at compile time. So if you are starting with a fresh database without migrations applied, compilation will fail.


  • Redis is an optional dependency. Currently, the non-Redis configuration doesn’t persist CAPTCHA heat. So if there’s a systems failure, CAPTCHA heat will be reset and visitor count will start from 0. For small installations, this should post a problem as heat is short lived and is reset anyways at cool down period.

  • mCaptcha uses a custom Redis module called cache to overcome some of Redis' limitations.


Once again, there are two ways to go about this:

  1. Docker
  2. Bare metal



Download and run Postgres

1docker create --name mcaptcha-postgres \
2  -e POSTGRES_PASSWORD=<database-password> \
3  -p 5432:5432 \
4  postgres && docker start mcaptcha-postgres


1docker create --name mcaptcha-cache \
2  -p 6379:6379 \
3  mcaptcha/cache && docker start mcaptcha-cache

See mCaptcha/cache for more details.

1. Install Postgres if you don’t have it already.

For Debian based distributions:

1sudo apt install postgres

2. Create new user for running mCaptcha

1$ sudo useradd -b /srv -m -s /usr/bin/bash mcaptcha

3. Create new user in Postgres

1$ sudo -iu postgres # switch to `postgres` user
2$ psql
3postgres=#  CREATE USER mcaptcha WITH PASSWORD 'my super long password and yes you need single quote';
4$  createdb -O mcaptcha mcaptcha # create db 'mcaptcha' with 'mcaptcha' as owner

4. Install mCaptcha/cache

See mCaptcha/cache for more details.

Edit this page on GitHub