CurseForge Minecraft support in LinuxGSM uses a dedicated server target: cfmcserver (shortname=cfmc).
It is designed for pinned, deterministic server-pack updates instead of tracking a floating "latest" pack.
cfmcserver uses Java, like other Minecraft Java targets in LinuxGSM.
Install Java from LinuxGSM dependencies and make sure the installed Java version matches your modpack requirements.
Create the server script:
./linuxgsm.sh cfmcserverThen install:
./cfmcserver installFor unattended install:
./cfmcserver auto-installConfiguration for CurseForge Minecraft is set in LinuxGSM config files.
Useful references:
Main config file:
lgsm/config-lgsm/cfmcserver/cfmcserver.cfgExample API mode configuration:
cfmcsource="api"
curseforgemodid="123456"
curseforgefileid="654321"
cfmcstartmode="auto"
cfmcpreservepaths=""
Variable summary:
cfmcsource- source mode:apiorurl(defaultapi)curseforgemodid- CurseForge project/mod IDcurseforgefileid- CurseForge file IDcurseforgeurl- direct archive URL, local archive path, or CurseForge file-page URLcfmcstartmode- startup detection mode:autoormanualcfmcpreservepaths- extra preserve paths separated by semicolons
Set API key in a secrets file:
lgsm/config-lgsm/cfmcserver/secrets-common.cfgor:
lgsm/config-lgsm/cfmcserver/secrets-cfmcserver.cfgExample:
curseforgeapikey="YOUR_CURSEFORGE_API_KEY"
- Sign in to the CurseForge API console:
- Create a new API key.
- Copy the key value.
- Add it to:
lgsm/config-lgsm/cfmcserver/secrets-common.cfg- or
lgsm/config-lgsm/cfmcserver/secrets-cfmcserver.cfg
Keep this key in a secrets file only and do not commit it to git.
api mode is the recommended mode for pinned updates.
Required values:
curseforgemodidcurseforgefileidcurseforgeapikey
LinuxGSM queries the CurseForge API for the file and uses serverPackFileId when it exists.
url mode can use:
- direct archive URL
- local archive path
- CurseForge web file URL that contains
/files/<id>
Example URL mode:
cfmcsource="url"
curseforgeurl="https://example.org/my-modpack-server.zip"
cfmcstartmode="auto"
If curseforgeurl points to a CurseForge web file URL, LinuxGSM resolves download metadata through the API and requires:
curseforgemodidcurseforgeapikey
serverfiles/build.txt stores the current installed source marker.
Format:
- API mode:
cfapi:<modid>:<resolved_serverpack_fileid> - URL mode:
cfurl:<sha1(url)>
This marker is used by:
./cfmcserver check-update./cfmcserver update
CurseForge pack updates are applied as an overlay extraction. LinuxGSM preserves and restores common server data automatically.
Default preserve set:
- world from
level-nameinserver.properties:<level><level>_nether<level>_the_end
- customization/data directories:
local/journeymap/kubejs/serverconfig/
- core identity/admin files:
server.propertieseula.txtops.jsonwhitelist.jsonbanned-ips.jsonbanned-players.jsonusercache.json
Add extra preserve paths with cfmcpreservepaths using semicolon separators.
When cfmcstartmode="auto", LinuxGSM checks for pack start scripts in this order:
startserver.shstart.shrun.sh
If none are found, it falls back to launching a detected .jar.
Detected values are written to:
lgsm/config-lgsm/cfmcserver/cfmcserver.cfgUpdated keys:
preexecutableexecutablestartparameters
Set cfmcstartmode="manual" to keep custom startup settings unchanged.
./cfmcserver start
./cfmcserver stop
./cfmcserver restart
./cfmcserver details
./cfmcserver check-update
./cfmcserver updateTo force a re-apply of the configured source marker, run:
forceupdate=1 ./cfmcserver updateInstall/update fails fast when required CurseForge values are missing and reports which file to edit.
Check:
lgsm/config-lgsm/cfmcserver/secrets-common.cfglgsm/config-lgsm/cfmcserver/secrets-cfmcserver.cfg
Use one of:
- direct archive URL
- local archive path
- CurseForge URL containing
/files/<id>
cfmcserver does not fetch external default game config files and uses servercfgdefault="" by design.