Central server for the OKO app. Manges users, provides map tiles and the whole map tile pack, receives geo features submitted by users and serves them back.
The only requirement to build the server is go.
In the root of the project, run
go build
which will produce the executable oko-server which you can just run (see Usage).
Dockerfile is included, therefore to build the docker image, all that is needed to do is to run
docker build -t name:tag /path/to/the/root/of/the/repository
or, if you have no local changes, you can build the image even without cloning the repository at all
docker build -t name:tag https://github.com/Cernobor/oko-server.git
The image can then be run using the name:tag that you have given in the previous step.
Volume /data is available to share data between the host and the container.
docker run -v /path/to/data:/data name:tag [options...]
Just run the previously built (see Building) executable
/path/to/oko-server [options...]
The server is configurable via a set of options, some of which are required. The table of options follows:
| option | description |
|---|---|
-tilepack <path> |
Required. File that will be sent to clients when they request a tile pack, also used to serve tiles in online mode. |
-port <port> |
Port where the server will listen. Default is 8080. |
-dbfile <path> |
Path to the sqlite3 database file used for data storage. Will be created, if it does not exist upons startup. Default is ./data.sqlite3. |
-min-zoom <int> |
Minimum supported zoom. Clients will receive this value during handshake. Default is 1. |
-default-center-lat <float> |
Latitude of the default map center, formatted as a floating point number of degrees. Clients will receive this value during handhake. Default is 0. |
-default-center-lng <float> |
Longitude of the default map center, formatted as a floating point number of degrees. Clients will receive this value during handhake. Default is 0. |
-max-photo-width <int> |
Maximum width of stored pohotos. Uploaded photos exceeding this width will be rescaled to fit (keeping aspect ratio). If 0, no scaling will be done. Default is 0. |
-max-photo-height <int> |
Maximum height of stored pohotos. Uploaded photos exceeding this height will be rescaled to fit (keeping aspect ratio). If 0, no scaling will be done. Default is 0. |
-photo-quality <int> |
JPEG photo quality. Photos are reencoded to JPEG with this quality setting when uploaded. Default is 90. |
-debug |
If specified, logging level will be set do debug instead of info. w |
- Go - Programming language
- Gin - HTTP handler
- SQLite - Database
- mbtileserver - MBTiles tile server
See also the list of contributors who participated in this project.
- Hat tip to anyone whose code was used
