2021-11-13 01:46:15 +00:00
|
|
|
# Upgrading
|
|
|
|
|
|
|
|
This document describes the general steps to upgrade between major changes.
|
|
|
|
Simple migrations, e.g. for adding schema changes, are not documented
|
|
|
|
explicitly. Once we implement them, their usage will be described in the
|
|
|
|
[README](./README.md).
|
|
|
|
|
|
|
|
|
|
|
|
## v0.2 to v0.3 (MongoDB to PostgreSQL)
|
|
|
|
|
|
|
|
* Shut down all services
|
|
|
|
* Obviously, now is a good time to perform a full backup ;)
|
2021-11-28 23:26:54 +00:00
|
|
|
* Update the codebase (`git pull`, `git submodule update`).
|
2021-11-13 01:46:15 +00:00
|
|
|
* Update docker-compose.yaml from the example. Leave the MongoDB service in
|
|
|
|
place for now, but update all other service descriptions. You can remove
|
2021-11-25 11:21:31 +00:00
|
|
|
`redis` already. Generate a better password than the default for your
|
2021-11-28 23:26:54 +00:00
|
|
|
postgres user. Traefik rules have been simplified as all routes are handled
|
|
|
|
by the portal service now.
|
|
|
|
* Start up the `mongo` and `postgres` services. Wait for postgres to finish
|
|
|
|
initializing (see [README](README.md)).
|
2021-11-25 11:21:31 +00:00
|
|
|
* Build the new image (e.g. with `docker-compose build portal`)
|
2021-11-13 01:46:15 +00:00
|
|
|
* Configure your API. The example config file is `api/config.py.example`, and
|
|
|
|
it will need to be mounted to `api/config.py` in the container. Ignore the
|
|
|
|
Keycloak options for now.
|
2021-11-25 11:21:31 +00:00
|
|
|
* Prepare the database:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker-compose run --rm portal python tools/reset_database.py
|
|
|
|
docker-compose run --rm portal python tools/prepare_sql_tiles.py
|
|
|
|
```
|
2021-11-28 23:26:54 +00:00
|
|
|
* Import OSM data (see [README](README.md)).
|
2021-11-17 17:37:54 +00:00
|
|
|
* Run the database migration script:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker-compose run --rm \
|
|
|
|
-v $PWD/export:/export \
|
2021-11-28 23:26:54 +00:00
|
|
|
portal \
|
2021-11-17 17:37:54 +00:00
|
|
|
python tools/import_from_mongodb.py mongodb://mongo/obs \
|
|
|
|
--keycloak-users-file /export/users.json
|
|
|
|
```
|
2021-12-01 08:42:27 +00:00
|
|
|
There is an option `--keep-api-keys` which means the users won't have to
|
|
|
|
reconfigure the devices they used their API key in. **However**, please try
|
|
|
|
to avoid this option if at all possible, as the old keys are *very* insecure.
|
|
|
|
The default without this option to generate a new, secure API key for each
|
|
|
|
user.
|
2021-11-13 01:46:15 +00:00
|
|
|
* Shut down the `mongo` service, you can now remove it from docker-compose.yaml
|
|
|
|
* Start `keycloak` and configure it, similarly to how it was configured in the
|
|
|
|
development setup (but choose more secure options). Update the API config
|
2021-11-17 17:37:54 +00:00
|
|
|
file to match your keycloak configuration. Import the file
|
|
|
|
`export/users.json` into your realm, it will re-add all the users from the
|
|
|
|
old installation. You should delete the file and `export/` folder afterwards.
|
2021-11-28 23:26:54 +00:00
|
|
|
* Start `portal`.
|
|
|
|
* Consider configuring a worker service. See [deployment/README.md](deployment/README.md).
|
2021-11-13 01:46:15 +00:00
|
|
|
|