- Vaultwarden SMTP configured and tested - Holly and Meg invited to Vaultwarden - Firefrost Gaming organization created - LuckPerms MySQL database ready (credentials stored in Vaultwarden) - 11 web services added to Cloudflare proxy for DDoS protection - vault.firefrostgaming.com SSL warning resolved - Comprehensive troubleshooting guides included All services documented and operational. Ready for Holly's mod deployment.
8.3 KiB
LuckPerms MySQL Database Setup
Date: 2026-03-27
Server: Command Center (63.143.34.217)
Database: luckperms
Purpose: Centralized permission storage for all 13 game servers
Database Configuration
MySQL Installation
Installed: 2026-03-27
Version: MySQL 8.0 (Ubuntu 24.04)
Service: systemd (mysql.service)
Installation Commands:
apt update
apt install mysql-server -y
systemctl start mysql
systemctl enable mysql
mysql_secure_installation
Secure Installation Settings:
- Password validator: Not enabled (allows custom passwords)
- Remove anonymous users: Yes
- Disallow root login remotely: Yes
- Remove test database: Yes
- Reload privilege tables: Yes
Root Access:
- MySQL 8.0 uses
auth_socketplugin by default - Root can login via:
sudo mysql(no password needed) - Root cannot login remotely (secure by default)
LuckPerms Database
Database Details
- Name: luckperms
- Character Set: utf8mb4
- Collation: utf8mb4_unicode_ci
- Created: 2026-03-27
User Credentials
- Username: luckperms
- Password: Firefrost1234!!
- Host: % (allows connections from any IP)
- Privileges: ALL on luckperms.* database
Creation Commands
-- Access MySQL as root
sudo mysql
-- Create database
CREATE DATABASE luckperms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Create user
CREATE USER 'luckperms'@'%' IDENTIFIED BY 'Firefrost1234!!';
-- Grant permissions
GRANT ALL PRIVILEGES ON luckperms.* TO 'luckperms'@'%';
FLUSH PRIVILEGES;
-- Verify
SHOW DATABASES;
SELECT User, Host FROM mysql.user WHERE User='luckperms';
-- Exit
exit
Connection Details
For LuckPerms Configuration
storage-method: MySQL
data:
address: 63.143.34.217:3306
database: luckperms
username: luckperms
password: Firefrost1234!!
OR in config format:
storage-method=MySQL
data.address=63.143.34.217:3306
data.database=luckperms
data.username=luckperms
data.password=Firefrost1234!!
Security Considerations
Why Separate Database?
Isolated from Pterodactyl database for:
-
Security Isolation
- Pterodactyl database contains sensitive panel data
- LuckPerms database contains game permissions
- Compromise of one doesn't affect the other
-
Performance
- Pterodactyl handles panel queries
- LuckPerms handles thousands of permission checks per second across 13 servers
- Separation prevents performance degradation
-
Backup/Recovery
- Can backup game permissions separately
- Can restore/reset without affecting infrastructure
- Independent maintenance windows
-
Best Practice
- Industry standard: one database per application
- Prevents dependency conflicts
- Easier troubleshooting
Network Security
MySQL listens on:
- Port: 3306 (default)
- Bind address: 0.0.0.0 (all interfaces - allows remote connections)
Firewall considerations:
- TX1 Dallas (38.68.14.26) needs access
- NC1 Charlotte (216.239.104.130) needs access
- Ensure UFW/iptables allows connections from these IPs
Check current firewall status:
ufw status
# OR
iptables -L -n | grep 3306
If needed, allow specific IPs:
ufw allow from 38.68.14.26 to any port 3306
ufw allow from 216.239.104.130 to any port 3306
Game Server Integration
Servers Using This Database
All 13 Firefrost Gaming servers connect to this central MySQL database:
TX1 Dallas Servers (38.68.14.26):
- foundry.firefrostgaming.com
- rad2.firefrostgaming.com
- stoneblock4.firefrostgaming.com
- vanilla.firefrostgaming.com
- createplus.firefrostgaming.com
- arseclectica.firefrostgaming.com
NC1 Charlotte Servers (216.239.104.130):
- reclamation.firefrostgaming.com
- society.firefrostgaming.com
- emberproject.firefrostgaming.com
- minecolonies.firefrostgaming.com
- homestead.firefrostgaming.com
- emcsubterratech.firefrostgaming.com
- atm10.firefrostgaming.com
Configuration Per Server
Each server's LuckPerms config at /config/luckperms/luckperms.conf:
storage-method = mysql
data {
address = "63.143.34.217:3306"
database = "luckperms"
username = "luckperms"
password = "Firefrost1234!!"
# Connection pool settings
pool-settings {
maximum-pool-size = 10
minimum-idle = 10
maximum-lifetime = 1800000
keepalive-time = 0
connection-timeout = 5000
}
}
Deployment Status
Implementation Plan
Phase 1: Prerequisites (COMPLETE ✅)
- MySQL server installed on Command Center
- Database created
- User credentials configured
- Credentials stored in Vaultwarden
Phase 2: Mod Deployment (IN PROGRESS ⏳)
- Responsible: Holly (unicorn20089)
- Status: Delegated 2026-03-27
- Guide Provided:
docs/guides/server-side-mod-deployment-guide.md - Tasks:
- Download required mods per server Minecraft version
- Upload mods to each server via Pterodactyl Panel
- Configure LuckPerms MySQL connection
- Test each server
- Repeat for all 13 servers
Phase 3: Testing (PENDING)
- Verify all servers connect to MySQL
- Test permission sync across servers
- Verify rank system works
Maintenance
Backup Procedures
Manual Backup:
# On Command Center
mysqldump -u luckperms -p luckperms > luckperms-backup-$(date +%Y%m%d).sql
Restore from Backup:
mysql -u luckperms -p luckperms < luckperms-backup-YYYYMMDD.sql
Automated Backup (Recommended):
# Add to crontab
0 2 * * * mysqldump -u luckperms -p'Firefrost1234!!' luckperms | gzip > /root/backups/luckperms-$(date +\%Y\%m\%d).sql.gz
Monitoring
Check database size:
sudo mysql -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.tables WHERE table_schema = 'luckperms' GROUP BY table_schema;"
Check active connections:
sudo mysql -e "SHOW PROCESSLIST;" | grep luckperms
Check table status:
sudo mysql luckperms -e "SHOW TABLES;"
sudo mysql luckperms -e "SELECT COUNT(*) FROM luckperms_players;"
sudo mysql luckperms -e "SELECT COUNT(*) FROM luckperms_permissions;"
Troubleshooting
Connection Refused
Symptoms: Game server can't connect to MySQL
Checks:
- MySQL service running:
systemctl status mysql - MySQL listening on 3306:
netstat -tlnp | grep 3306 - Firewall allows connections:
ufw status - Credentials correct in server config
Solution:
# Ensure MySQL is running
systemctl start mysql
# Check bind address (should be 0.0.0.0 or specific IP)
grep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf
# If bind-address is 127.0.0.1, change to 0.0.0.0
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# Change: bind-address = 0.0.0.0
sudo systemctl restart mysql
Access Denied for User
Symptoms: "Access denied for user 'luckperms'@'host'"
Checks:
- Password correct
- User has permissions
- Host wildcard allows connection
Solution:
-- Verify user exists and host is '%'
SELECT User, Host FROM mysql.user WHERE User='luckperms';
-- Re-grant permissions if needed
GRANT ALL PRIVILEGES ON luckperms.* TO 'luckperms'@'%';
FLUSH PRIVILEGES;
-- If still failing, recreate user
DROP USER 'luckperms'@'%';
CREATE USER 'luckperms'@'%' IDENTIFIED BY 'Firefrost1234!!';
GRANT ALL PRIVILEGES ON luckperms.* TO 'luckperms'@'%';
FLUSH PRIVILEGES;
Slow Queries
Symptoms: Permission checks lag, server TPS drops
Diagnosis:
-- Enable slow query log
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
-- Check slow queries
sudo tail -f /var/log/mysql/slow-query.log
Solutions:
- Increase connection pool size in LuckPerms config
- Optimize MySQL configuration
- Add database indexes (LuckPerms handles this automatically)
- Upgrade server hardware if needed
Related Documentation
- Server-Side Mod Deployment Guide
- Subscription Automation Guide
- Pterodactyl Panel Configuration
- Vaultwarden Configuration
Last Updated: 2026-03-27
Documented By: The Verifier (Chronicler #42)
Status: ✅ Database ready, awaiting mod deployment by Holly