Network Installation
LuckPerms was written from the start with networks of servers in mind. When correctly setup and configured, permissions data will sync between servers and propagate instantly around your network.
When installing LuckPerms across a network, the regular installation steps and requirements still apply.
However, there is one additional requirement.
All instances of LuckPerms must be connected to the same storage system. This means you are limited to using MySQL
, MariaDB
, PostgreSQL
or MongoDB
. LuckPerms must be connected to the same SQL / MongoDB server, and access the same database or collection.
Pre setup 🔗
Before you get started, there are a number of things you need to check. These aren't just here for the sake of it - these steps are important. Do not skip them!
LuckPerms supports networks using either BungeeCord
, Velocity
or LilyPad
.
BungeeCord 🔗
LuckPerms uses a player's unique ids (UUID) as an index when saving data. A players uuid is provided by the server implementation, however, this value can depend on the state of the online-mode
setting.
When using BungeeCord, it is absolutely crucial that BungeeCord's IP forwarding system is setup and configured correctly.
In config.yml
file for your BungeeCord proxy(ies), you need to set
ip_forward: true
In the spigot.yml
file on each of your backend Spigot servers, you need to set
# This option is found under "settings"
bungeecord: true
In the config/sponge/global.conf
file on each of your backend Sponge servers, you need to set
sponge {
bungeecord {
ip-forwarding=true
}
}
After changing these settings, you need to fully restart the Spigot/Sponge servers and BungeeCord proxy.
You should also take steps to ensure that your network is correctly firewalled, to ensure malicious users cannot spoof connections to your backend servers. A guide on how to do this is provided here by SpigotMC.
LilyPad 🔗
If you're using LilyPad: as per the LilyPad setup guide, you should ensure that the LilyPad-Connect
plugin is installed and correctly configured on your backend server.
Installing LuckPerms across your network 🔗
Installing LP on a network is fairly easy, however, there are a number of configuration options which need to be changed as you setup each instance.
The more general Installation guide provides details about how to install LuckPerms on a single server instance. This should be followed for each server in your network. (in most cases it's as simple as adding the plugin jar to the plugins/mods folder)
Once LuckPerms has been installed, you need to stop the server, open the main configuration file, and pay particular attention to the following options:
server
🔗
If you want to set permissions or assign group inheritances on a per server basis within your setup, you'll need to change the value of server
in your configuration file. (this is conveniently located right at the top of the file! 😄)
This value is used to define a "server" context for all players when they're connected to the instance.
More information about defining server and world specific permissions can be found here and here.
storage-method
🔗
As mentioned at the top of this page, if you want data to sync between instances, then all of your LuckPerms instances need to connect to the same database.
This means that storage-method
should be set to 'mysql', 'mariadb', 'postgresql' or 'mongodb'. Remember to fill out your database connection info when you change these options!
messaging-service
🔗
The "Messaging Service" is a feature within LuckPerms which allows servers to notify other servers within the network whenever changes are made. It also allows log entries to be dispatched across the network.
- If you're running multiple servers which are not connected to one proxy running LuckPerms, but use the same database set this option to
sql
. - If you're running a small network with one BungeeCord/Velocity proxy running LuckPerms, then you should set this option to
pluginmsg
. - If you're running a LilyPad network, set this to
lilypad
. - If you're running a network with more than one BungeeCord/Velocity proxy, then it is advisable to install a Redis server (if you're running a network with more than one proxy, I'll assume you already know how to do this!), and set this option to
redis
. Remember to fill out your Redis credentials after changing this option!
The BungeeCord/Velocity version of LuckPerms 🔗
A common misconception with the proxy version is that it's a replacement for installing LuckPerms on your backend Spigot/Sponge servers. This is untrue.
When LuckPerms is installed on a proxy, it does two things:
- It handles permissions checks made by plugins on the proxy. It does not intercept or handle permission checks made by plugins on the backend server.
- It forwards update notifications and log messages around the network when
messaging-service
is set to 'pluginmsg'.
This means that if you want LuckPerms to respond to permission checks on your backend Spigot or Sponge server, you need to install it there too, even if you have it on your proxy.