Identica
Installation

Normal Installation

Standard installation path without replication.

Use this path when you want to use Identica on a simple Minecraft server setup without shared restart-surviving state. It is meant for straightforward usage, simple routing, and normal day-to-day operation where cache and pending journey state do not need to survive plugin restarts.

Scope

This guide covers the basic installation needs most users expect from existing authentication plugins. Use the Providers overview to see the full set of providers you can install and use. Those broader provider choices are not covered by this installation page.

What this path assumes

  • one Identica runtime is enough
  • you want a simple setup instead of a replicated environment
  • sessions, cache, and pending journey state do not need to survive plugin restarts
  • a simple routing layout is enough for the server or proxy

If you do need sessions and pending state to survive plugin restarts, use Advanced installation. That requires replication to be enabled.

Installation steps

Download the artifacts

Use GitHub releases when you want stable published versions.

Download flow:

  1. Open the releases page.
  2. Open the release version you want to install.
  3. Expand the release assets if they are collapsed.
  4. Choose one installation style:
  • download Identica-BUNDLE-<version>.jar if you want one runtime jar that can run on either supported proxy platform
  • download Identica-PLATFORMS-<version>.zip if you want the platform-specific runtime jars instead
  • also download Identica-Credential-<version>.jar
  • also download Identica-Premium-<version>.jar

You do not need the API jar for a normal server installation.

Place the runtime and provider jars

You can install Velocity in either of these ways:

  1. Use Identica-BUNDLE-<version>.jar as the runtime jar.
  2. Use the platform-specific runtime jar from Identica-PLATFORMS-<version>.zip.

Bundle placement flow:

  1. Copy Identica-BUNDLE-<version>.jar into plugins/.
  2. Create plugins/identica/ if it does not exist yet.
  3. Create plugins/identica/providers/ if it does not exist yet.
  4. Copy Identica-Credential-<version>.jar into plugins/identica/providers/.
  5. Copy Identica-Premium-<version>.jar into plugins/identica/providers/.

Bundle layout:

plugins/
├── Identica-BUNDLE-<version>.jar
└── identica/
    └── providers/
        ├── Identica-Credential-<version>.jar
        └── Identica-Premium-<version>.jar

Platform-specific placement flow:

  1. Extract Identica-PLATFORMS-<version>.zip.
  2. Copy Identica-VELOCITY-<version>.jar into plugins/.
  3. Create plugins/identica/ if it does not exist yet.
  4. Create plugins/identica/providers/ if it does not exist yet.
  5. Copy Identica-Credential-<version>.jar into plugins/identica/providers/.
  6. Copy Identica-Premium-<version>.jar into plugins/identica/providers/.

Before starting the proxy, double-check these placement rules:

  • the bundle jar belongs in plugins/ and replaces the platform-specific runtime jar only
  • the platform-specific runtime jar belongs in plugins/
  • provider jars belong in plugins/identica/providers/
  • provider jars should not be placed directly in the root plugins/ folder

Platform-specific layout:

plugins/
├── Identica-VELOCITY-<version>.jar
└── identica/
    └── providers/
        ├── Identica-Credential-<version>.jar
        └── Identica-Premium-<version>.jar

Start the runtime once and stop it again

Start the platform once so Identica can create its initial files and folders. This first boot is only meant to let the plugin prepare its default configuration layout. You are not expected to finish setup on this first start.

First startup can look stuck

On the first startup, Identica downloads its required libraries, so the server may not print anything new for a while and can feel stuck even though the download is still in progress. This can be fast or slow depending on the internet connection, and the server must have internet access and be able to reach Cloudflare-protected sites.

If everything is fine, Identica will print its welcome message or banner after startup finishes.

Once that first boot has completed and the files were created, stop the proxy cleanly before editing the generated configuration.

On this first start, the main goal is to let Velocity load the runtime jar and let Identica prepare its config directory.

Review these generated locations after the first boot:

  • plugins/identica/settings
  • plugins/identica/engine
  • plugins/identica/routing
  • plugins/identica/messages
  • plugins/identica/commands
  • plugins/identica/features/sentinel/settings
  • plugins/identica/features/sentinel/messages
  • plugins/identica/features/verification/settings
  • plugins/identica/persistence
  • plugins/identica/replication
  • plugins/identica/providers/conflicts
  • plugins/identica/providers/capabilities
  • plugins/identica/providers/providers

The current default boot path creates a configuration marker with type=YAML.

It is safe to stop the proxy after these files exist.

This page stays procedural on purpose. The detailed meaning of each config area belongs in Configuration.

Enable and order the providers

Open the generated providers/providers config and keep the generated structure as your base. In most cases, the defaults are already close to what you want.

For typical mixed setups, it makes sense for premium to have a higher priority than credential. In practice, that means if Identica has to choose between those providers for the same player or entrypoint situation, premium wins before credential. That is the behavior most users expect.

For the first pass, the important decisions are:

  • which providers stay enabled
  • which provider gets higher priority
  • whether entrypoint hostnames should map directly to a provider

A practical starting point looks like this:

behavior:
  attemptTtl: 10m

providers:
  - id: premium
    displayName: "PR"
    enabled: true
    priority: 200
    entrypoints:
      - premium.example.com

  - id: credential
    displayName: "CR"
    enabled: true
    priority: 100
    entrypoints:
      - credential.example.com

Most installations can leave the top-level behavior values alone on the first pass.

If you are not using hostname-based routing yet, leave entrypoints empty or replace the default values later when you know the real hostnames. Keep the generated verification blocks unless verification setup is intentionally part of this installation pass.

Understand journey mode and journey policy

The generated engine config also includes journeyMode and journeyPolicy.

  • SEAMLESS means a step is expected to continue without player interaction
  • INTERACTIVE means the step may prompt the player, wait for input, or otherwise require explicit interaction

For most installations, INTERACTIVE is the easier and safer choice because the player can clearly see what Identica expects from them. Typical interactive behavior includes things like entering a credential, choosing a provider, confirming a verification code, or responding to a migration prompt.

In the current setup described by these guides, INTERACTIVE can also produce a better first impression. If you leave the flow on SEAMLESS, a player who joins from an offline account while using a premium username may hit the higher-priority premium provider first and get an invalid-session-style kick from the server on that first join. That can scare users away before they understand what happened, even if a second rejoin would work.

With INTERACTIVE, the player can enter the enrollment step instead and choose the provider directly. If you want less manual selection in that flow, the generated engine.scenarios.registration settings also include autoSelectSingleProvider, which you can enable for scenarios where only one provider should be chosen automatically.

journeyPolicy controls how strictly the selected mode should be applied:

  • PREFER means Identica tries to use the configured mode first, but may fall back to another viable mode if needed
  • STRICT means Identica should only use the configured mode

For most setups, PREFER is the better default.

Replace default routing targets with a simple real route

The generated routing defaults use example routing targets. Do not leave them unchanged unless those names really exist in your environment.

It is usually not a good idea to use the same target for both step routing and completion routing. In most cases, step targets should point to an authentication or transition destination, while completion should point to the place where the player is actually meant to end up.

In Velocity, these target values are backend server names from your proxy configuration.

If you want, you can still balance those requests across multiple backend servers, but that is not a feature of Identica itself. Identica only asks Velocity to route a player to the target you configured.

Load balancing or target rewriting belongs to an external plugin. For example, a balancer plugin such as PlayerBalancer can intercept a request for auth-1 and redirect the player to another server such as auth-3 according to its own rules.

For a simple setup, a single shared target is a good baseline:

defaults:
  step:
    target: lobby
  complete:
    target: lobby

Generated routing config keeps scenarios empty by default. If your setup already separates authentication, registration, or migration across different backends, add only the scenario entries that differ from these defaults. Otherwise, keep the routing simple and use one shared target.

If your hosting panel limits how many separate backend servers you can run, a lightweight limbo server can help. One example is PicoLimbo, which can run with Velocity and gives you a virtual routing destination hosted through the proxy side instead of requiring another full gameplay server.

Review security and refine the setup

Do not stop at the first successful startup. After the baseline works, walk through the generated configuration and the rest of the docs so you understand what the plugin will do in your network.

Some defaults are intentionally strict. For example, credential requirements may be stronger than what your players are used to, so review them before treating the setup as final.

Protect the authentication flow

Because Identica is an identity plugin, it does not try to own every command or routing behavior on the server. That is why it is strongly recommended to use a command filter or blocker for commands that could let players escape the authentication flow before they finish it.

Examples of dangerous behavior can include:

  • switching servers before authentication is complete
  • using commands that move the player into the real server environment too early
  • reaching systems that should only be available after authentication

Many networks handle that with a separate blocker or filter plugin. Identica does not treat that as core identity-plugin functionality.

Get help or report issues

If you find a bug, need support, or want a feature, we are happy to help:

Critical fixes are usually handled quickly. Less critical improvements may be prioritized later.

On this page