> For the complete documentation index, see [llms.txt](https://docs.ohalee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ohalee.com/products/obsidian-license/installation.md).

# Getting Started

You use Obsidian License through the hosted dashboard at [license.ohalee.com](https://license.ohalee.com). There's no server to run — you upload your plugin, download the loader, and configure it with values the dashboard gives you.

## 1. Create an account

Sign up at [license.ohalee.com](https://license.ohalee.com) and log in. Your plan determines your limits (products, licenses, seats) and which growth features are available — tiers, beta channel, trials, portal, branding and resellers.

## 2. Create a product and upload your plugin

1. In the dashboard, create a **Product**.
2. **Upload** your compiled plugin jar. The platform generates an AES key, encrypts the jar at rest, and discards the plaintext.

Your plugin jar must implement the `ProtectedModule` contract and declare the `Obsidian-Module` manifest attribute — see [for-developers.md](/products/obsidian-license/for-developers.md).

## 3. Issue a license

Create a **License** for that product — set its expiry, seat (machine-activation) limit and any tier/entitlements. You can issue keys manually, in bulk, or automatically from a marketplace purchase (see [marketplace-automation.md](/products/obsidian-license/marketplace-automation.md)).

## 4. Get the loader and configure it

1. **Download the loader** jar from your dashboard. This is the thin, generic Paper plugin you ship to customers — you do not build it yourself.
2. Drop it into the Paper server's `plugins/` folder.
3. Edit `plugins/ObsidianLoader/config.yml` with the values shown in your dashboard:

   * `serverUrl` — `https://license.ohalee.com`
   * `licenseKey` — the key you issued
   * `productId` — your product's id
   * `serverPublicKey` — the Ed25519 public key shown in your dashboard (pin it so a rogue server can't substitute a payload)

   See [configuration.md](/products/obsidian-license/configuration.md) for the full file.

## 5. Start the server

Start Paper. The loader activates, decrypts your plugin in memory, and enables it. Your dashboard's **access log** shows the activation (IP / OS / hardware id).

{% hint style="warning" %}
The loader **fails closed** — the protected plugin will not run if the config is missing/invalid or the license server is unreachable. There is no offline grace mode by default.
{% endhint %}

## 6. Ship to customers

Distribute the loader jar (with the license key) to your buyers, or automate key delivery from the marketplaces you sell on. From then on you manage everything — revoke, expire, rebind hardware, ban abusive IPs, push new versions — from the dashboard, and every change takes effect on the affected servers on their next boot.

## Self-hosting

Obsidian License is also self-hostable if you'd rather run your own instance and own your database and signing keys. That's a separate operator setup (Docker + Postgres) outside the scope of these customer-facing docs — contact support if you need it.
