39 lines
3.5 KiB
Markdown
39 lines
3.5 KiB
Markdown
# Mare Synchronos Docker Setup
|
|
This is primarily aimed at developers who want to spin up their own local server for development purposes without having to spin up a VM.
|
|
Obligatory requires Docker to be installed on the machine.
|
|
|
|
There are two directories: `build` and `run`
|
|
|
|
## 1. build images
|
|
There is two ways to build the necessary docker images which are differentiated by the folders `-local` and `-git`
|
|
- -local will run the image build against the current locally present sources
|
|
- -git will run the image build against the latest git main commit
|
|
It is possible to build all required images at once by running `docker-build.bat/sh` (Server, Servies, StaticFilesServer) or all 3 separately with `docker-build-<whatever>.bat/sh`
|
|
|
|
## 2. Configure ports + token
|
|
You should set up 2 environment variables that hold server specific configuration and open up ports.
|
|
The default ports used through the provided configuration are `6000` for the main server and `6200` as well as `6201` for the files downloads.
|
|
Both ports should be open to your computer through your router if you wish to test this with clients.
|
|
|
|
Furthermore there are two environment variables `DEV_MARE_CDNURL` and `DEV_MARE_DISCORDTOKEN` which you are required to set.
|
|
`DEV_MARE_CDNURL` should point to `http://<yourip or dyndns>:6200/cache/` and `DEV_MARE_DISCORDTOKEN` is an oauth token from a bot you need to create through the Discord bot portal.
|
|
You should also set `DEV_MARE_CDNURL2` to `http://<yourip or dyndns>:6201/cache/`
|
|
It is enough to set them as User variables. The compose files refer to those environment variables to overwrite configuration settings for the Server and Services to set those respective values.
|
|
It is also possible to set those values in the configuration.json files themselves.
|
|
Without a valid Discord bot you will not be able to register accounts without fumbling around in the PostgreSQL database.
|
|
|
|
## 3. Run Mare Server
|
|
The run folder contains two major Mare configurations which is `standalone` and `sharded`.
|
|
Both configurations default to port `6000` for the main server connection and `6200` for the files downloads. Sharded configuration additionally uses `6201` for downloads. No HTTPS.
|
|
All `appsettings.json` configurations provided are extensive at the point of writing, note the differences between the shard configurations and the main servers respectively.
|
|
They can be used as examples if you want to spin up your own servers otherwise.
|
|
|
|
The scripts to start the respective services are divided by name, the `daemon-start/stop` files use `compose up -d` to run it in the background and to be able to stop the containers as well.
|
|
The respective docker-compose files lie in the `compose` folder. I would not recommend editing them unless you know what you are doing.
|
|
All data (postgresql and files uploads) will be thrown into the `data` folder after startup.
|
|
All logs from the mare services will be thrown into `logs`, divided by shard, where applicable.
|
|
|
|
The `standalone` configuration features PostgeSQL, Mare Server, Mare StaticFilesServer and Mare Services.
|
|
The `sharded` configuration features PostgreSQL, Redis, HAProxy, Mare Server Main, 2 Mare Server Shards, Mare Services, Mare StaticFilesServer Main and 2 Mare StaticFilesServer Shards.
|
|
Haproxy is set up that it takes the same ports as the `standalone` configuration and distributes the connections between the shards.
|
|
In theory it should be possible to switch between the `standalone` and `sharded` configuration by shutting down one composition container and starting up the other. They share the same Database. |