diff --git a/docs/developer_guide/environment_setup.md b/docs/developer_guide/environment_setup.md index 9238db8c1778..b90db49522d7 100644 --- a/docs/developer_guide/environment_setup.md +++ b/docs/developer_guide/environment_setup.md @@ -32,3 +32,93 @@ Following any changes to `.pyx` or `.pxd` files, you can re-compile by running: or make build + +## Services +You can use `docker-compose.yml` file located in `.docker` directory +to bootstrap the Nautilus working environment. This will start the following services: + +```bash +docker-compose up -d +``` + +If you only want specific services running (like `postgres` for example), you can start them with command: + +```bash +docker-compose up -d postgres +``` + +Used services are: + +- `postgres` - Postgres database with root user `POSTRES_USER` which defaults to `postgres`, `POSTGRES_PASSWORD` which defaults to `pass` and `POSTGRES_DB` which defaults to `postgres` +- `redis` - Redis server +- `pgadmin` - PgAdmin4 for database management and administration + +> **Note:** Please use this as development environment only. For production, use a proper and more secure setup. + +After the services has been started, you must login with `psql` cli to create `nautilus` Postgres database. +To do that you can run, and type `POSTGRES_PASSWORD` from docker service setup + +```bash +psql -h localhost -p 5432 -U postgres +``` + +After you have long as `postgres` administrator, run `CREATE DATABASE` command with target name( we use `nautilus`): + +``` +psql (16.2, server 15.2 (Debian 15.2-1.pgdg110+1)) +Type "help" for help. + +postgres=# CREATE DATABASE nautilus; +CREATE DATABASE + +``` + +## Nautilus CLI Developer Guide + +## Introduction + +The Nautilus CLI is a command-line interface tool designed to interact +with the Nautilus Trader ecosystem. It provides commands for managing the Postgres database and other trading operations. + +> **Note:** The Nautilus CLI command is only supported on UNIX-like systems. + + +## Install + +You can install nautilus cli command with from Make file target, which will use `cargo install` under the hood. +And this command will install `nautilus` bin executable in your path if Rust `cargo` is properly configured. + +```bash +make install-cli +``` + +## Commands +You can run `nautilus --help` to inspect structure of CLI and groups of commands: + +### Database +These are commands related to the bootstrapping the Postgres database. +For that you work, you need to supply right connection configuration. You can do that through +command line arguments or `.env` file in the root directory or where the commands is being run. + +- `--host` arg or `POSTGRES_HOST` for database host +- `--port` arg or `POSTGRES_PORT` for database port +- `--user` arg or `POSTGRES_USER` for root administrator user to run command with (namely `postgres` root user here) +- `--password` arg or `POSTGRES_PASSWORD` for root administrator password +- `--database` arg or `POSTGRES_DATABASE` for both database **name and new user** that will have privileges of this database + ( if you provided `nautilus` as value, then new user will be created with name `nautilus` that will inherit the password from `POSTGRES_PASSWORD` + and `nautilus` database with be bootstrapped with this user as owner) + +Example of `.env` file + +``` +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 +POSTGRES_USERNAME=postgres +POSTGRES_DATABASE=nautilus +POSTGRES_PASSWORD=pass +``` + +List of commands are: + +1. `nautilus database init` - it will bootstrap schema, roles and all sql files located in `schema` root directory (like `tables.sql`) +2. `nautilus database drop` - it will drop all tables, role and data in target Postgres database