website/content/docs/self-hosting/dependencies.md

102 lines
2.4 KiB
Markdown
Raw Normal View History

2021-07-21 15:49:53 +05:30
---
2022-08-01 19:16:21 +05:30
title: "Database and cache"
2021-07-21 15:49:53 +05:30
description: "mCaptcha server requires dependencies like a Postgres
database and a Redis cache"
lead: "mCaptcha server requires dependencies like a Postgres
database and a Redis cache"
date: 2021-07-21 14:49
lastmod: 2021-07-21 14:49
draft: false
images: []
menu:
docs:
2023-10-27 21:39:40 +05:30
parent: "Self-Hosting"
2023-12-09 03:43:25 +05:30
weight: 535
2021-07-21 15:49:53 +05:30
toc: true
---
## Notes
### Database
- 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`](https://crates.io/crates/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
- 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](https://github.com/mCaptcha/cache) to overcome some of Redis'
limitations.
## Instructions
Once again, there are two ways to go about this:
1. Docker
2. Bare metal
### Docker
### Database
Download and run Postgres
```bash
docker create --name mcaptcha-postgres \
2022-08-01 19:16:21 +05:30
-e POSTGRES_PASSWORD=<database-password> \
2021-07-21 15:49:53 +05:30
-p 5432:5432 \
postgres && docker start mcaptcha-postgres
```
### Redis
```bash
docker create --name mcaptcha-cache \
-p 6379:6379 \
mcaptcha/cache && docker start mcaptcha-cache
```
See [mCaptcha/cache](https://github.com/mCaptcha/cache) for more
details.
### 1. Install Postgres if you don't have it already.
For Debian based distributions:
```bash
sudo apt install postgres
```
### 2. Create new user for running `mCaptcha`
```bash
$ sudo useradd -b /srv -m -s /usr/bin/bash mcaptcha
```
### 3. Create new user in Postgres
```bash
$ sudo -iu postgres # switch to `postgres` user
$ psql
postgres=# CREATE USER mcaptcha WITH PASSWORD 'my super long password and yes you need single quote';
$ createdb -O mcaptcha mcaptcha # create db 'mcaptcha' with 'mcaptcha' as owner
```
### 4. Install [`mCaptcha/cache`](https://github.com/mCaptcha/cache)
See [`mCaptcha/cache`](https://github.com/mCaptcha/cache) for more
details.