deployment instructions
This commit is contained in:
parent
5ade3af325
commit
f4deb20fbc
4 changed files with 150 additions and 23 deletions
22
README.md
22
README.md
|
@ -90,27 +90,11 @@ It takes a while to build the image so please be patient :)
|
|||
|
||||
## Development:
|
||||
|
||||
See [DEVELOPMENT.md](./DEVELOPMENT.md)
|
||||
See [HADCKING.md](./docs/HACKING.md)
|
||||
|
||||
## How to build
|
||||
## Deployment:
|
||||
|
||||
- Install Cargo using [rustup](https://rustup.rs/) with:
|
||||
|
||||
```
|
||||
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
```
|
||||
|
||||
- Clone the repository with:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/mCaptcha/guard
|
||||
```
|
||||
|
||||
- Build with Cargo:
|
||||
|
||||
```
|
||||
$ cd guard && cargo build
|
||||
```
|
||||
See [DEPLOYMENT.md](./docs/DEPLOYMET.md)
|
||||
|
||||
## Configuration:
|
||||
|
||||
|
|
|
@ -6,18 +6,16 @@ services:
|
|||
ports:
|
||||
- 7000:7000
|
||||
environment:
|
||||
DATABASE_URL: postgres://postgres:password@postgres:5432/postgres
|
||||
DATABASE_URL: postgres://postgres:<enter-password>@postgres:5432/postgres # set password at placeholder
|
||||
RUST_LOG: debug
|
||||
|
||||
postgres:
|
||||
image: postgres:13.2
|
||||
#ports: 5432:5432
|
||||
volumes:
|
||||
- mcaptcha-guard-data:/var/lib/postgresql/
|
||||
environment:
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_PASSWORD: # enter password
|
||||
PGDATA: /var/lib/postgresql/data/guard/
|
||||
|
||||
|
||||
volumes:
|
||||
mcaptcha-guard-data:
|
||||
|
|
145
docs/DEPLOYMENT.md
Normal file
145
docs/DEPLOYMENT.md
Normal file
|
@ -0,0 +1,145 @@
|
|||
# Deployment instructions:
|
||||
|
||||
There are three ways to deploy mCaptcha:
|
||||
|
||||
1. Docker
|
||||
2. Docker compose
|
||||
3. Bare metal
|
||||
|
||||
## Docker
|
||||
|
||||
NOTE: We'll publish pre-built images once we reach `alpha`.
|
||||
|
||||
1. Build image:
|
||||
|
||||
```bash
|
||||
$ cd guard && docker build -t mcaptcha/guard:latest .
|
||||
```
|
||||
|
||||
2. Set configuration in [configuration file](../config/default.toml)
|
||||
|
||||
3. Run image:
|
||||
|
||||
If you have already have a Postgres instance running, then:
|
||||
|
||||
```bash
|
||||
docker run -p <host-machine-port>:<port-in-configuration-file> \
|
||||
--add-host=database:<database-ip-addrss> \
|
||||
-e RUST_LOG=debug \
|
||||
-e DATABASE_URL="postgres://<db-user>:<db-password>@database:<db-port>/<db-name>" \
|
||||
mcaptcha/guard:latest
|
||||
```
|
||||
|
||||
If you don't have a Postgres instance running, you can either install
|
||||
one using a package manager or launch one with docker. A [docker-compose
|
||||
configuration]('../docker-compose.yml) is available that will launch both
|
||||
a database instance guard instance.
|
||||
|
||||
## With docker-compose
|
||||
|
||||
1. Follow steps above to build docker image.
|
||||
|
||||
2. Set database password [docker-compose configuration]('../docker-compose.yml).
|
||||
|
||||
3. Launch network:
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d
|
||||
```
|
||||
|
||||
## Bare metal:
|
||||
|
||||
The process is tedious, most of this will be automated with a script in
|
||||
the future.
|
||||
|
||||
### 1. Install postgres if you don't have it already.
|
||||
|
||||
### 2. Create new user for running `guard`:
|
||||
|
||||
```bash
|
||||
$ sudo useradd -b /srv -m -s /usr/bin/zsh 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. Build `guard`:
|
||||
|
||||
To build `guard`, you need the following dependencies:
|
||||
|
||||
1. rust
|
||||
2. node(`v14.16.0`)
|
||||
3. yarn(JavaScript package manager)
|
||||
4. make
|
||||
|
||||
## How to build
|
||||
|
||||
1. Install Cargo using [rustup](https://rustup.rs/) with:
|
||||
|
||||
```bash
|
||||
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
```
|
||||
|
||||
2. Install node(`v14.16.0`)
|
||||
|
||||
3. Install yarn(JavaScript package manager)
|
||||
|
||||
4. Build with make:
|
||||
|
||||
```bash
|
||||
$ make dev-env && \
|
||||
make release
|
||||
```
|
||||
|
||||
### 5. Install package:
|
||||
|
||||
```bash
|
||||
$ sudo cp ./target/release/guard /usr/bin/ && \
|
||||
mkdir sudo /etc/guard && \
|
||||
sudo cp config/default.toml /etc/guard/config.toml
|
||||
```
|
||||
|
||||
### 6. Systemd service configuration:
|
||||
|
||||
1. Copy the following to `/etc/systemd/system/guard.service`:
|
||||
|
||||
```systemd
|
||||
[Unit]
|
||||
Description=mCaptcha: a CAPTCHA system that gives attackers a run for their money
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=mcaptcha
|
||||
ExecStart=/usr/bin/guard
|
||||
Restart=on-failure
|
||||
RestartSec=1
|
||||
SuccessExitStatus=3 4
|
||||
RestartForceExitStatus=3 4
|
||||
SystemCallArchitectures=native
|
||||
MemoryDenyWriteExecute=true
|
||||
NoNewPrivileges=true
|
||||
Environment="RUST_LOG=info"
|
||||
|
||||
[Unit]
|
||||
After=sound.target
|
||||
Wants=network-online.target
|
||||
Wants=network-online.target
|
||||
Requires=postgresql.service
|
||||
After=syslog.target
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
2. Enable service:
|
||||
```bash
|
||||
$ sudo systemctl daemon-reload && \
|
||||
sudo systemctl enable guard && \ # Auto startup during boot
|
||||
sudo systemctl start guard
|
||||
``
|
Loading…
Reference in a new issue