Velocity Setup
KaGuilds network mode stores persistent data in a shared MySQL database. The KaProxy Guilds module forwards chat, invitations, notifications, and cache synchronization messages.
Topology#
Every backend server must:
- Run the same KaGuilds version
- Connect to the same MySQL database
- Set
proxy: true - Use a unique and stable
server-id
Install KaProxy only on Velocity. Do not install the backend KaGuilds JAR on the proxy. Enable the Guilds module in KaProxy so it can exchange cross-server messages with KaGuilds on each backend.
Install the Proxy Plugin#
- Place
KaProxy.jarin Velocity'spluginsdirectory. - Restart Velocity.
- Open
plugins/kaproxy/config.yml. - Ensure both
modules.guilds.enabledandlegacy-channel-enabledaretrue.
Configure Backend Servers#
Use identical database settings in every backend plugins/KaGuilds/config.yml, but assign a different server-id to each server:
proxy: true
server-id: survival
database:
type: "MySQL"
host: "127.0.0.1"
port: 3306
db: "kaguilds"
user: "kaguilds"
password: "replace_with_a_strong_password"
For example, use survival, resource, and lobby for three different backends. Restart every backend normally after changing these values.
Verification#
- Connect test players to two different backends.
- Create or join the same guild.
- Verify guild chat, invitations, join request notifications, and membership changes across servers.
- Open a guild vault on one backend and confirm that the same vault cannot be opened on another backend.
- Test leave, kick, and guild deletion, then confirm caches are cleared on the other backend.
- Check Velocity and every backend console for plugin messaging and database errors.
Security and Operations#
- Backend servers must accept connections only from Velocity and must not be directly exposed to players.
- Use a least-privilege MySQL account, never
root, and restrict allowed database source addresses. - Keep the KaGuilds version, menus, and language configuration aligned across all backends.
- Do not change
server-idor the database while the network is running. - Plugin messages generally require an online player as a transport; some immediate notifications may be delayed while a network is empty.
- Back up the shared database and each server configuration before proxy or backend upgrades.