This guide walks you through the complete process of getting a Lazybot instance running from source: cloning the repository, installing the local Maven libraries, filling in yourDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Apeuriox/lazybot-renewal/llms.txt
Use this file to discover all available pages before exploring further.
application.yaml, initialising the database, and building the self-contained JAR. By the end you will have a working lazybot-1.2.0.jar ready to run directly or deploy under systemd.
Step-by-Step Setup
Install Local Maven Libraries
Lazybot depends on two JNI libraries that are not available on Maven Central. Both JARs are bundled in the resvg-jni — fast SVG-to-PNG rendering:
lib/ directory. Install them into your local Maven repository before attempting a build.rosu-jni — osu! difficulty and performance-point calculation:Configure application.yaml
Copy the provided template and edit the required values:Open Discord bot credentials — required if osu! API credentials — obtained from your OAuth application at osu.ppy.sh/home/account/edit:Platform toggles — enable whichever platforms you need:
src/main/resources/application.yaml in your editor. At minimum, fill in the sections below.Database connection — replace the placeholder URL, username, and password:lazybot.global.discord.enabled: true:Initialise the Database
Create the The schema name must match the value in
lazybot_schema database and run the bundled SQL script to build all required tables:spring.datasource.url inside your application.yaml.Build the JAR
Use the Maven wrapper to compile and package Lazybot into a single executable JAR. The On success, the artifact is written to:
--enable-preview flag is applied automatically by the build configuration in pom.xml.Environment Variables
Lazybot reads three optional environment variables at startup. Setting them explicitly is recommended for production deployments so that cache files land in predictable, persistent locations rather than system temp directories.| Variable | Purpose | Default |
|---|---|---|
LAZYBOT_DIR | Working directory for Lazybot cache files (avatars, map backgrounds, extracted static assets) | OS temporary directory |
RESVG_DIR | Directory where the resvg render-process writes its native library cache | OS temporary directory |
ROSU_LIB_PATH | Directory containing the Rosu native library (.so on Linux, .dll on Windows) | — |
Full Run Command with Environment Variables
Local Testing
What Happens at Startup
When Lazybot starts,InitializeConfig (an ApplicationRunner) performs three tasks in order:
ResourceMonitor.initResources()— resolvesLAZYBOT_DIR, creates the required subdirectory structure (osuFiles/,static/,static/badge/,static/assets/, etc.), and extracts bundled static assets from inside the JAR into that working directory.tokenMonitor.refreshClientToken()— fetches a fresh osu! client credentials token from the osu! API using your configuredclient_idandclient_secret.tokenMonitor.refreshPPPlusClientToken()— fetches a token for the pp+ scoring endpoint using thelazybot.plus.*credentials.
LAZYBOT_DIR is not set, a temporary directory is created automatically and a warning is logged. The application will still start, but cache files will be lost on reboot.