# The server does not check players' accounts

The server or proxy runs in offline mode, so anyone can join under any name, including the name of an operator.

- Code: `offline_mode`
- Severity: warning
- Category: Configuration
- Server types: Every server type, Velocity
- Page: https://failures.perland.online/failures/offline_mode/

## Example log

```text
[12:40:09] [Server thread/INFO]: Starting Minecraft server on *:25565
[12:40:09] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[12:40:09] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware.
[12:40:09] [Server thread/WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
[12:40:09] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.properties file.
```

## Log lines this page covers

- `**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!`
- `The proxy is running in offline mode!`

## What it means

In online mode, the server asks Mojang's servers to confirm that every joining player owns the Minecraft account they claim. In offline mode it skips that check and believes the name the game client sends.

That means anyone can join with any name: a player can take someone else's name, their inventory and their permissions, including those of an operator (op). Offline players also get a different UUID than their real account, so data saved under the real UUID (inventories, ops, whitelist entries) does not match them. The server prints a warning at every start; Velocity prints its own when the proxy is in offline mode.

## Why it happens

- **It was turned off on purpose.** To let players without a bought account join, to play without internet, or for testing.
- **The server sits behind a proxy.** A backend of a BungeeCord, Waterfall or Velocity network runs offline because the proxy checks the accounts. That is expected, as long as players cannot reach the backend's port directly.
- **It was turned off by mistake.** A copied `server.properties` or a setting changed while troubleshooting.

## How to fix

1. If you did not mean to run in offline mode, set `online-mode=true` in `server.properties` and restart the server.
2. **Velocity:** set `online-mode = true` in `velocity.toml`. **BungeeCord and Waterfall:** set `online_mode: true` in `config.yml`.
3. Turning online mode on changes the UUID of players who joined while it was off, so their old player data may not follow them. Take a backup of the world first.
4. If you need offline mode, protect the server: keep a whitelist, use a login plugin that makes players register a password, and do not give ops to names you have not confirmed.
5. **Backends behind a proxy:** keep them offline, but make sure only the proxy can reach their ports (a firewall, or ports that are not published).

## In Perland

The issue appears in the server's Diagnosis tab, and its fix button opens Online mode under Player accounts in the server's Settings. On a network, Perland's proxy checks the accounts and its backends run offline on purpose, so the diagnosis does not report this for a backend.

## References

- [Minecraft Wiki: server.properties (`online-mode`)](https://minecraft.wiki/w/Server.properties#online-mode)
- [Velocity configuration reference](https://docs.papermc.io/velocity/configuration)
- [SpigotMC wiki: firewall guide](https://www.spigotmc.org/wiki/firewall-guide/)
