Marvin Installation Guide¶
Overview¶
Marvin consists of both backend and frontend components, each of which must be installed and configured to enable full
functionality.
- The backend (Marvin Web Services) is a SpringBoot application that
provides RESTful API endpoints for operations such as transforming, converting, exporting, and analyzing chemical
structures. - The frontend is a React application, which can be seamlessly embedded into HTML or integrated with other frontend
frameworks like Vue or Angular.
Our distribution packages bundle both components, tailored for specific platforms (Windows, Mac, Linux, and Docker image
as well), making them easy to install or deploy.
In these packages, the backend runs an instance of Marvin Web Services SpringBoot app, while the frontend is served as
static content.
The two components rely on each other and are tied together through a secure communication:
- The Marvin frontend is granted a valid license by the backend, without which it remains disabled and shows an error
message. - The Marvin Web Services backend only accepts requests coming from and signed by a Marvin frontend, and cannot
therefore be used outside the context of Marvin editor.
Quickstart¶
The following steps will guide you through the easiest installation process, in which most settings and configurations
are left untouched.
You can skip steps 1-2. if you already have Java installed, and steps 4-5 if you already have your license key and
license-manager configuration ready.
| Step | Windows | macOS | Linux |
|---|---|---|---|
| 1. Make sure at least Java 21 is installed Test it with java -version in a terminal: |
Win + R, type cmd and hit Enter |
Applications > Utilities > Terminal |
Ctrl + Alt + T |
| 2. Get Temurin OpenJDK if necessary here | |||
| 3. Get and run installer from our download page | 64 bit .exe | .dmg | .deb (Debian/Ubuntu) .rpm (Fedora) |
| 4. Get your own license key from your account | |||
| 5. Create a license settings with the following content (replace license key) | C:/Users/<username>/Chemaxon/license-manager.properties |
/root/.chemaxon/license-manager.properties |
/root/.chemaxon/license-manager.properties |
server=https://license.chemaxon.com |
|||
| 6. Start the Marvin WS service | execute C:\Program Files\Chemaxon\marvinws\run-marvinws (available in Start Menu) |
execute /Applications/Marvin\ Webservices/run-marvinws |
sudo systemctl start marvinws * |
| 7. Open Marvin in your browser: http://localhost:8080 |
* marvinws is supposed to be automatically enabled and running on Linux after installation. Test it with
sudo systemctl status marvinws
Deploy Marvin with Docker Compose¶
docker-compose.yml starts a standalone Marvin deployment for internal services
and external, on-premises installations. It includes the services needed by Marvin
and Centralized Charts:
| Service | Default URL | Purpose |
|---|---|---|
marvin |
http://localhost:8080 |
Marvin frontend and backend |
jms-calculations |
http://localhost:8064 |
JChem Microservices calculations used by Centralized Charts |
marvin-rendering-backend |
http://localhost:3000 |
Large-scale structure rendering and conversion |
Prerequisites¶
- Docker Engine with Docker Compose v2 (
docker compose) - Network access to
artifacts.chemaxon.com - Artifactory credentials authorized to pull every image in the compose file
- A valid license server key (
LICENSE_KEY_MARVIN; other services reuse it unless overridden) - Three available host ports (8080, 8064, and 3000 by default)
Obtain the deployment files¶
Download the versioned archive from Artifactory. Each Marvin build publishes a
single tarball, marvin-docker-compose-<BUILD_VERSION>.tar.gz, that contains
docker-compose.yml and a generated .env with image tags for that build.
Release bundles use:
chemaxon_toolkit_marvin-generic-release-local/com/chemaxon/marvin/marvin/<BUILD_VERSION>/marvin-docker-compose-<BUILD_VERSION>.tar.gz
Extract the archive into a working directory. On macOS, Linux, and Windows
(Command Prompt or PowerShell), run:
Windows (File Explorer): right-click marvin-docker-compose-<BUILD_VERSION>.tar.gz
and choose Extract All.... On older Windows builds that do not extract .tar.gz
natively, use 7-Zip (open the archive, then extract
docker-compose.yml and .env into the same folder).
Use docker-compose.yml and .env from the same archive. Mixing files from
different builds can produce an unsupported service set.
Configure .env¶
Open the extracted .env and set LICENSE_KEY_MARVIN.
Docker Compose automatically reads .env when it is in the working directory
beside docker-compose.yml.
Operating systems hide files whose names start with a dot (.env, .env.example)
in graphical file browsers. Enable hidden files if the environment file does not
appear next to docker-compose.yml.
macOS (Finder): press Command-Shift-Period (⌘⇧.). Press the same shortcut
again to hide them.
Windows (File Explorer):
- Windows 11: View → Show → Hidden items
- Windows 10: View → Hidden items
The files remain visible in a terminal (ls -a on macOS/Linux, dir /a on
Windows) even when Finder or Explorer hides them.
Set LICENSE_KEY_MARVIN. Leave LICENSE_KEY_JMS_CALCULATIONS and
LICENSE_KEY_MARVIN_RENDERING_BACKEND empty to reuse that key; set them
only to override. An empty LICENSE_KEY_MARVIN is not reused for the other
services.
| Variable | Service | Required |
|---|---|---|
LICENSE_KEY_MARVIN |
Marvin frontend and backend | Yes |
LICENSE_KEY_JMS_CALCULATIONS |
JMS calculations | No; empty values use LICENSE_KEY_MARVIN |
LICENSE_KEY_MARVIN_RENDERING_BACKEND |
Marvin rendering backend | No; empty values use LICENSE_KEY_MARVIN |
License keys are secrets. Do not commit .env, include it in deployment artifacts,
or paste it into logs or support tickets.
The remaining variables select image versions and published host ports:
| Variable | Default source |
|---|---|
MARVIN_VERSION |
The Marvin build version used to publish the bundle |
JMS_CALCULATIONS_VERSION |
The JMS calculations version for that Marvin build |
MARVIN_RENDERING_BACKEND_VERSION |
The rendering backend version for that Marvin build |
MARVIN_PORT |
8080 |
JMS_CALCULATIONS_PORT |
8064 |
MARVIN_RENDERING_BACKEND_PORT |
3000 |
Authenticate to Artifactory¶
Authenticate before pulling images:
Use an access token or API key through your organization's approved secret-handling
method. Do not put registry credentials in .env; the compose file does not read
them.
Confirm that all configured images are accessible:
If one image cannot be pulled, verify both its version and the account's entitlement
to the snapshot or release repository shown in docker-compose.yml.
Start the application¶
From the directory containing docker-compose.yml and .env:
Open http://localhost:8080 by default. The other services listen on their ports
listed above. Service startup may take a short time; inspect status and logs with:
A basic Marvin backend check is:
For a remote host, replace localhost with its DNS name and ensure the selected
ports are permitted by the host firewall.
Stop, restart, and upgrade¶
Stop the stack without deleting downloaded images:
Restart one service after configuration or license changes:
To upgrade, download a newer marvin-docker-compose-<BUILD_VERSION>.tar.gz,
extract it, re-enter the license keys in .env, and then run:
Keep the previous compose and version values available for rollback. The provided
stack does not define persistent volumes, so docker compose down removes the
containers and their writable container data.