# Cwtch Server

## Building

Pretty straight forward:
- build the app in `app/` with `go build`
- build the docker container in `docker/` with `docker build -f docker/Dockerfile . -t openpriv/server`

### Windows

The server package relies on sqlite which in turn requires the use of CGO. As per [this issue](https://github.com/golang/go/issues/12029) that means [TDM-GCC](https://jmeubank.github.io/tdm-gcc/download/) is required to be installed and used to compile on Windows

## Running

- cd app
- go build
- ./app

The app takes the following arguments
- -debug: enabled debug logging
- -exportServerBundle: Export the server bundle to a file called serverbundle
- -disableMetrics: Disable metrics reporting to serverMonitor.txt and associated tracking routines
- -dir [directory]: specify a directory to store server files (default is current directory) 

The app takes the following environment variables
- CWTCH_HOME: sets the config dir for the app
- DISABLE_METRICS: if set to any value ('1') it disables metrics reporting to serverMonitor.txt and associated tracking routines 

`env CONFIG_HOME=./conf ./app`

## Using the Server

When run the app will output standard log lines, one of which will contain the `serverbundle` in purple. This is the part you need to capture and import into a Cwtch client app so you can use the server for hosting groups

## Docker

Build by executing `docker build -f docker/Dockerfile . -t openpriv/server`

or run our prebuild ones with

`pull openpriv/cwtch-server`

and run it. It stores all Cwtch data in a Volume at `/var/lib/cwtch` so if you want the server data to persist you would run

`docker run -v /var/lib/cwtch/server01:/var/lib/cwtch openpriv/cwtch-server`

to create a persistent container you might try a command like:

`docker run --name cwtch -v /var/lib/cwtch/server01:/var/lib/cwtch --restart always openpriv/cwtch-server`
