-
Notifications
You must be signed in to change notification settings - Fork 3
Getting_Started
Welcome to the Neodyme getting started guide! This page will walk you through installing and configuring your Fortnite backend server.
Before you begin, make sure you have installed:
- Node.js (version 16 or higher)
- Git (to clone the repository)
Optional depending on your configuration:
- MongoDB (if using
databaseType=mongodb) - Redis (if using
redisEnabled=true)
# Simply double-click:
install_packages.bat # Only required once
start.bat # Start the servernpm install # Only required once
node server.jsThe server is configured via the server.properties file. Below is a detailed explanation of all 20 configuration sections.
port=3551 # Network port
version=1.2.0 # Backend version
apiVersion=1.3 # API version
customVersion=true # Allow any client version to connect
fnVersion=3.50 # Required version when customVersion=falsedebug=true # Enable debug output
debugRequests=false # Log all incoming requests (verbose)
debugResponses=false # Log all responses (very verbose)
debugIps=false # Log client IP addressesplugins=true # Enable the plugin system
autoShopRotation=true # Enable automatic daily shop rotationxmppEnable=true # Enable XMPP for in-game chat
xmppPort=80 # XMPP server port
xmppDomain=prod.ol.epicgames.comdatabaseType=json # json | mongodb (sqlite, mysql, postgresql planned)
databasePath=data/ # Path or connection string
databaseLogging=false # Log database queries
databaseBackup=true # Enable automatic backups
databaseBackupInterval=60 # Backup interval (minutes)
databaseBackupExpiryDays=7 # Auto-delete old backups (0 = keep all)
getJsonSpacing=true # Pretty-print JSON files
sqliteJournalMode=WAL # SQLite journal modeDatabase connection string examples:
# JSON (default, no setup required):
databaseType=json
databasePath=data/
# MongoDB:
databaseType=mongodb
databasePath=mongodb://localhost:27017/neodymeSee Database for detailed database documentation.
redisEnabled=false # Enable Redis caching
redisHost=127.0.0.1 # Redis hostname
redisPort=6379 # Redis port
redisPassword= # Redis password (empty = no auth)Redis can be used for token and profile caching, improving performance on high-traffic servers. Requires: npm install ioredis.
rateLimiting=true # Enable rate limiting
corsEnable=true # Enable CORS
compressionEnable=true # Enable response compression
helmetEnable=true # Enable Helmet security headers
trustProxy=true # Trust reverse proxy (nginx, Cloudflare)
secureCookies=false # Use secure cookies (auto-enabled with HTTPS)
limitBodySize=50mb # Max body size for file uploads
limitRequestSize=1mb # Max body size for API callsSee Security for detailed security documentation.
maxRequestsPerMinute=125 # Max requests per IP per minute
rateLimitWindowMinutes=1 # Time windowauthMaxAttempts=5 # Max auth attempts per IP
authWindowMinutes=15 # Time window
authSkipSuccessfulRequests=false # Skip counting successful loginsexpensiveMaxRequests=10 # Max requests for heavy endpoints
expensiveWindowMinutes=5 # Time windowaccessTokenExpiryHours=8 # Access token lifetime
exchangeTokenExpiryMinutes=5 # Exchange token lifetime
refreshTokenExpiryDays=30 # Refresh token lifetime
bcryptWorkFactor=12 # Password hash rounds (12-14 recommended)
passwordMinLength=8 # Minimum password length
authTimingDelayMin=50 # Min auth delay in ms (anti-timing attack)
authTimingDelayMax=200 # Max auth delay in ms
tokenEncryptionEnabled=false # Encrypt tokens at restcsrfTokenExpiryMinutes=60 # CSRF token lifetime
csrfSessionExpiryHours=24 # CSRF session cookie lifetime
csrfCleanupIntervalMinutes=60 # CSRF cleanup intervalwebAccessTokenExpiryHours=8 # Web access token lifetime
webRefreshTokenExpiryDays=30 # Web refresh token lifetime
webTokenCleanupIntervalMinutes=60 # Web token cleanup intervalcreatorCodeCommissionPercent=1 # Commission % for creator codes (0-100)webInterface=true # Enable the web dashboardbEnableAllEvents=true # Master switch for all events
bAllSTWEventsActivated=true # Enable STW events
# Individual events (each has a toggle and optional start date)
bEnableGeodeEvent=false
bEnableCrackInTheSky=false
bEnableS4OddityPrecursor=false
bEnableS4OddityExecution=false
bEnableS5OddityPrecursor=false
bEnableS5OddityExecution=false
bEnableCubeLightning=false
bEnableBlockbusterRiskyEvent=false
bEnableCubeLake=falsebGrantFoundersPacks=false # Grant Founder's Pack to all players
bCompletedSeasonalQuests=false # Mark seasonal quests as completedgameServerHeartbeatInterval=30 # Heartbeat interval (seconds)
gameServerTimeout=120 # Timeout before offline (seconds)maintenanceMode=false # Enable maintenance mode
maintenanceMessage=The server is currently under maintenance. Please try again later.
maintenanceEstimatedDowntime=2025-10-27T15:00:00Zprotocol=http # http or https
sslCertPath=config/ssl/cert.pem # Path to SSL certificate
sslKeyPath=config/ssl/key.pem # Path to SSL private keyWhen protocol=https, the server:
- Loads the SSL certificate and key from the specified paths
- Creates an HTTPS server
- Automatically enables
secureCookiesin memory
Place your SSL certificate and private key in config/ssl/. Changing protocol requires a server restart.
{
"maxLevel": 100,
"xpPerLevel": 80000,
"bookXpPerLevel": 1,
"bookXpRequiredForStar": 10,
"xpRewards": {
"kill": 300,
"elimination": 300,
"assist": 150,
"revive": 500,
"reboot": 800,
"chestOpen": 125,
"ammoBoxOpen": 75,
"supplyDrop": 500,
"medalBronze": 500,
"medalSilver": 1000,
"medalGold": 2000,
"medalPunchcard": 14000,
"win": 3000,
"top10": 1000,
"top25": 500,
"survivalMinute": 170,
"damageDealt": 1
}
}{
"shopRotationTime": "00:00",
"shopDailyItemsCount": 6,
"shopFeaturedItemsCount": 8,
"shopChapterLimit": 5,
"shopSeasonLimit": "REMIX",
"shopExcludedItems": []
}-
shopRotationTime: Daily rotation time in UTC (format: "HH:MM") -
shopChapterLimit: Maximum chapter number for shop items -
shopSeasonLimit: Maximum season identifier for items -
shopExcludedItems: Array of item IDs to exclude from rotation
Regional configuration for game servers:
- Server locations (NAE, NAW, EU, ASIA, OCE, BR, ME)
- Ping URLs for latency testing
- Game modes (Solo, Duos, Squads, Creative, Arena)
- Matchmaking settings (load balancing, queue timeouts, bot fill)
See the complete file in your installation directory.
git clone https://github.com/Jeotique/Neodyme.git
cd Neodymenpm installEdit server.properties. Critical changes for production:
# Generate random strings for these:
jwtSecret=your-long-random-string-here
gameServerSecret=another-unique-string-here# Windows:
start.bat
# Linux/Mac:
node server.jsOpen your browser and go to: http://localhost:3551
Register your first account through the web interface, then use the console command /admin set "YourUsername" admin to promote yourself.
neodyme/
config/ # Configuration files (shop, xp, gameservers, ssl)
data/ # JSON database files (when using databaseType=json)
plugins/ # Plugin directory
src/ # Source code
web/ # Web interface files (HTML, CSS, JS)
server.js # Main entry point
server.properties # Server configuration
- Verify Node.js version 16+:
node --version - Check if port 3551 is available
- Ensure dependencies installed:
npm install - Check console for error messages
-
JSON: Verify write permissions in
data/directory - MongoDB: Ensure MongoDB service is running at the configured connection string
- Verify server is accessible on the configured port
- Check firewall settings
- Set
customVersion=trueif using non-standard client versions
- Verify
protocol=httpsinserver.properties - Check that
cert.pemandkey.pemexist inconfig/ssl/ - Ensure certificate files are valid PEM format
- Check console for SSL-related errors
- Verify
autoShopRotation=trueinserver.properties - Check
shop_config.jsonexists with valid settings - Use
/shop statusto check rotation timing
- Web Interface - Learn about the dashboard and management panels
- Commands - Console command reference
- Database - Database setup and management
- Security - Security configuration
- Plugins - Extend your server
- API Reference - API endpoint documentation