Compare commits

...

478 Commits

Author SHA1 Message Date
Bradley Zylstra
75016e948b Fix for Eternal 2 Modpack (#3637) 2025-08-29 19:29:03 -05:00
Patrick Cudahy
d72db19b4e Fix typo in uname command in start-configuration (#3635) 2025-08-27 08:49:22 -05:00
EmilyxFox
cad2bc1ef6 Add server properties from 25w35a (#3634) 2025-08-26 12:22:12 -05:00
dependabot[bot]
c29430ffc5 build(deps): bump mkdocs-material from 9.6.16 to 9.6.18 in /docs in the patches group (#3633) 2025-08-25 12:33:38 -05:00
dependabot[bot]
7c05109ffa build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#3632) 2025-08-25 12:28:30 -05:00
Geoff Bourne
ce0f1599de Skip Mohist lookup/download when MOHIST_BUILD provided and server jar exists (#3631) 2025-08-23 17:48:44 -05:00
Geoff Bourne
57a3fe7641 Fix Buffer Limits with SSH Service (#3626) 2025-08-18 21:46:54 -05:00
Geoff Bourne
75082daa1d modrinth: fix force include handling of default-excluded project (#3622) 2025-08-16 16:50:43 -05:00
Geoff Bourne
b1d68a65aa deps: upgrade helper for Reactor Netty 1.2.9 (#3620) 2025-08-14 20:34:34 -05:00
Geoff Bourne
11414c83c1 Provide option to disable HTTP/2 use (#3619) 2025-08-13 18:45:02 -05:00
Geoff Bourne
720006b445 Revert "Properly retry download when fabric installer is invalid" (#3618) 2025-08-13 11:52:25 -05:00
Geoff Bourne
9d2cd1475e Properly retry download when fabric installer is invalid (#3617) 2025-08-13 06:43:20 -05:00
dependabot[bot]
acfd6fadf8 build(deps): bump docker/login-action from 3.4.0 to 3.5.0 in the updates group (#3615) 2025-08-12 11:16:37 -05:00
Geoff Bourne
ba172b2aa9 Added all image tags to images.json (#3613) 2025-08-10 22:11:54 -05:00
Geoff Bourne
e4859fb23a Add images.json (#3612) 2025-08-10 22:06:31 -05:00
Geoff Bourne
eb682118ff Add Modrinth default exclusions needed for cobbleverse (#3609) 2025-08-10 12:17:46 -05:00
Geoff Bourne
2fbc804f3e misc: organize more of examples into subdirs as compose projects (#3608) 2025-08-10 09:06:58 -05:00
Geoff Bourne
5bd6287f52 misc: refactored bin content into files/shims (#3607) 2025-08-10 09:05:10 -05:00
Geoff Bourne
b6a8b95159 Validate Fabric launcher jar and use HTTP/2 (#3606) 2025-08-09 17:35:15 -05:00
Geoff Bourne
0d834dd992 Fixed VERSION_FROM_MODRINTH_PROJECTS when a project has a shorter list (#3605) 2025-08-09 13:41:20 -05:00
Geoff Bourne
0a5ac8aba6 Analyze CF_API_KEY key when auth failures (#3604) 2025-08-08 20:14:36 -05:00
Geoff Bourne
37d2aebb1e Populate MODPACK_NAME and MODPACK_VERSION from FTB modpacks (#3602) 2025-08-08 13:18:31 -05:00
Geoff Bourne
d5d1592c38 Pass proxy properties via MC_IMAGE_HELPER_OPTS (#3601) 2025-08-07 08:11:56 -05:00
Geoff Bourne
dedacfb94e Fixed noise with picking up JAVA_TOOL_OPTIONS (#3599) 2025-08-06 20:25:12 -05:00
Geoff Bourne
c6e970c8d2 Fixed HTTP proxy handling for operations using mc-image-helper (#3598) 2025-08-06 19:57:56 -05:00
Geoff Bourne
fa56741869 Limit/config concurrent downloads for CF and Modrinth (#3596) 2025-08-05 18:55:26 -05:00
EmilyxFox
2abae7462c Add clarifying information for CurseForge API keys (#3594) 2025-08-04 19:42:11 -05:00
dependabot[bot]
a569d63cf3 build(deps): bump docker/metadata-action from 5.7.0 to 5.8.0 in the updates group (#3589) 2025-08-04 06:51:00 -05:00
Geoff Bourne
e305782a8f Forge promotions and maven repo URLs are configurable (#3587) 2025-08-03 19:29:30 -05:00
Geoff Bourne
24c352949c Added skyfactory 4 example and excluding waila-stages (#3586) 2025-08-03 17:10:49 -05:00
Geoff Bourne
6ee414337a Update Forge promotions URL (#3584) 2025-08-03 07:56:12 -05:00
Geoff Bourne
c2071e5038 Add VERSION_FROM_MODRINTH_PROJECTS (#3580) 2025-08-02 19:01:49 -05:00
dependabot[bot]
02640e5414 build(deps): bump the patches group in /docs with 2 updates (#3572) 2025-07-28 10:31:53 -06:00
Geoff Bourne
ac806b756c modrinth: prioritize target loader when resolving project versions (#3570) 2025-07-26 19:48:37 -06:00
Geoff Bourne
605e2ea993 Upgrade dev mkdocs to Python 3.11 (#3569) 2025-07-24 12:49:36 -06:00
Navio1430
c9dd6dc72c update NanoLimbo repository name (#3564) 2025-07-20 07:16:42 -05:00
bobo
d8bca85d55 cf + modrinth: exclude config-menus-forge & welcome-screen (#3561)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2025-07-20 07:16:17 -05:00
Geoff Bourne
3acc867f58 cf: exclude fastquit (#3555) 2025-07-19 06:56:47 -05:00
Geoff Bourne
8463893168 fabric: add option to force reinstall (#3559) 2025-07-19 06:55:03 -05:00
Michel Suárez
5b79daa4a3 Fix pufferfish url script (#3553) 2025-07-15 06:55:22 -05:00
Graham Keeth
1fd1e15f3c Docs: fix env var for enabling query (#3552) 2025-07-13 10:40:24 -05:00
Fewwan
37e08466ad Add support for accepts-transfers and rate-limit server properties (#3550) 2025-07-10 19:04:02 -05:00
mykokhehiehieh
1868cd05da docs: fix incorrect Minecraft version link (#3549) 2025-07-10 11:04:25 -05:00
Geoff Bourne
8a7cfbfb3e Switch PAPER_CONFIG_DEFAULTS_REPO to https://github.com/Shonz1/minecraft-default-configs (#3541) 2025-07-08 20:02:43 -05:00
Geoff Bourne
e31a730d21 Revert "Add GuideME to exclude list" (#3546) 2025-07-08 07:20:25 -05:00
Geoff Bourne
a36a75a790 Excluding BetterGrassify and Distration Free Recipes (#3544) 2025-07-07 20:54:56 -05:00
dependabot[bot]
07b10027af build(deps): bump mkdocs-material from 9.6.14 to 9.6.15 in /docs in the patches group (#3542) 2025-07-07 07:28:24 -05:00
Geoff Bourne
c72e23b4d7 Add a MOTD example with placeholders (#3540) 2025-07-06 20:43:38 -05:00
Geoff Bourne
5036ef5f2f Move page about building image out of contributing section (#3538) 2025-07-06 10:36:28 -05:00
Geoff Bourne
37e956e517 Quieter Paper/Bukkit default configs downloading (#3535) 2025-07-05 11:35:01 -05:00
Caitlyn Williams
36015d2b39 Add GuideME to exclude list (#3534) 2025-07-05 11:34:17 -05:00
Geoff Bourne
a3ac903dfe Add particle effects to CF global excludes (#3532) 2025-07-04 13:36:58 -05:00
Geoff Bourne
6e94f4234b Add back java16 variant for Paper 1.16.5 Also - remove non-JRE java8 variants to offset extra builds (#3531) 2025-07-04 12:05:54 -05:00
Geoff Bourne
9d8ab63ee5 build: add back java11 for 1.16.5 (#3530) 2025-07-04 11:29:43 -05:00
Geoff Bourne
cde239f033 cf: retry file download when Netty channel/timeout exceptions (#3529) 2025-07-04 11:00:47 -05:00
Geoff Bourne
8bc184cd18 cf: retry file downloads on premature close error (#3528) 2025-07-04 09:47:01 -05:00
Geoff Bourne
3cdc86ef0b When using a custom server, allow specifying MODRINTH_LOADER with MODRINTH_PROJECTS (#3527) 2025-07-02 22:25:04 -05:00
Geoff Bourne
45f14512bb Added packwiz example (#3523) 2025-06-30 16:43:21 -05:00
Geoff Bourne
d402403876 Adjusted wording and example for generator settings (#3522) 2025-06-30 13:29:30 -05:00
Geoff Bourne
9ebae54e6e Clarified docker attach usage for compose vs non-compose (#3521) 2025-06-30 12:25:47 -05:00
Geoff Bourne
19a8bcfb53 Note native auto-pause support (#3520) 2025-06-29 17:47:12 -05:00
Geoff Bourne
c700880bbe Use Paper's Fill v3 download API (#3519) 2025-06-28 19:34:26 -05:00
dependabot[bot]
8c04dfd882 build(deps): bump the updates group with 2 updates (#3510) 2025-06-23 06:48:49 -05:00
fireph
d8075916e3 Add support for Modrinth projects file (#3506) 2025-06-22 08:02:13 -05:00
Geoff Bourne
1cf2783daf Updated notes diagram for docker run to compose (#3507) 2025-06-19 12:37:27 -05:00
Geoff Bourne
a5643cdeac Upgrade tools to Go 1.24.4 (#3502) 2025-06-17 07:48:07 -05:00
Geoff Bourne
12816373ea Fixed handling of results output when using custom paper URL (#3501) 2025-06-14 17:06:12 -05:00
Geoff Bourne
2eb66042ec Fix Spigot/Bukkit downloads (#3500) 2025-06-13 22:38:14 -05:00
kingcavespider1
446db809c7 Fix ARM64 Crash with Meowice flags (#3498) 2025-06-11 13:12:25 -05:00
Geoff Bourne
d09d9d753a Use allow json comments option for patching (#3494) 2025-06-10 10:49:25 -05:00
Geoff Bourne
d622dbc2a9 build: pin mc-image-helper version for Java 8 (#3491) 2025-06-05 21:09:44 -05:00
kingcavespider1
0ad97c257a Added arclight and nanolimbo types and Meowice flags (#3485) 2025-06-05 13:11:16 -05:00
Byron Collins
f84171dca2 File suffix support for CF_API_KEY (#3489) 2025-06-05 07:35:26 -05:00
Ryan Kitty
0ba63777a3 Bump mc-helper ver in dockerfile (#3488) 2025-06-03 22:17:03 -05:00
Geoff Bourne
1289fea1c6 With patching, support comments in JSON and adding to arrays (#3486) 2025-06-03 11:35:51 -05:00
Geoff Bourne
e70b9600d1 Upgrade mc-image-helper to tweak file download logic (#3469) 2025-06-02 20:59:35 -05:00
kingcavespider1
6ede7e930c Add support for youer and banner (#3484) 2025-06-02 20:45:52 -05:00
dependabot[bot]
5416cedc1f build(deps): bump docker/build-push-action from 6.17.0 to 6.18.0 in the updates group (#3483) 2025-06-02 07:11:50 -05:00
dependabot[bot]
c9a8fef25f build(deps): bump mkdocs-autorefs from 1.4.1 to 1.4.2 in /docs in the patches group (#3482) 2025-06-02 06:27:34 -05:00
Geoff Bourne
8f1d3f1e45 Upgrade SF5 example to 5.0.8 (#3481) 2025-06-01 22:25:30 -05:00
Ryan Kitty
b37383b37d Updated type list in start-configuration (#3479) 2025-06-01 18:21:29 -05:00
Ryan Kitty
c11d2a0ab2 Add Leaf support (#3470)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2025-06-01 17:49:54 -05:00
Geoff Bourne
85648d5916 Remove all use of sudoers file (#3477) 2025-06-01 10:04:37 -05:00
Geoff Bourne
3616847e8e Generalize info about UID/GID (#3474) 2025-05-31 10:02:53 -05:00
Jasper
e6cd7116b6 No longer need to run knockd with sudo (#3472) 2025-05-31 09:44:30 -05:00
Geoff Bourne
67b0074a9e build: introduce stable-{variant} image tags (#3468) 2025-05-26 16:26:11 -05:00
Geoff Bourne
a8900661f2 examples: increase memory for ftba example (#3467) 2025-05-24 13:52:41 -05:00
Geoff Bourne
ae32ce0738 mohist: use https://api.mohistmc.com download API (#3464) 2025-05-24 08:24:23 -05:00
dependabot[bot]
1370f58c26 build(deps): bump mkdocs-material from 9.6.13 to 9.6.14 in /docs in the patches group (#3459) 2025-05-19 11:19:21 -05:00
dependabot[bot]
89a6e1ad88 build(deps): bump docker/build-push-action from 6.16.0 to 6.17.0 in the updates group (#3458) 2025-05-19 07:22:31 -05:00
Dragonvi1
dc97022b98 Added forceInclude for particular-reforged since it's MC 1.20.1 (#3450) 2025-05-16 17:03:26 -05:00
Geoff Bourne
190ecd3278 cf: fix missing comma in cf-exclude-include.json (#3449) 2025-05-16 12:09:29 -05:00
Dragonvi1
15016996e2 Added Beyond Depth's client mods to the cf-exclude-include.json (#3448) 2025-05-16 07:58:59 -05:00
dependabot[bot]
fd83920383 build(deps): bump mkdocs-material from 9.6.12 to 9.6.13 in /docs in the patches group (#3446) 2025-05-15 07:02:03 -05:00
Geoff Bourne
5fe65a68c3 Add to global excludes the ones needed for Craftoria (#3440) 2025-05-10 11:25:08 -05:00
XHawk87
89ffb2377a Added Ansible and MASH to deployment docs (#3439) 2025-05-08 12:57:48 -05:00
Kim
8c52b98d91 Add smithing-template-viewer to cf-exclude-include.json (#3438) 2025-05-08 07:32:50 -05:00
Fournet Enzo
9d749ab514 CF: Ignoring particular (#3437) 2025-05-05 13:54:25 -05:00
Geoff Bourne
1c0fe6ff10 Use /data/tmp for WORLD zip preparation (#3322) 2025-05-04 16:49:32 -05:00
Geoff Bourne
ae4756f5a7 Change auto_curseforge test to use CF_PAGE_URL (#3431) 2025-04-30 09:45:28 -05:00
Geoff Bourne
6cbedd8c26 Revert (for now) the feature to limit concurrent modpack file downloads (#3430) 2025-04-30 09:21:23 -05:00
Geoff Bourne
62be34bae9 Upgrade mc-image-helper to 1.41.8 (#3429) 2025-04-28 21:21:55 -05:00
dependabot[bot]
c0f1a7e1cb build(deps): bump docker/build-push-action from 6.15.0 to 6.16.0 in the updates group (#3428) 2025-04-28 08:26:17 -05:00
dependabot[bot]
06ba3c8c77 build(deps): bump mkdocs-material from 9.6.11 to 9.6.12 in /docs in the patches group (#3425) 2025-04-21 07:26:57 -05:00
Geoff Bourne
0ec908b243 Corrected build entries for Java 24 (#3421) 2025-04-18 21:44:32 -05:00
Geoff Bourne
d9615e3558 Add Java 24 image variants (#3420) 2025-04-18 21:35:24 -05:00
dependabot[bot]
dcf2f46620 build(deps): bump mkdocs-click from 0.8.1 to 0.9.0 in /docs in the patches group (#3413) 2025-04-16 20:14:59 -05:00
Geoff Bourne
8ba47ea280 deps: upgrade tools to Go 1.24.2 (#3412) 2025-04-13 08:32:45 -05:00
Geoff Bourne
21593d2e43 fabric: accept shared-fetch/netty arguments (#3411) 2025-04-12 13:46:23 -05:00
dependabot[bot]
c8a7513322 build(deps): bump mkdocs-material from 9.6.10 to 9.6.11 in /docs in the patches group (#3406) 2025-04-07 07:26:47 -05:00
Tobias
66d0605502 add resources key to docker compose jvm options (#3404) 2025-04-06 22:26:37 -05:00
Geoff Bourne
5fad540c57 Revert "Add support of CF_API_KEY_FILE environment variable" (#3402) 2025-04-05 09:13:18 -05:00
Geoff Bourne
04713222c9 docs: add a note about downloading fabric-api (#3401) 2025-04-05 08:53:06 -05:00
Maxim Liven
483cd3a1d8 Add support of CF_API_KEY_FILE environment variable (#3396) 2025-04-05 08:37:51 -05:00
Geoff Bourne
5b549c0483 build: add image info properties (#3400) 2025-04-04 20:25:19 -05:00
Geoff Bourne
c57760e4b4 docs: fix formatting for image labels list (#3399) 2025-04-04 14:57:27 -05:00
Geoff Bourne
fd3655be88 docs: added info about image labels (#3398) 2025-04-04 14:51:45 -05:00
Geoff Bourne
d6897a649e fabric: retry loader version lookup (#3394) 2025-04-02 21:15:38 -05:00
JairG
9f1a18ef34 fixed logic to not compare the VERSION number when VERSION is set to … (#3389) 2025-04-02 19:38:04 -05:00
Geoff Bourne
dedf8bc587 docs: clarify Fabric docs TYPE usage (#3387) 2025-04-01 21:11:34 -05:00
dependabot[bot]
abb33d20fb build(deps): bump the patches group in /docs with 2 updates (#3383) 2025-03-31 07:57:42 -05:00
Geoff Bourne
6b4985c38d docs: updated bmc4 example to v34.5 (#3382) 2025-03-30 18:56:44 -05:00
dependabot[bot]
16a7f7ae03 build(deps): bump the patches group in /docs with 2 updates (#3379) 2025-03-24 07:08:23 -05:00
Geoff Bourne
20db1c9eb0 docs: show example of MODRINTH_PROJECTS with version number (#3378) 2025-03-23 20:15:31 -05:00
Geoff Bourne
dac388268f Support multiple values for COPY_PLUGINS_SRC, COPY_MODS_SRC, and COPY_CONFIG_SRC (#3377) 2025-03-23 15:43:08 -05:00
Geoff Bourne
231ac0f665 Add Docker logo to badges (#3375) 2025-03-19 20:52:46 -05:00
Geoff Bourne
68a56be107 Fix SKIP_CHOWN_DATA (#3374) 2025-03-19 19:43:26 -05:00
dependabot[bot]
ac32c8706f build(deps): bump the updates group across 1 directory with 5 updates (#3369) 2025-03-17 20:27:49 -05:00
Geoff Bourne
f5e511e3cc docs: clarify that ICON can be a container path (#3371) 2025-03-17 09:41:21 -05:00
dependabot[bot]
2a859d61f6 build(deps): bump mkdocs-material from 9.6.7 to 9.6.8 in /docs in the patches group (#3370) 2025-03-17 07:36:02 -05:00
dependabot[bot]
943429e180 build(deps): bump the patches group across 1 directory with 3 updates (#3355)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2025-03-16 14:23:03 -05:00
Geoff Bourne
7e5f5805a5 Add AUTOPAUSE_STATUS_RETRY_LIMIT and AUTOPAUSE_STATUS_RETRY_INTERVAL (#3365) 2025-03-16 13:25:37 -05:00
joesturge
777f4e26b9 Lazymc - Update misc examples with non-deprecated method of managing lazymc (#3360) 2025-03-15 18:44:23 -05:00
Henry
21f2a7e86c Exclude compass-coords globally from cf and mr, client side mod (#3361) 2025-03-15 10:07:12 -05:00
Geoff Bourne
f22d291bfc rcon-cli upgraded to support command history (#3354) 2025-03-08 18:20:28 -06:00
Geoff Bourne
5fd2522028 examples: moved fabric into its own directory (#3353) 2025-03-08 18:14:54 -06:00
EmilyxFox
a7b35d955b add sound to excluded mods as it crashes server on load. (#3350) 2025-03-06 07:26:02 -06:00
litetex
73e402b46d Fix log4j2 warning / Remove package scanning (#3347) 2025-03-03 12:44:55 -06:00
Greg
73cb6333b7 Update auto-curseforge docs wording around version pinning. (#3344) 2025-02-27 07:55:35 -06:00
Geoff Bourne
6f190a68a2 Upgrade helper to 1.41.2 (#3343) 2025-02-26 09:10:36 -06:00
Geoff Bourne
4eedde802b Add specific file version header for auto-curseforge (#3342) 2025-02-26 07:15:38 -06:00
dependabot[bot]
8bb7ea9000 build(deps): bump docker/build-push-action from 6.13.0 to 6.14.0 in the updates group (#3337)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-25 12:59:30 -06:00
jackguy80
fcfb1cd74c 1863: use SLP for pre-1.7 servers. (#3336) 2025-02-24 07:45:46 -06:00
Geoff Bourne
beb3b4a2ce fabric: skip web API access when all versions match installed (#3332) 2025-02-22 14:57:57 -06:00
Geoff Bourne
dcdbb85936 Added USES_PLUGINS to allows /plugins use with hybrid mods (#3320) 2025-02-17 11:11:53 -06:00
Geoff Bourne
3a678a6bf3 Clarify CF_API_KEY setup in examples (#3321) 2025-02-16 13:19:16 -06:00
Thomas Violent
b1128db9cc Add sound-reload to cf-exclude-include.json (#3317) 2025-02-16 13:03:54 -06:00
nils_kiefer
b32666183a Added fabric-server-launch.jar to variants FTBA (#3314) 2025-02-15 20:42:49 -06:00
Geoff Bourne
dcf4ae89fb build: upgrade tools to Go 1.23.6 (#3305) 2025-02-11 07:05:18 -07:00
dependabot[bot]
066116fd35 build(deps): bump the updates group with 2 updates (#3304) 2025-02-10 06:21:24 -07:00
Geoff Bourne
7404122956 build: add Java 23 variants (#3297) 2025-02-09 14:53:02 -06:00
EmilyxFox
78217928c1 Remove konkrete from cf-exclude-include (#3300) 2025-02-09 12:22:03 -07:00
dependabot[bot]
b74de64009 build(deps): bump mkdocs-material from 9.5.50 to 9.6.1 in /docs in the patches group (#3293) 2025-02-03 06:25:18 -07:00
Geoff Bourne
1fb7e50c0d deps: upgrade Go-based tools to resolve vulnerabilities (#3292) 2025-02-02 16:50:16 -07:00
August Abt
5742a34658 Ensure legacy whitelist overrides work like ops overrides (#3289) 2025-02-02 14:48:41 -06:00
Geoff Bourne
7cdb7d398c Add support for Cleanroom (Forge fork) installer (#3291) 2025-02-02 14:47:03 -06:00
dependabot[bot]
26d97c21cc build(deps): bump docker/build-push-action from 6.12.0 to 6.13.0 in the updates group (#3283) 2025-01-28 06:08:21 -07:00
Caden Kriese
40daa8b803 Clarify Vanilla Tweaks file documentation (#3287) 2025-01-27 20:52:24 -07:00
dependabot[bot]
dff4673094 build(deps): bump mkdocs-static-i18n from 1.2.3 to 1.3.0 in /docs in the patches group (#3284) 2025-01-27 07:55:09 -07:00
Azuna
6bb2c3a8c4 Feat: Disabling Mods in Generic Packs (#3281) 2025-01-26 19:50:59 -07:00
DerRockWolf
0ff1e993d0 Provide ability to skip STOP_SERVER_ANNOUNCE_DELAY on demand (#3280) 2025-01-25 15:42:47 -07:00
Niklas Gerstner
319315a001 Add configurator tool to documentation (#3272) 2025-01-22 09:43:25 -06:00
Fernando Rodriguez
6c10f265c8 Bump mc-monitor to fix cve (#3270) 2025-01-20 13:31:32 -06:00
dependabot[bot]
0e3f75879d build(deps): bump docker/build-push-action from 6.11.0 to 6.12.0 in the updates group (#3268) 2025-01-20 08:18:39 -06:00
dependabot[bot]
b595c107bb build(deps): bump mkdocs-material from 9.5.49 to 9.5.50 in /docs in the patches group (#3267) 2025-01-20 08:04:29 -06:00
Geoff Bourne
3613a30709 Clarify java edition aspect (#3264) 2025-01-19 12:55:48 -06:00
Tert0
da1b052516 datapack: allow copying from directory (#3259) 2025-01-19 08:25:33 -06:00
Liz Fransen
abb3af07ba Version bump GTNH to 2.7.2 (#3258) 2025-01-17 14:08:54 -06:00
Geoff Bourne
4f1a09b2a9 examples: adjust gtnh example to use MEMORY and JVM_OPTS (#3257) 2025-01-16 10:30:13 -06:00
Geoff Bourne
4e63990bd7 cf: handle spaces around commas for includes/excludes (#3256) 2025-01-16 09:34:34 -06:00
Geoff Bourne
883d64159f cf: qualify mapping of excluded slug to mod IDs (#3254) 2025-01-14 20:55:59 -06:00
dependabot[bot]
d35b78c14e build(deps): bump mkdocs-autorefs from 1.2.0 to 1.3.0 in /docs in the patches group (#3250) 2025-01-13 07:56:22 -06:00
dependabot[bot]
d420c523a3 build(deps): bump the updates group with 2 updates (#3249) 2025-01-13 07:23:05 -06:00
Wavering Ana
1e28390d1b update mohist download script to use new API endpoint (#3247) 2025-01-12 08:11:38 -06:00
Geoff Bourne
f79ef8f3a7 ketting: fixed launcher invocation (#3244) 2025-01-10 14:52:19 -06:00
Geoff Bourne
a485f84797 modrinth: added excludes needed for create_plus (#3242) 2025-01-08 20:52:28 -06:00
Leon Kampwerth
51ba6a2c71 Fixed compose error due to missing key in GTNH example (#3238) 2025-01-06 14:15:28 -06:00
Geoff Bourne
e5b7a5829f cf: gracefully handle invalid modpack manifest file (#3237) 2025-01-06 11:05:29 -06:00
Geoff Bourne
6a994acc52 Added example for skyfactory5 (#3235) 2025-01-06 08:36:30 -06:00
Geoff Bourne
f46298c6b8 Added compose example snippets for Paper docs (#3231) 2025-01-04 11:57:04 -06:00
Geoff Bourne
a72fb19ec6 Install tput for colorized logs on alpine images (#3229) 2025-01-03 19:09:52 -06:00
Geoff Bourne
4914ffbe40 neoforge: grab latest beta even when non-beta release is newer (#3227) 2025-01-03 17:09:19 -06:00
Geoff Bourne
03f9037668 Corrected calculation of Canyon download URL (#3226) 2025-01-03 17:01:32 -06:00
Niklas Gerstner
621bafb4f2 Download paper.yml and bukkit.yml (#3217) 2024-12-31 08:46:33 -06:00
Geoff Bourne
9a20ab7b48 Download default spigot.yml for PaperMC to top-level directory (#3216) 2024-12-30 19:02:43 -06:00
Geoff Bourne
6514ed85a0 Cache CF search API calls and better handle CURSEFORGE_FILES rate limit (#3215) 2024-12-29 13:57:36 -06:00
EmilyxFox
6391be5251 added cf new exclusions (#3214) 2024-12-29 08:35:44 -06:00
Prabhjot
2d1a35dba8 fix vault hunters example (#3213) 2024-12-28 17:20:56 -06:00
Liz Fransen
236ed74295 Add an Example of Setting Up GregTech: New Horizons (#3212) 2024-12-27 11:42:24 -06:00
dependabot[bot]
05cbbfc9e3 build(deps): bump docker/setup-buildx-action from 3.7.1 to 3.8.0 in the updates group (#3202) 2024-12-24 16:18:07 -06:00
Geoff Bourne
678dda5d4a docs: clarify curseforge listing file and GetBukkit limitation (#3205) 2024-12-23 14:07:14 -06:00
dependabot[bot]
c3e96f6ac6 build(deps): bump mkdocs-material from 9.5.48 to 9.5.49 in /docs in the patches group (#3203)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-23 09:05:47 -06:00
Jordi
1f6288efd8 Add example of Craftoria modpack (#3198) 2024-12-17 18:51:23 -06:00
M
787a31a5f1 Clarify Modrinth URL structure in documentation (#3197) 2024-12-17 13:03:11 -06:00
Geoff Bourne
66a6df4029 docs: clarified Modrinth support includes plugins and datapacks (#3196) 2024-12-17 12:42:30 -06:00
Sculas
de19794a5f fix: install missing language pack for GraalVM (#3189) 2024-12-14 15:22:08 -06:00
Geoff Bourne
0582a8ab97 Corrected examples link in autopause docs (#3188) 2024-12-11 07:09:06 -06:00
Geoff Bourne
94def951b6 Make sure download new version of FTB installer (#3186) 2024-12-09 20:03:19 -06:00
dependabot[bot]
755f1c5352 build(deps): bump mkdocs-material from 9.5.47 to 9.5.48 in /docs in the patches group (#3184) 2024-12-09 06:57:10 -06:00
Juan jose Del Porto Bayut
4804c4bb67 Added xaeroplus and yungs-menu-tweaks to the exclude list (#3181) 2024-12-07 09:29:14 -06:00
Geoff Bourne
58302f9490 Fix syntax error in start-deployPurpur (#3178) 2024-12-06 09:53:47 -06:00
Geoff Bourne
c6dbc88ea9 Re-install FTB if manifest is missing (#3177) 2024-12-05 07:40:50 -06:00
Geoff Bourne
a31440476c Fixed new FTB installer args and manifest (#3176) 2024-12-04 07:20:10 -06:00
Geoff Bourne
350bada3a8 Switch FTBA to use https://api.feed-the-beast.com/v1 (#3174) 2024-12-03 21:25:44 -06:00
d3n1z6
86354f5ec2 fix ngrok docker compose example (#3173) 2024-12-03 11:31:36 -06:00
dependabot[bot]
f1d0736689 build(deps): bump mkdocs-material from 9.5.45 to 9.5.47 in /docs in the patches group (#3172) 2024-12-03 07:49:26 -06:00
dependabot[bot]
e2015afdb4 build(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 in the updates group (#3171) 2024-12-02 09:26:55 -06:00
Geoff Bourne
4555cf433e cf: use fallback URL for curseforge files like modpack files (#3158) 2024-11-29 14:29:02 -06:00
EmilyxFox
e090b0aef5 add advancement plaques to cf exclusions (#3168) 2024-11-29 12:39:27 -06:00
Geoff Bourne
a03d02e59e Correcting name of .mc-health.env file (#3167) 2024-11-28 15:26:47 -06:00
Geoff Bourne
21ad4146aa docs: adjust memory and volume in atm10 example (#3166) 2024-11-28 12:36:12 -06:00
Geoff Bourne
6fd275cdc6 cf: added default excludes needed for ATM10 (#3164) 2024-11-26 16:27:55 -06:00
dependabot[bot]
954bb887d3 build(deps): bump docker/metadata-action from 5.5.1 to 5.6.1 in the updates group (#3162) 2024-11-25 10:30:13 -06:00
dependabot[bot]
ec8e689132 build(deps): bump mkdocs-material from 9.5.44 to 9.5.45 in /docs in the patches group (#3161) 2024-11-25 08:00:57 -06:00
Geoff Bourne
039b90839b Include processing of SPIGET_RESOURCES with TYPE=CUSTOM (#3156) 2024-11-21 21:49:22 -06:00
Geoff Bourne
bfc75cad21 deps: upgrade mc-monitor to 0.15.0 (#3149) 2024-11-11 10:11:14 -06:00
dependabot[bot]
f178b99459 build(deps): bump the patches group in /docs with 2 updates (#3147) 2024-11-11 08:24:40 -06:00
Geoff Bourne
2680e02b34 modrinth: more info in error when dependency has no applicable files (#3142) 2024-11-09 12:46:12 -06:00
Ryan Hullah
14f96d11e5 Create ATM10 example (#3143) 2024-11-09 08:51:59 -06:00
Geoff Bourne
b41e63cec5 Correctly handle NeoForge CF modpacks also using CURSEFORGE_FILES (#3139) 2024-11-04 16:00:28 -07:00
dependabot[bot]
1b5c3bd8b9 build(deps): bump mkdocs-material from 9.5.42 to 9.5.43 in /docs in the patches group (#3138) 2024-11-04 08:33:47 -07:00
EmilyxFox
2412f6a740 add ftb-evolution example file (#3135) 2024-11-03 14:16:21 -07:00
dependabot[bot]
d33d1e7f69 build(deps): bump actions/checkout from 4.2.1 to 4.2.2 in the updates group (#3130) 2024-10-28 07:15:56 -05:00
Tristan
868bcb7272 fix start-deployFTBA (#3124) 2024-10-26 08:40:36 -05:00
Geoff Bourne
f872eb55cc Fix incorrect warning about setting TYPE and MODPACK_PLATFORM (#3122) 2024-10-24 15:20:50 -05:00
Tristan
e69ee85f8e #3115 rename MOD_PLATFORM to MODPACK_PLATFORM (#3120) 2024-10-24 07:12:13 -05:00
Tristan
bef7b4719f New logger with color and specific types. Code cleanup (#3108) 2024-10-22 16:04:38 -05:00
dependabot[bot]
a356c6810e build(deps): bump mkdocs-material from 9.5.40 to 9.5.42 in /docs in the patches group (#3119) 2024-10-21 07:15:54 -05:00
dependabot[bot]
f7c1e9d2c1 build(deps): bump SethCohen/github-releases-to-discord from 1.15.1 to 1.16.2 in the updates group (#3118) 2024-10-21 07:01:30 -05:00
João Gabriel Moreira Bossatto Daré
ae69de8ca0 port configuration for local modrinth modpack setup (#3116) 2024-10-20 09:43:28 -05:00
Chip Wolf ‮
a9140fb84a chore(docs): note add mod var for auto_curseforge use (#3111) 2024-10-16 12:07:15 -05:00
Geoff Bourne
07708209a6 cf: gracefully handle corrupted API cache index (#3110) 2024-10-15 18:39:43 -05:00
Geoff Bourne
fd20fc9654 cf: default API cache TTL to 2 days and allow config (#3107) 2024-10-15 07:54:30 -05:00
ギリ猫
4085d28773 Fix mc-send-to-console running with uid=0(root) (#3106) 2024-10-15 07:08:17 -05:00
dependabot[bot]
7dbeac99d3 build(deps): bump actions/checkout from 4.2.0 to 4.2.1 in the updates group (#3105)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 21:50:48 -05:00
dependabot[bot]
e4773e47cb build(deps): bump the patches group in /docs with 2 updates (#3104) 2024-10-14 15:42:15 -05:00
Tristan
da4f7d0dd8 refactoring a little bit some test script files (#3100)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-10-13 18:04:11 -05:00
Geoff Bourne
afbdfea0bb Add SKIP_CHOWN_DATA to skip the "Changing ownership of /data" (#3103) 2024-10-13 15:05:49 -05:00
Geoff Bourne
f5da624789 curseforge: cache get mod info and file API calls to disk (#3102) 2024-10-13 14:15:09 -05:00
dependabot[bot]
fdc1f446af build(deps): bump the updates group with 3 updates (#3097) 2024-10-08 08:13:28 -05:00
Geoff Bourne
1b8b694036 modrinth: support datapack retrieval (#3096) 2024-10-07 08:44:42 -05:00
Geoff Bourne
7974baca7e build: deprecating java8-alpine (for now) (#3094) 2024-10-06 14:17:47 -05:00
Geoff Bourne
d4af9b1ae5 For FTBA support extra mods with Modrinth/CurseForge (#3092) 2024-10-06 12:07:55 -05:00
Geoff Bourne
34187adca3 examples: updated BMC4 for v32.5 (#3091) 2024-10-05 13:34:26 -05:00
dependabot[bot]
d0a3ee3b64 build(deps): bump the updates group with 2 updates (#3085) 2024-09-30 13:10:17 -05:00
dependabot[bot]
6683c91b74 build(deps): bump mkdocs-material from 9.5.36 to 9.5.39 in /docs in the patches group (#3084) 2024-09-30 13:09:52 -05:00
Geoff Bourne
a0e274a7b7 auto-cf: support three-part modloader IDs (#3081) 2024-09-26 20:55:19 -05:00
dependabot[bot]
5d8a152db2 build(deps): bump mkdocs-material from 9.5.34 to 9.5.36 in /docs in the patches group (#3078) 2024-09-23 18:49:39 -05:00
Tomás Alegre Sepúlveda
df8f8f1716 Add PAPER_CONFIG_REPO as alias for defaults repo variable (#3076) 2024-09-23 07:31:04 -05:00
Omar Abdulaziz
295996b033 docs: removed duplicated RCON_CMDS variable (#3072) 2024-09-16 16:42:56 -05:00
Geoff Bourne
5ac7b1d108 build: upgraded restify, rcon-cli, mc-server-runner (#3067) 2024-09-09 20:54:41 -05:00
Geoff Bourne
f420b92d05 build: upgraded easy-add and mc-monitor (#3066) 2024-09-09 20:16:42 -05:00
dependabot[bot]
96019b02ee build(deps): bump mkdocstrings from 0.26.0 to 0.26.1 in /docs in the patches group (#3063) 2024-09-09 07:51:36 -05:00
md5nake
c271ad99e0 Bump mc-monitor version (#3061) 2024-09-08 19:12:39 -05:00
Geoff Bourne
222b522bc1 build: accept build args for extra packages to install (#3060) 2024-09-07 18:42:43 -05:00
Geoff Bourne
dd3c7a4b77 Healthcheck interval is now 60s with start interval 5s (#3058) 2024-09-07 09:01:20 -05:00
EmilyxFox
5340121d37 Simple Voice Chat examples (#3057) 2024-09-05 18:39:57 -05:00
dependabot[bot]
9546dd322d build(deps): bump the patches group in /docs with 3 updates (#3054) 2024-09-02 08:13:37 -05:00
Geoff Bourne
739cd5a320 modrinth: improve logging of non-applicable versions (#3053) 2024-09-01 18:39:49 -05:00
dependabot[bot]
09b716dd6b build(deps): bump the patches group in /docs with 2 updates (#3051) 2024-08-26 08:02:59 -05:00
dependabot[bot]
a7ecd92244 build(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 in the updates group (#3046) 2024-08-19 08:47:21 -05:00
Geoff Bourne
8685cc05c7 cf-files: improve the logging of missing dependencies especially optional ones (#3044) 2024-08-17 17:30:12 -05:00
EmilyxFox
235141fcf3 add new server property in 24w33a (#3043) 2024-08-16 07:03:03 -05:00
Geoff Bourne
cea839aa67 Default EXISTING_OPS_FILE and EXISTING_WHITELIST_FILE to SYNC_FILE_MERGE_LIST (#3042) 2024-08-12 17:57:18 -05:00
dependabot[bot]
6d9c6d64e2 build(deps): bump the updates group across 1 directory with 2 updates (#3040) 2024-08-12 07:03:36 -05:00
Geoff Bourne
5d8b99c454 Default EXISTING_OPS_FILE and EXISTING_WHITELIST_FILE to MERGE (#3038) 2024-08-11 09:40:00 -05:00
Geoff Bourne
5113afccb5 docs: remove leftover debugs in bmc4 example (#3037) 2024-08-10 11:37:09 -05:00
dependabot[bot]
0a7b1ed817 build(deps): bump mkdocs-material from 9.5.30 to 9.5.31 in /docs in the patches group (#3030) 2024-08-05 17:36:37 -05:00
EmilyxFox
4fe1c2c7b4 New server properties (#3034) 2024-08-05 17:31:37 -05:00
EmilyxFox
8c0c27aef9 Add just-zoom (jar: justzoom) to global exclude (#3032) 2024-08-05 10:41:22 -05:00
lucaperl
e9d7668cd8 Added client mod exclusions for modpack "Hardrock Terrafirmacraft" (#3028) 2024-08-03 10:18:51 -05:00
Geoff Bourne
06190ef9d0 Added support for FOLIA_CHANNEL (#3029) 2024-08-03 10:16:27 -05:00
C0D3 M4513R
1c780ff655 Ketting removed GithubPackages (#3027) 2024-08-02 15:24:03 -05:00
EmilyxFox
866f9c9d45 Added hide-online-players server property (#3026) 2024-08-02 07:44:50 -05:00
dependabot[bot]
4da0e93c0f build(deps): bump the patches group in /docs with 2 updates (#3022) 2024-07-29 21:34:50 -05:00
dependabot[bot]
5415879cd2 build(deps): bump the updates group with 4 updates (#3021)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 19:18:44 -05:00
joesturge
28737a99bc docs: updated with example on how to setup lazymc with minecraft container (#3017) 2024-07-29 15:06:19 -05:00
Geoff Bourne
f4634c3fd9 docs: add service annotation patching to example kustomization (#3020) 2024-07-28 13:28:42 -05:00
ruskington
46ee2331bf Add itemphysic-lite to global exclude (#3014)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-07-27 11:05:37 -05:00
Geoff Bourne
edffc58589 build: remove pre-installed ubuntu user for consistency (#3016) 2024-07-26 21:26:36 -05:00
dependabot[bot]
be846dd369 build(deps): bump docker/build-push-action from 6.3.0 to 6.4.1 in the updates group (#3010) 2024-07-23 14:14:19 -05:00
Josh
de1d7f422c Updated and Improved install scripts. (#3006) 2024-07-21 15:40:59 -05:00
Miika Kankare
b393b22136 Interpret backslash escapes for RCON_CMDS (#3008) 2024-07-21 10:29:41 -05:00
Geoff Bourne
d7c6a7d2b6 paper: download default configs before patching (#3004) 2024-07-20 13:15:16 -05:00
Geoff Bourne
0ff8e68f01 auto-cf: added blur-forge to global excludes (#3003) 2024-07-19 21:11:25 -05:00
Geoff Bourne
a71c5384b4 paper: suggest other release channel when build not found (#3000) 2024-07-17 21:12:12 -05:00
Geoff Bourne
379cef3c7e Re-download Modrinth projects based on modified time rather than filename existence (#2999) 2024-07-17 10:50:22 -05:00
dependabot[bot]
163a268770 build(deps): bump mkdocs-material from 9.5.28 to 9.5.29 in /docs in the patches group (#2996) 2024-07-15 07:21:00 -05:00
Pawel
f84ae66af3 Fix typo in reference to REMOVE_OLD_MODS variable (#2988) 2024-07-14 09:59:07 -05:00
Geoff Bourne
58face9c1b Avoid logging userinfo from MODS/PLUGINS URLs (#2993) 2024-07-14 09:58:39 -05:00
Geoff Bourne
b8e6eea265 auto-cf: remove necronomicon from global exclusions (#2991) 2024-07-14 09:35:16 -05:00
Geoff Bourne
78b55df635 mcopy: support basic auth via URL (#2989) 2024-07-13 21:51:34 -05:00
Geoff Bourne
0f9941373b cf: copy files found in downloads repo (#2986) 2024-07-13 13:38:43 -05:00
Geoff Bourne
6ac313ae71 cf: check downloads repo before attempting download of mod in modpack (#2985) 2024-07-13 10:36:57 -05:00
Geoff Bourne
bc0a87cc53 modrinth: add default exclusions discovered for prominence 2 (#2982) 2024-07-12 15:00:19 -05:00
Felipe Paschoal Bergamo
5baf398af3 Optimize startup on versionLessThan function (#2979) 2024-07-11 14:24:02 -05:00
dependabot[bot]
8dac5d1428 build(deps): bump docker/build-push-action from 5.4.0 to 6.3.0 (#2975) 2024-07-11 08:18:04 -05:00
Jeff Sandberg
4232a981e8 Update the autopause server listener to be proxy aware (#2978) 2024-07-08 14:14:10 -05:00
dependabot[bot]
b89c698676 build(deps): bump the updates group with 2 updates (#2974) 2024-07-08 07:44:38 -05:00
dependabot[bot]
8a5b5bbe70 build(deps): bump mkdocs-material from 9.5.27 to 9.5.28 in /docs in the patches group (#2976) 2024-07-08 07:31:56 -05:00
Jeff Sandberg
11d8d917f2 Add use-proxy support to health extra args (#2973) 2024-07-08 07:30:37 -05:00
Akashi_SN
2023f5aa31 Remove JEI from exclusion list to fix ATM9 launch issue (#2971) 2024-07-07 08:13:04 -05:00
Geoff Bourne
bcd8db1306 Fixed exclusion of no-night-vision-flashing (#2970) 2024-07-06 22:59:23 -05:00
bobpattison123
62ce504da3 Changed foamfix mod name (#2969) 2024-07-06 22:51:33 -05:00
KrosTheProto
c87145a5e4 More Client-side mods to exclude (#2967) 2024-07-06 19:29:48 -05:00
Geoff Bourne
c4f69bf577 Clarify MODRINTH_ALLOWED_VERSION_TYPE inclusion (#2966) 2024-07-06 13:15:06 -05:00
Geoff Bourne
67b790dfed build: fully remove java17-jdk variant from build (#2904) 2024-07-06 12:22:02 -05:00
Geoff Bourne
a55d575375 Corrected "Updated mod exclusion list" (#2965)
Co-authored-by: KrosTheProto <billyds132@gmail.com>
2024-07-06 09:48:47 -05:00
KrosTheProto
70cc1298c2 Updated mod exclusion list (#2964) 2024-07-06 08:25:28 -05:00
Geoff Bourne
b9a61c8852 Add ryoamiclights to CF global excludes (#2948) 2024-07-04 11:57:16 -05:00
Geoff Bourne
75496d6e0b cf: add support for modpacks that use NeoForge (#2943) 2024-07-01 14:18:33 -05:00
Connor
50caaf98ef add check for absolute directories to world copy script (#2939) 2024-07-01 07:47:42 -05:00
Geoff Bourne
14a8f903ae docs: updating AUTO_CURSEFORGE examples that no longer need /downloads (#2938) 2024-06-30 21:56:44 -05:00
Geoff Bourne
c70f9c3fff modrinth: add support for default excludes/includes (#2937) 2024-06-30 15:15:44 -05:00
Geoff Bourne
a933e92460 neoforge: correctly handle versioning that drops the ".0" (#2935) 2024-06-28 22:05:54 -05:00
LeaderbotX400
4c42a3e46c Update cf-exclude-include.json with Apple Skin, etc (#2932) 2024-06-27 13:45:55 -05:00
Geoff Bourne
1ccd6a0954 docs: updated to new name of itzg/mc-proxy (#2917) 2024-06-20 08:59:50 -05:00
Emmanuel Ferdman
c3614466e7 Update compose file reference (#2915) 2024-06-19 08:16:29 -05:00
dependabot[bot]
3349df764e build(deps): bump the updates group with 2 updates (#2910) 2024-06-18 15:14:01 -05:00
dependabot[bot]
d3725c3388 build(deps): bump mkdocs-material from 9.5.26 to 9.5.27 in /docs in the patches group (#2909) 2024-06-18 07:48:23 -05:00
Geoff Bourne
63e8d33f6c Add a section about class file version 65.0 message (#2906) 2024-06-15 17:36:06 -05:00
Geoff Bourne
a8b7ad533c Added hairpin routing diagram (#2903) 2024-06-15 14:13:30 -05:00
Geoff Bourne
fe5f066a0b paper: consider release channel when selecting version/build (#2902) 2024-06-15 14:05:14 -05:00
Geoff Bourne
47c2b60cba build: add java21-jdk variant (#2900) 2024-06-14 13:58:29 -05:00
Geoff Bourne
db88d167fe Don't log RCON password when DEBUG enabled (#2898) 2024-06-14 07:51:01 -05:00
wirytiox
774d3bc717 Add true-darkness to CF global excludes (#2899) 2024-06-13 17:41:49 -05:00
Geoff Bourne
c365a6cc5a Fixed typo in CF files dependencies section title (#2896) 2024-06-13 10:29:27 -05:00
Kian Kasad
cafb80eec3 Accept yes/no for boolean environment variables (#2893) 2024-06-13 07:46:16 -05:00
Geoff Bourne
bc789202a1 Disable default configs download until issues resolved (#2895) 2024-06-13 07:45:48 -05:00
Geoff Bourne
2e9be596f7 Fixed issue of unbound REMOVE_OLD_MODS_EXCLUDE variable when using SPIGET_RESOURCES (#2891) 2024-06-12 16:38:41 -05:00
dependabot[bot]
87afad69b3 build(deps): bump mkdocs-material from 9.5.25 to 9.5.26 in /docs in the patches group (#2886) 2024-06-10 19:43:57 -05:00
Geoff Bourne
fa058a18ad build: upgrade tools to Go 1.22.4 (#2885) 2024-06-09 15:04:13 -05:00
Geoff Bourne
3936d56583 cf: verify mod file hashes and re-download to repair (#2884) 2024-06-08 13:57:57 -05:00
Geoff Bourne
ca8abe3e16 paper: download default configs to allow for patching (#2883) 2024-06-08 12:46:54 -05:00
Geoff Bourne
ed7a6668aa Added note about CurseForge files dependency handling (#2881) 2024-06-08 09:10:25 -05:00
Felipe Paschoal Bergamo
c828985ebe Add SERVER_HOST Environment in mc-monitor command (#2875) 2024-06-05 18:48:35 -05:00
wirytiox
8fd98f0315 Add zume to cf-exclude-include.json (#2874) 2024-06-05 07:47:18 -05:00
Geoff Bourne
708b6ab849 docs: fixed description of BROADCAST_RCON_TO_OPS variable (#2873) 2024-06-04 19:56:37 -05:00
dependabot[bot]
524ac1d0ec build(deps): bump mkdocs-material from 9.5.24 to 9.5.25 in /docs in the patches group (#2871) 2024-06-03 08:28:31 -05:00
dependabot[bot]
2cf4b98d76 build(deps): bump docker/login-action from 3.1.0 to 3.2.0 in the updates group (#2872) 2024-06-03 08:27:19 -05:00
Geoff Bourne
b3e0ea14bf docs: allow for toggling light/dark mode (#2869) 2024-06-02 16:40:10 -05:00
Edwin
820d401911 Enhance CurseForge server packs that use variables.txt (#2867) 2024-06-01 13:33:35 -05:00
noah1019
20d80bb600 rad2 compose example (#2859) 2024-05-27 18:14:32 -05:00
Geoff Bourne
e172b52027 build: add back arm64 into java17/21 alpine multiarch (#2858) 2024-05-27 15:03:32 -05:00
dependabot[bot]
36c92be777 build(deps): bump mkdocs-material from 9.5.23 to 9.5.24 in /docs in the patches group (#2854) 2024-05-27 09:37:22 -05:00
Geoff Bourne
e59d5ff13b build: disable java17-openj9 for now (#2853) 2024-05-26 12:25:33 -05:00
Geoff Bourne
ddfb99a1fc Remove normalizing to uppercase of LEVEL_TYPE (#2852) 2024-05-26 09:53:45 -05:00
Geoff Bourne
1de2d34c64 build: upgrading git-lfs from packagecloud (#2850) 2024-05-26 08:31:52 -05:00
Geoff Bourne
65371be1eb build: disable java17-openj9 for now (#2849) 2024-05-26 08:31:39 -05:00
Geoff Bourne
e6b525a65c cf: allow for trailing slash on CF modpack page URL (#2848) 2024-05-25 13:02:52 -05:00
Juan Jesús Alejo Sillero
ed1c679559 Added a missing quotation mark (#2846) 2024-05-24 20:36:35 -05:00
dependabot[bot]
e727602e51 build(deps): bump mkdocs-material from 9.5.22 to 9.5.23 in /docs in the patches group (#2837) 2024-05-23 07:18:51 -05:00
Geoff Bourne
180b6535b3 Fixed internal SPIGOT family mapping (#2839) 2024-05-20 16:33:56 -05:00
dependabot[bot]
3842ac4693 build(deps): bump actions/checkout from 4.1.5 to 4.1.6 in the updates group (#2836) 2024-05-20 08:13:55 -05:00
Geoff Bourne
340284913c build: upgrading git-lfs from packagecloud (#2835) 2024-05-19 17:27:15 -05:00
Geoff Bourne
07e89bff53 build: upgrade rcon-cli and easy-add (#2831) 2024-05-18 13:54:23 -05:00
Geoff Bourne
e1262effef docs: add compose example of multiline MOTD (#2827) 2024-05-15 16:11:11 -05:00
Geoff Bourne
cbcdfdc288 docs: add info about DUMP_SERVER_PROPERTIES (#2826) 2024-05-15 08:50:32 -05:00
dependabot[bot]
120e1c21bf build(deps): bump mkdocs-material from 9.5.21 to 9.5.22 in /docs in the patches group (#2825)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 08:41:17 -05:00
dependabot[bot]
8557749d1d build(deps): bump actions/checkout from 4.1.4 to 4.1.5 in the updates group (#2824)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 08:36:07 -05:00
Geoff Bourne
5c8e2bb0ba examples: updated bmc4 example (#2822) 2024-05-12 14:06:21 -05:00
MASACR99
f659c56f18 Remove version from docker compose since it's been deprecated (#2816) 2024-05-06 14:35:50 -05:00
dependabot[bot]
f06ebae451 build(deps): bump the patches group in /docs with 3 updates (#2815) 2024-05-06 07:29:59 -05:00
Geoff Bourne
7153e1443a docs: added more detail about autopauase rootless usage (#2814) 2024-05-04 18:41:49 -05:00
dependabot[bot]
d6cc10315b build(deps): bump the patches group in /docs with 2 updates (#2806) 2024-04-30 20:53:51 -05:00
dependabot[bot]
e8b46a3bcc build(deps): bump actions/checkout from 4.1.3 to 4.1.4 in the updates group (#2807) 2024-04-29 07:41:27 -05:00
Geoff Bourne
4eb25f3cbc paper: restore requirement of version.json metadata (#2802) 2024-04-28 11:29:04 -05:00
Geoff Bourne
234863a026 paper: fall back to VERSION env var when jar missing metadata (#2801) 2024-04-27 16:49:26 -05:00
Geoff Bourne
c05b7cfa72 cf-files: correctly handle duplicate file refs (#2800) 2024-04-27 14:59:21 -05:00
Geoff Bourne
2a864f3106 paper: version metadata is optional for custom server jar (#2797) 2024-04-26 19:06:42 -05:00
Geoff Bourne
4e3198cbec build: pin java17 tests to 1.20.4 (#2796) 2024-04-26 18:53:36 -05:00
Anton Curanz
94c8a86c7c Apply SKIP_SUDO when starting knockd (#2795) 2024-04-26 16:09:19 -05:00
Geoff Bourne
1d57487766 docs: corrected mention of armv7 for latest/stable (#2793) 2024-04-25 08:22:52 -05:00
dependabot[bot]
f23403a31c build(deps): bump actions/checkout from 4.1.2 to 4.1.3 in the updates group (#2787)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 21:11:31 -05:00
dependabot[bot]
7cecfde797 build(deps): bump the patches group in /docs with 3 updates (#2788)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-04-22 21:07:47 -05:00
Geoff Bourne
15a84ec316 docs: clarify the mention of java8 in deprecated section (#2785) 2024-04-20 12:01:27 -05:00
Bailey Allen
38c8399880 Add git-lfs package (#2781) 2024-04-17 08:11:04 -05:00
dependabot[bot]
c666cf28f4 build(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 in the updates group (#2769) 2024-04-14 13:54:40 -05:00
Geoff Bourne
7dce58b7f6 docs: add a link to class file version table (#2779) 2024-04-14 13:54:12 -05:00
Geoff Bourne
5b920cca8f modrinth: fixed force include option (#2778) 2024-04-13 21:35:02 -05:00
Geoff Bourne
09603f4003 modrinth: add option to force include client mods (#2777) 2024-04-13 20:40:06 -05:00
Geoff Bourne
32aa681582 build: upgraded restify and mc-server-runner (#2771) 2024-04-08 20:02:10 -05:00
Rover van der Noort
4f474d38c4 Update cf-exclude-include.json (#2770) 2024-04-08 08:02:46 -05:00
Geoff Bourne
79ad259f1d cf: use fallback download URL when metadata doesn't provide one (#2767) 2024-04-07 14:01:47 -05:00
Geoff Bourne
4348853e15 build: also remove variant entry for java8-multiarch (#2766) 2024-04-07 11:31:37 -05:00
Geoff Bourne
8f13cd4496 build: java8 is now consistently multi-arch like others and new java8-alpine (#2763) 2024-04-07 10:53:37 -05:00
Geoff Bourne
665ca9c61a Added support for skript resources via SPIGET_RESOURCES (#2764) 2024-04-06 22:00:50 -05:00
Geoff Bourne
cec8027844 docs: fixed typo on java versions page (#2762) 2024-04-06 12:58:20 -05:00
Geoff Bourne
e247348c47 build: upgrade mc-monitor to use retry for all errors (#2760) 2024-04-06 12:11:31 -05:00
Geoff Bourne
b22c818f0e Designate java21 as the latest/default image (#2757) 2024-04-04 21:16:48 -05:00
dependabot[bot]
55e7b8bee5 build(deps): bump the patches group in /docs with 1 update (#2750) 2024-04-04 07:26:48 -05:00
Geoff Bourne
00e04fc2d5 Removed write to /var/log/knocked-source during autopause resume (#2749) 2024-03-30 20:22:38 -05:00
Nilon123456789
a46a506a1c Add Tailscale docker-compose example (#2747)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-03-29 08:32:18 -05:00
Geoff Bourne
46fb560ed9 Hybrid servers using CURSEFORGE_FILES assume mc-mods for Forge (#2740) 2024-03-27 08:21:07 -05:00
dependabot[bot]
f10bb45964 build(deps): bump the updates group with 4 updates (#2729) 2024-03-18 17:12:35 -05:00
dependabot[bot]
e556353ebb build(deps): bump the patches group in /docs with 1 update (#2728) 2024-03-18 07:38:11 -05:00
Geoff Bourne
938b562d21 Successful spigot/bukkit update check caused grep to fail (#2726) 2024-03-17 22:07:34 -05:00
Geoff Bourne
35daf1441a docs: add warning that GetBukkit is dead (#2723) 2024-03-16 14:46:03 -05:00
Geoff Bourne
75f5647c93 Fallback to existing server file when getbukkit retrieval fails (#2721) 2024-03-16 14:01:21 -05:00
C0D3 M4513R
d7512c44a9 Magma Maintained 1.20.1 is archived (#2718) 2024-03-15 09:38:38 -05:00
Robin Brämer
7419a66843 fix: Remove EXTAR_ARGS quotes to allow multiple args (fixes #2715) (#2716) 2024-03-13 08:21:37 -05:00
Robin Brämer
eec264c8ca Pass EXTRA_ARGS to run.sh (fixes #2714) (#2715) 2024-03-13 07:24:56 -05:00
Kaiede
3d2b88effd Update mc-server-runner to support EC-based SSH key (#2712) 2024-03-12 07:49:21 -05:00
Geoff Bourne
961bc7fdbf Remove Java 8 warning and 5 second delay (#2711) 2024-03-11 18:51:01 -05:00
dependabot[bot]
e33f87f841 build(deps): bump the patches group in /docs with 1 update (#2707) 2024-03-11 09:33:37 -05:00
Geoff Bourne
ca352c2355 modrinth: add MODRINTH_OVERRIDES_EXCLUSIONS option (#2703) 2024-03-09 13:44:27 -06:00
dependabot[bot]
01be571535 build(deps): bump mkdocs-autorefs from 0.5.0 to 1.0.1 in /docs (#2693) 2024-03-06 07:51:35 -06:00
dependabot[bot]
51e56a2168 build(deps): bump the patches group in /docs with 3 updates (#2692) 2024-03-04 08:00:18 -06:00
Geoff Bourne
fc5f7fa5d5 Use FTB_DIR for log4j2 patched files...hypothetically (#2691) 2024-03-03 16:01:49 -06:00
Geoff Bourne
e38cc6ec3b build: upgrade easy-add to 0.8.4 (#2686) 2024-02-27 22:19:29 -06:00
dependabot[bot]
e152875f65 build(deps): bump the patches group in /docs with 1 update (#2684) 2024-02-26 08:22:11 -06:00
dependabot[bot]
f5ceb60335 build(deps): bump the patches group in /docs with 1 update (#2674)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 11:28:38 -06:00
nohehf
23d20041fc feat: force include just-enough-resources-jer for create-arcane-engineering modpack (#2679) 2024-02-21 13:08:53 -06:00
Geoff Bourne
5979e65a01 auto-cf: resolve issue where zip compression scheme prevents manifest file extraction (#2678) 2024-02-20 11:10:56 -06:00
Geoff Bourne
d52b9b88a2 Gracefully handle getbukkit.org outage when resolving version (#2675) 2024-02-19 10:57:00 -06:00
Geoff Bourne
b957e4cdfa Improve rate limit detection and log available info (#2672) 2024-02-18 15:12:17 -06:00
Geoff Bourne
e816d37dc3 docs: use consistent style in lazytainer example (#2662) 2024-02-13 08:14:49 -06:00
Geoff Bourne
f17cdbee2b cf: support curseforge files that don't delcare any modloader (#2660) 2024-02-12 18:30:05 -06:00
Geoff Bourne
40653003a4 Fixed handling of Modrinth mods for NeoForge (#2659) 2024-02-12 11:13:02 -06:00
dependabot[bot]
9a29d6812b build(deps): bump the patches group in /docs with 1 update (#2656) 2024-02-12 07:52:35 -06:00
C0D3 M4513R
a03afd7650 Use KettingLauncher (#2655) 2024-02-10 20:04:44 -06:00
Geoff Bourne
f3bec94065 For legacy CURSEFORGE, write ops/whitelist files in final directory (#2654) 2024-02-10 16:02:23 -06:00
Geoff Bourne
ac7bf437ca Fixed support for mc-send-to-console (#2652) 2024-02-10 13:24:06 -06:00
Geoff Bourne
14de9281e2 auto-cf: add option to ignore files missing from previous installation (#2649) 2024-02-09 19:01:32 -06:00
Geoff Bourne
6aaed2da68 Disable REMOVE_OLD_MODS when it interferes with managed mod/plugin features (#2648) 2024-02-09 06:59:05 -06:00
Geoff Bourne
15c2e21e54 auto-cf: support modpack zips using IMPLODE compression method (#2646) 2024-02-08 15:05:12 -06:00
Geoff Bourne
730c228d48 build: use libcap package for Alpine images (#2644) 2024-02-07 19:37:27 -06:00
Geoff Bourne
b48a252dd6 Support NeoForge for Modrinth modpacks (#2643) 2024-02-07 17:10:18 -06:00
David Whittam
f9dd0f45ab Minor spelling fix in auto-curseforge.md (#2642) 2024-02-07 13:55:15 -06:00
Geoff Bourne
9c0aa776cd docs: clarified that auto CurseForge manual downloads need a browser (#2639) 2024-02-06 12:04:50 -06:00
dependabot[bot]
69eb7488e0 build(deps): bump the updates group with 1 update (#2636) 2024-02-05 09:00:48 -06:00
dependabot[bot]
93af5297fc build(deps): bump the patches group in /docs with 1 update (#2635) 2024-02-05 07:25:06 -06:00
Geoff Bourne
629156e1b3 auto-cf: provide option to force reinstall modpack's modloader (#2633) 2024-02-04 18:57:04 -06:00
Geoff Bourne
5c0b449c79 docs: improve memory limit examples (#2634) 2024-02-04 18:48:04 -06:00
Geoff Bourne
c424dc0c47 docs: clarify new default behavior with interactive console and colorized logs (#2632) 2024-02-04 15:47:13 -06:00
Geoff Bourne
8222a79bf4 docs: add example of Paper running with PROXY protocol enabled (#2629) 2024-02-03 19:38:44 -06:00
Geoff Bourne
6ae59e61fa Support 1.20.3 change to ping description structure (#2628) 2024-02-03 16:32:17 -06:00
Geoff Bourne
63b2e4484d Apply cap_net_raw to knockd to allow rootless auto-pause (#2625) 2024-02-02 22:23:07 -06:00
Geoff Bourne
600472d7eb docs: fixed formatting of deprecated Java version list (#2622) 2024-02-02 19:31:51 -06:00
Talesu
1e2024e8db Added Velocity to Multi Server (#2623) 2024-02-02 07:57:11 -06:00
Geoff Bourne
c2f41a48ef docs: clarified the Oracle GraalVM version used (#2621) 2024-01-31 16:53:13 -06:00
Zyztem
664b66dbb7 Update the doc's Copyright year (#2620) 2024-01-31 12:06:17 -06:00
Geoff Bourne
52351a423a docs: fix mkdocs emoji and static-i18n version (#2619) 2024-01-30 18:38:56 -06:00
Geoff Bourne
e23c73c83e docs: remove the deprecated content from the README (#2618) 2024-01-30 17:35:44 -06:00
dependabot[bot]
90ea47b792 build(deps): bump the patches group in /docs with 2 updates (#2615) 2024-01-29 12:35:15 -06:00
Geoff Bourne
6ea7d5851d modrinth: report error when project version not available for requested constraints (#2614) 2024-01-27 15:07:25 -06:00
dependabot[bot]
161ca91ab3 build(deps): bump the patches group in /docs with 1 update (#2608) 2024-01-22 07:36:07 -06:00
Geoff Bourne
619cee5ae5 docs: clarify that disabling RCON disables other features (#2607) 2024-01-21 12:21:40 -06:00
Geoff Bourne
b73fb88b3b Handle I/O timout type errors from autopause mc-monitor call (#2606) 2024-01-20 19:07:58 -06:00
Geoff Bourne
ca393c4fcf Directly attach stdin of server process by default (#2605) 2024-01-20 13:13:26 -06:00
Gjermund H. Pedersen
5729324195 umask as env var (#2601)
Co-authored-by: gjermundhp02 <gjermund.pedersen@gamil.com>
2024-01-18 18:27:58 -06:00
nfroeschl
a3b02ca3e3 Added Lazytainer Example (#2598) 2024-01-17 07:03:14 -06:00
Geoff Bourne
815608929c cf: allow for browser named files in final output (#2596) 2024-01-15 16:02:07 -06:00
Geoff Bourne
7cb2c0ddc7 Support local Modrinth modpack files (#2594) 2024-01-15 11:43:38 -06:00
Geoff Bourne
7a9e625935 docs: it’s spiget with an “e” (#2592) 2024-01-13 23:08:10 -06:00
dependabot[bot]
9e49840a26 build(deps): bump the updates group with 1 update (#2584) 2024-01-08 07:12:01 -06:00
Geoff Bourne
6f08613340 docs: added example of auto-cf custom manifest (#2582) 2024-01-07 12:20:34 -06:00
Kaiede
aec644dc3f Add SSH remote console support (#2576) 2024-01-06 09:55:14 -06:00
Geoff Bourne
63adc7bc6c docs: added example for All of Fabric 7 (#2575) 2024-01-05 19:00:17 -06:00
Geoff Bourne
6263cf419f docs: clarify the variables page (#2573) 2024-01-02 14:37:54 -06:00
Geoff Bourne
b0605581c3 docs: added ATM9 example (#2571) 2024-01-01 13:51:52 -06:00
Geoff Bourne
2cfd685def docs: fix formatting of sections and admonitions (#2570) 2024-01-01 13:30:45 -06:00
Geoff Bourne
6adda8f1b2 Handle calculated MEMORY value along with Aikar's flags (#2568) 2024-01-01 13:10:24 -06:00
streaminganger
cbd1e8d86d Handle various versions of Magma Maintained (#2563) 2023-12-29 08:57:13 -06:00
Geoff Bourne
7fa522853f neoforge: support 1.20.2+ (#2564) 2023-12-28 21:52:53 -06:00
farafonoff
6b2bd0d035 Fix magma_maintained server download path (#2562) 2023-12-27 09:42:21 -07:00
dependabot[bot]
6ac4586f26 build(deps): bump the updates group with 1 update (#2559) 2023-12-25 10:07:25 -07:00
dependabot[bot]
65a3490f43 build(deps): bump the patches group in /docs with 2 updates (#2560) 2023-12-25 07:20:24 -07:00
Geoff Bourne
422db18b20 neoforge: handle malformed version entry in maven metadata (#2557) 2023-12-23 13:31:57 -07:00
dependabot[bot]
88c24292ec build(deps): bump the patches group in /docs with 1 update (#2551) 2023-12-19 07:38:19 -07:00
Aruneko
3ca66db8b4 Add support for Magma Maintained (#2552) 2023-12-19 07:14:56 -07:00
Ryan Hullah
150881a941 Update release action (#2548) 2023-12-15 08:13:54 -06:00
sheepa
43accdf2f0 Fix FORCE_REDOWNLOAD at start-deployCustom (#2546) 2023-12-15 06:40:05 -06:00
Geoff Bourne
6363949bda Use Forge shim jar as entrypoint for >= 1.20.4 (#2543) 2023-12-13 20:06:53 -06:00
dependabot[bot]
b6b2da9d38 build(deps): bump actions/stale from 8 to 9 (#2538) 2023-12-11 07:28:38 -06:00
Aruneko
c40a47ebba Support ketting hybrid server (#2535) 2023-12-11 07:19:25 -06:00
Ryan Hullah
94f9bc74f0 Cleanup discord release message (#2532) 2023-12-07 10:04:06 -06:00
dependabot[bot]
0f4cb9c429 build(deps): bump the updates group with 1 update (#2525) 2023-12-06 07:34:58 -06:00
250 changed files with 4778 additions and 3831 deletions

View File

@@ -11,9 +11,9 @@ body:
Please double check some things first:
1. Do you just have a question about something? If so, asking in the [Q&A Discussions](https://github.com/itzg/docker-minecraft-server/discussions/categories/q-a) or asking on [the Discord server](https://discord.gg/DXfKpjB) would be best.
2. Did you re-pull the newest image using `docker pull`?
3. Is this bug happening after the `[init]` prefixed logs and after the log that says "Starting the Minecraft server"? If so, please report the bug with Mojang or the respective server provider.
4. Are you seeing a performance problem? If so, that is typically outside the scope of the image setup mechanims. Ask a question as above or contact the respective server provider.
2. Did you **re-pull the newest image** and confirmed the issue after that? Run `docker pull <image>` or if using a compose file, it's as easy as running `docker compose pull`. If using Kubernetes, add `imagePullPolicy: Always` to the container.
4. Is this bug happening after the `[init]` prefixed logs and after the log that says "Starting the Minecraft server"? If so, please report the bug with Mojang or the respective server provider.
5. Are you seeing a performance problem? If so, that is typically outside the scope of this image. Ask a question as above or contact the respective server provider.
- type: textarea
id: problem
attributes:

View File

@@ -10,6 +10,9 @@ on:
- "*.md"
- "docs/**"
- "examples/**"
- "notes/**"
- "kustomize/**"
- "images.json"
jobs:
build:
@@ -18,107 +21,112 @@ jobs:
matrix:
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
variant:
- java21-graalvm
- java24
- java24-graalvm
- java21
- java21-alpine
- java21-graalvm
- java21-jdk
- java17
- java17-graalvm
- java17-jdk
- java17-openj9
- java17-alpine
- java16
- java11
- java8
- java8-graalvm-ce
- java8-multiarch
- java8-openj9
- java8-jdk
- java11
- java11-openj9
- java11-jdk
include:
# JAVA 24
- variant: java24
baseImage: eclipse-temurin:24-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java24-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:24-ol8
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 21:
- variant: java21-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:21-ol8
platforms: linux/amd64,linux/arm64
mcVersion: 1.20.2
mcVersion: latest
- variant: java21
baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.19.3
mcVersion: latest
- variant: java21-jdk
baseImage: eclipse-temurin:21
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64
mcVersion: 1.19.3
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 17:
- variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
baseImage: eclipse-temurin:17-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.18.2
mcVersion: 1.20.4
- variant: java17-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:17-ol8
platforms: linux/amd64,linux/arm64
mcVersion: 1.18.2
- variant: java17-jdk
baseImage: eclipse-temurin:17-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.18.2
- variant: java17-openj9
baseImage: ibm-semeru-runtimes:open-17-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.18.2
mcVersion: 1.20.4
- variant: java17-alpine
baseImage: eclipse-temurin:17-jre-alpine
platforms: linux/amd64
mcVersion: 1.18.2
# JAVA 11:
mcVersion: 1.20.4
# JAVA 16
- variant: java16
baseImage: adoptopenjdk:16-jre-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
# JAVA 11
- variant: java11
baseImage: adoptopenjdk:11-jre-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
- variant: java11-jdk
baseImage: adoptopenjdk:11-jdk-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
- variant: java11-openj9
baseImage: ibm-semeru-runtimes:open-11-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.16.5
mcVersion: 1.16.4
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
- variant: java8
baseImage: openjdk:8-jre-alpine3.9
platforms: linux/amd64
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
# mcHelperVersion: 1.46.0
- variant: java8-graalvm-ce
baseImage: ghcr.io/graalvm/graalvm-ce:java8
platforms: linux/amd64
mcVersion: 1.12.2
- variant: java8-multiarch
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
# mcHelperVersion: 1.46.0
- variant: java8-jdk
baseImage: eclipse-temurin:8u312-b07-jdk-focal
platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
# mcHelperVersion: 1.46.0
- variant: java8-openj9
baseImage: ibm-semeru-runtimes:open-8u312-b07-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
# mcHelperVersion: 1.46.0
env:
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
IMAGE_TO_TEST: "${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}"
HAS_IMAGE_REPO_ACCESS: ${{ secrets.DOCKER_USER != '' && secrets.DOCKER_PASSWORD != '' }}
MAIN_VARIANT: java17
runs-on: ubuntu-20.04
MAIN_VARIANT: java21
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
uses: actions/checkout@v5.0.0
with:
# for build-files step
fetch-depth: 0
- name: Docker meta
id: meta
uses: docker/metadata-action@v5.0.0
uses: docker/metadata-action@v5.8.0
with:
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's,
# then the use of ${{ github.repository_owner }} will need to be replaced.
@@ -126,16 +134,20 @@ jobs:
${{ github.repository_owner }}/minecraft-server
ghcr.io/${{ github.repository_owner }}/minecraft-server
tags: |
# For the "main" variant, it gets the tag as-is, without suffix
type=ref,event=tag,enable=${{ matrix.variant == env.MAIN_VARIANT }}
# and each variant (including main one) gets the tag with the variant suffix, such as 2023.1.1-java17
type=ref,event=tag,suffix=-${{ matrix.variant }}
# Apply the variant as a moving tag for most recent commit per variant
type=raw,value=${{ matrix.variant }},enable=${{ github.ref_name == github.event.repository.default_branch }}
# For the "main" variant, it gets the tag as-is
type=pep440,pattern={{version}},enable=${{ matrix.variant == env.MAIN_VARIANT }}
# ...and all variants (including main one) get the tag with the variant suffix, such as 2023.1.1-java17
type=pep440,pattern={{version}},suffix=-${{ matrix.variant }}
# latest tag gets a moving 'stable' image tag applied to the main variant
type=pep440,pattern=stable,enable=${{ matrix.variant == env.MAIN_VARIANT }}
# ...and qualified stable for all variants
type=pep440,pattern=stable,suffix=-${{ matrix.variant }}
# for building test/* branch images
type=ref,event=branch,suffix=-${{ matrix.variant }},enable=${{ github.ref_name != github.event.repository.default_branch }}
# latest repo tag gets a moving 'stable' image tag applied to the main variant
type=raw,value=stable,enable=${{ github.ref_type == 'tag' && matrix.variant == env.MAIN_VARIANT }}
# apply the variant as a moving tag for most recent commit per variant
type=raw,value=${{ matrix.variant }},enable=${{ github.ref_name == github.event.repository.default_branch }}
# for backward compatibility with users referencing java8-multiarch, this will set an extra label on java8
type=raw,value=java8-multiarch,enable=${{ matrix.variant == 'java8' && github.ref_name == github.event.repository.default_branch }}
# NOTE this identifies which variant will be published as "latest", which isn't
# necessarily the newest version of Java
flavor: |
@@ -144,13 +156,13 @@ jobs:
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@v3.11.1
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
uses: docker/setup-qemu-action@v3.6.0
- name: Build for test
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v6.18.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@@ -161,6 +173,7 @@ jobs:
push: false
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
cache-from: type=gha,scope=${{ matrix.variant }}
# no cache-to to avoid cross-cache update from next build step
@@ -173,14 +186,14 @@ jobs:
tests/test.sh
- name: Login to DockerHub
uses: docker/login-action@v3.0.0
uses: docker/login-action@v3.5.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GHCR
uses: docker/login-action@v3.0.0
uses: docker/login-action@v3.5.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
registry: ghcr.io
@@ -188,7 +201,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v6.18.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}
@@ -212,5 +225,9 @@ jobs:
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
BUILD_FILES_REV=${{ steps.build-files-rev.outputs.REV }}
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
cache-from: type=gha,scope=${{ matrix.variant }}
cache-to: type=gha,mode=max,scope=${{ matrix.variant }}

View File

@@ -19,12 +19,9 @@ jobs:
steps:
- name: on-publish
if: github.event_name == 'release' && github.event.action == 'published'
uses: Ilshidur/action-discord@master
uses: SethCohen/github-releases-to-discord@v1.19.0
with:
args: |
Github repo: [${{ github.repository }}](<${{ github.event.repository.html_url}}>)
Release: [${{ github.event.release.name }}](<${{ github.event.release.html_url }}>)
${{ github.event.release.body }}
webhook_url: ${{ secrets.DISCORD_WEBHOOK }}
- name: on-success
if: github.event.workflow_run.conclusion == 'success'
uses: Ilshidur/action-discord@master

View File

@@ -6,13 +6,13 @@ on:
jobs:
check:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
permissions:
issues: write
pull-requests: write
steps:
- name: Process Stale Issues
uses: actions/stale@v8
uses: actions/stale@v9
with:
stale-issue-label: status/stale
stale-pr-label: status/stale

View File

@@ -7,8 +7,11 @@ on:
- "*.md"
- "docs/**"
- "examples/**"
- "notes/**"
- "kustomize/**"
- "docker-compose*.yml"
- "mkdocs.yml"
- "images.json"
jobs:
build:
@@ -17,54 +20,57 @@ jobs:
matrix:
variant:
- java21
- java21-alpine
- java17
- java17-alpine
- java8-multiarch
- java8
include:
# JAVA 21:
- variant: java21
baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.19.4
mcVersion: latest
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 17:
- variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
baseImage: eclipse-temurin:17-jre-focal
platforms: linux/amd64
mcVersion: 1.19.4
- variant: java17-alpine
baseImage: eclipse-temurin:17-jre-alpine
platforms: linux/amd64
mcVersion: 1.19.4
- variant: java8-multiarch
mcVersion: 1.20.4
- variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64
mcVersion: 1.12.2
# Pin version for Java 8
mcHelperVersion: 1.42.1
env:
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
uses: actions/checkout@v5.0.0
with:
# for build-files step
fetch-depth: 0
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@v3.11.1
- name: Confirm multi-arch build
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v6.18.0
with:
platforms: ${{ matrix.platforms }}
# ensure latest base image is used
pull: true
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Build for test
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v6.18.0
with:
# Only build single platform since loading multi-arch image into daemon fails with
# "docker exporter does not currently support exporting manifest lists"
@@ -77,6 +83,7 @@ jobs:
push: false
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Run tests

View File

@@ -1,5 +1,4 @@
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
build:

View File

@@ -1,6 +1,4 @@
# syntax = docker/dockerfile:1.3
ARG BASE_IMAGE=eclipse-temurin:17-jre-focal
ARG BASE_IMAGE=eclipse-temurin:21-jre
FROM ${BASE_IMAGE}
# hook into docker BuildKit --platform support
@@ -9,47 +7,48 @@ ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
# CI system should set this to a hash or git revision of the build directory and it's contents to
# ensure consistent cache updates.
ARG BUILD_FILES_REV=1
# The following three arg/env vars get used by the platform specific "install-packages" script
ARG EXTRA_DEB_PACKAGES=""
ARG EXTRA_DNF_PACKAGES=""
ARG EXTRA_ALPINE_PACKAGES=""
ARG FORCE_INSTALL_PACKAGES=1
RUN --mount=target=/build,source=build \
REV=${BUILD_FILES_REV} TARGET=${TARGETARCH}${TARGETVARIANT} /build/run.sh install-packages
TARGET=${TARGETARCH}${TARGETVARIANT} \
/build/run.sh install-packages
RUN --mount=target=/build,source=build \
REV=${BUILD_FILES_REV} /build/run.sh setup-user
COPY --chmod=644 files/sudoers* /etc/sudoers.d
/build/run.sh setup-user
EXPOSE 25565
ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com
ARG EASY_ADD_VERSION=0.8.2
ARG EASY_ADD_VERSION=0.8.11
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
RUN chmod +x /usr/bin/easy-add
ARG RESTIFY_VERSION=1.7.1
ARG RESTIFY_VERSION=1.7.10
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG RCON_CLI_VERSION=1.6.4
ARG RCON_CLI_VERSION=1.7.1
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_MONITOR_VERSION=0.12.6
ARG MC_MONITOR_VERSION=0.15.6
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_SERVER_RUNNER_VERSION=1.9.1
ARG MC_SERVER_RUNNER_VERSION=1.13.3
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_HELPER_VERSION=1.37.3
ARG MC_HELPER_VERSION=1.48.10
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
# used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1
@@ -63,12 +62,11 @@ WORKDIR /data
STOPSIGNAL SIGTERM
# End user MUST set EULA and change RCON_PASSWORD
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 LC_ALL=en_US.UTF-8
COPY --chmod=755 scripts/start* /
COPY --chmod=755 bin/ /usr/local/bin/
COPY --chmod=755 bin/mc-health /health.sh
COPY --chmod=644 files/* /image/
COPY --chmod=755 files/shims/ /usr/local/bin/
COPY --chmod=755 files/* /image/
COPY --chmod=755 files/auto /auto
RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPatcher/releases/download/v1.0.1/Log4jPatcher-1.0.1.jar
@@ -76,4 +74,9 @@ RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPa
RUN dos2unix /start* /auto/*
ENTRYPOINT [ "/start" ]
HEALTHCHECK --start-period=1m --interval=5s --retries=24 CMD mc-health
HEALTHCHECK --start-period=2m --retries=2 --interval=30s CMD mc-health
ARG BUILDTIME=local
ARG VERSION=local
ARG REVISION=local
RUN echo "buildtime=${BUILDTIME}\nversion=${VERSION}\nrevision=${REVISION}" > /etc/image.properties

1947
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +0,0 @@
#!/bin/bash
. "/start-utils"
: "${CONSOLE_IN_NAMED_PIPE:=/tmp/minecraft-console-in}"
if [ $# = 0 ]; then
echo "ERROR: pass console commands as arguments"
exit 1
fi
if [ ! -p "${CONSOLE_IN_NAMED_PIPE}" ]; then
echo "ERROR: named pipe ${CONSOLE_IN_NAMED_PIPE} is missing"
exit 1
fi
if [ "$(id -u)" = 0 ]; then
if [[ $(getDistro) == alpine ]]; then
exec su-exec minecraft bash -c "echo '$*' > '${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}'"
else
exec gosu minecraft bash -c "echo '$*' > '${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}'"
fi
else
echo "$@" >"${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}"
fi

View File

@@ -3,6 +3,8 @@
set -e
set -o pipefail
# Install necessary packages
# shellcheck disable=SC2086
apk add --no-cache -U \
openssl \
imagemagick \
@@ -14,21 +16,33 @@ apk add --no-cache -U \
procps \
shadow \
bash \
curl iputils \
curl \
iputils \
git \
jq \
mysql-client \
tzdata \
rsync \
nano \
ncurses \
sudo \
tar \
zstd \
nfs-utils \
libpcap \
libwebp
libwebp \
libcap \
${EXTRA_ALPINE_PACKAGES}
# Patched knockd
# Download and install patched knockd
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-alpine-amd64.tar.gz
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
setcap cap_net_raw=ep /usr/local/sbin/knockd
# Set Git credentials globally
cat <<EOF >> /etc/gitconfig
[user]
name = Minecraft Server on Docker
email = server@example.com
EOF

View File

@@ -1,12 +1,22 @@
#!/bin/bash
if [[ $(uname -m) == "aarch64" ]]; then
curl -sL -o /bin/gosu https://github.com/tianon/gosu/releases/download/1.16/gosu-arm64
chmod +x /bin/gosu
elif [[ $(uname -m) == "x86_64" ]]; then
curl -sL -o /bin/gosu https://github.com/tianon/gosu/releases/download/1.16/gosu-amd64
chmod +x /bin/gosu
else
echo "Not supported!"
exit 1
fi
set -euo pipefail
GOSU_VERSION="1.16"
GOSU_BASE_URL="https://github.com/tianon/gosu/releases/download/$GOSU_VERSION"
case $(uname -m) in
"aarch64")
GOSU_ARCH="gosu-arm64"
;;
"x86_64")
GOSU_ARCH="gosu-amd64"
;;
*)
echo "Architecture not supported!"
exit 1
;;
esac
curl -sL -o /bin/gosu "${GOSU_BASE_URL}/${GOSU_ARCH}"
chmod +x /bin/gosu

View File

@@ -4,21 +4,30 @@ export TARGET
set -euo pipefail
microdnf install dnf -y
os_major_version=$(awk -F'[= ."]+' '/^VERSION_ID=/{ print $2 }' /etc/os-release)
# Install and configure dnf
microdnf install dnf -y
dnf install 'dnf-command(config-manager)' -y
dnf config-manager --set-enabled ol8_codeready_builder
tee /etc/yum.repos.d/ol8-epel.repo<<EOF
[ol8_developer_EPEL]
name= Oracle Linux \$releasever EPEL (\$basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/\$basearch/
dnf config-manager --set-enabled ol${os_major_version}_codeready_builder
# Add EPEL repository
tee /etc/yum.repos.d/ol${os_major_version}-epel.repo <<EOF
[ol${os_major_version}_developer_EPEL]
name=Oracle Linux \$releasever EPEL (\$basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL${os_major_version}/developer/EPEL/\$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
EOF
# Update system
dnf update -y
dnf install -y ImageMagick \
# Install necessary packages
# shellcheck disable=SC2086
dnf install -y \
ImageMagick \
file \
sudo \
net-tools \
@@ -38,11 +47,30 @@ dnf install -y ImageMagick \
libpcap \
libwebp \
findutils \
which
which \
glibc-langpack-en \
${EXTRA_DNF_PACKAGES}
# Install Git LFS
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
dnf update -y
dnf install -y git-lfs
# Clean up DNF when done
dnf clean all
# Install gosu (assuming the script /build/ol/install-gosu.sh exists and is executable)
bash /build/ol/install-gosu.sh
# Patched knockd
# Download and install patched knockd
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
setcap cap_net_raw=ep /usr/local/sbin/knockd
# Set git credentials globally
cat <<EOF >> /etc/gitconfig
[user]
name = Minecraft Server on Docker
email = server@example.com
EOF

View File

@@ -4,8 +4,9 @@ export TARGET
set -euo pipefail
# Update and install packages
apt-get update
# shellcheck disable=SC2086
DEBIAN_FRONTEND=noninteractive \
apt-get install -y \
imagemagick \
@@ -27,12 +28,26 @@ apt-get install -y \
lbzip2 \
nfs-common \
libpcap0.8 \
webp
${EXTRA_DEB_PACKAGES}
# Install Git LFS
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
apt-get update
apt-get install -y git-lfs
# Clean up APT when done
apt-get clean
# Patched knockd
# Download and install patched knockd
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
setcap cap_net_raw=ep /usr/local/sbin/knockd
find /usr/lib -name 'libpcap.so.0.8' -execdir cp '{}' libpcap.so.1 \;
# Set git credentials globally
cat <<EOF >> /etc/gitconfig
[user]
name = Minecraft Server on Docker
email = server@example.com
EOF

View File

@@ -2,5 +2,9 @@
set -e
if id ubuntu > /dev/null 2>&1; then
deluser ubuntu
fi
addgroup --gid 1000 minecraft
adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft

View File

@@ -4,8 +4,6 @@
#
# and then access http://localhost:8000
version: "3.8"
services:
mkdocs:
build:

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@@ -1,4 +1,4 @@
FROM python:3.8
FROM python:3.11
RUN pip install --upgrade pip

View File

@@ -19,27 +19,51 @@ docker exec mc rcon-cli stop
_The `-i` is not needed in this case._
If rcon is disabled you can send commands by passing them as arguments to the packaged `mc-send-to-console` script. For example, a player can be op'ed in the container `mc` with:
## When RCON is disabled
If rcon is disabled you can send commands by passing them as arguments to the packaged `mc-send-to-console` script after setting the env var `CREATE_CONSOLE_IN_PIPE` to "true". For example, a player can be op'ed in the container `mc` with:
```shell
docker exec mc mc-send-to-console op player
docker exec --user 1000 mc mc-send-to-console op player
| |
+- container name +- Minecraft commands start here
```
In order to attach and interact with the Minecraft server, add `-it` when starting the container, such as
## Enabling interactive console
In order to attach and interact with the Minecraft server make sure to enable TTY and keep stdin open.
!!! example
With `docker run` use the `-it` arguments:
```shell
docker run -d -it -p 25565:25565 --name mc itzg/minecraft-server
```
With that you can attach and interact at any time using
or with a compose file:
docker attach mc
```yaml
services:
minecraft:
stdin_open: true
tty: true
```
With that you can attach and interact at any time using the following, replacing the `{...}` placeholders.
...when container is created with `docker run`
```
docker attach {container name or ID}
```
...or when declared using a compose file
```
docker compose attach {service name}
```
and then Control-p Control-q to **detach**.
For remote access, configure your Docker daemon to use a `tcp` socket (such as `-H tcp://0.0.0.0:2375`)
and attach from another machine:
!!! info "RCON is required for fully interactive, color console"
docker -H $HOST:2375 attach mc
Unless you're on a home/private LAN, you should [enable TLS access](https://docs.docker.com/articles/https/).
RCON must be enabled, which is the default, in order to use a fully interactive console with auto-completion and colorized log output.

View File

@@ -4,14 +4,10 @@ title: Modifying config files
## Replacing variables inside configs
Sometimes you have mods or plugins that require configuration information that is only available at runtime.
For example if you need to configure a plugin to connect to a database,
you don't want to include this information in your Git repository or Docker image.
Or maybe you have some runtime information like the server name that needs to be set
in your config files after the container starts.
Sometimes you have mods or plugins that require configuration information that is only available at deploy-time. For example if you need to configure a plugin to connect to a database, you don't want to include this information in your Git repository or Docker image.
Or maybe you have some runtime information like the server name that needs to be set in your config files after the container starts.
For those cases there is the option to replace defined variables inside your configs
with environment variables defined at container runtime.
For those cases there is the option to replace defined variables inside your configs with environment variables defined at container runtime.
When the environment variable `REPLACE_ENV_IN_PLACE` is set to `true` (the default), the startup script will go through all files inside the container's `/data` path and replace variables that match the container's environment variables. Variables can instead (or in addition to) be replaced in files sync'ed from `/plugins`, `/mods`, and `/config` by setting `REPLACE_ENV_DURING_SYNC` to `true` (defaults to `false`).
@@ -66,7 +62,6 @@ database:
This is how your `docker-compose.yml` file could look like:
```yml
version: "3.8"
# Other docker-compose examples in /examples
services:

View File

@@ -8,13 +8,48 @@ By default, the image declares an initial and maximum Java memory-heap limit of
- `INIT_MEMORY`: independently sets the initial heap size
- `MAX_MEMORY`: independently sets the max heap size
The values of all three are passed directly to the JVM and support format/units as `<size>[g|G|m|M|k|K]`. For example:
The values of all three are passed directly to the JVM and support format/units as `<size>[g|G|m|M|k|K]`.
-e MEMORY=2G
!!! example "Using docker run"
To let the JVM calculate the heap size from the container declared memory limit, unset `MEMORY` with an empty value, such as `-e MEMORY=""`. By default, the JVM will use 25% of the container memory limit as the heap limit; however, as an example the following would tell the JVM to use 75% of the container limit of 2GB of memory:
```
-e MEMORY=2G
```
-e MEMORY="" -e JVM_XX_OPTS="-XX:MaxRAMPercentage=75" -m 2000M
or to use init and max memory:
```
-e INIT_MEMORY=1G -e MAX_MEMORY=4G
```
!!! example "Using compose file"
```
environment:
MEMORY: 2G
```
or to use init and max memory:
```
environment:
INIT_MEMORY: 1G
MAX_MEMORY: 4G
```
To let the JVM calculate the heap size from the container declared memory limit, unset `MEMORY` with an empty value, such as `-e MEMORY=""`. By default, the JVM will use 25% of the container memory limit as the heap limit; however, as an example the following would tell the JVM to use 75% of the container limit of 4GB of memory:
!!! example "MaxRAMPercentage using compose file"
```
environment:
MEMORY: ""
JVM_XX_OPTS: "-XX:MaxRAMPercentage=75"
deploy:
resources:
limits:
memory: 4G
```
!!! important
The settings above only set the Java **heap** limits. Memory resource requests and limits on the overall container should also account for non-heap memory usage. An extra 25% is [a general best practice](https://dzone.com/articles/best-practices-java-memory-arguments-for-container).
@@ -33,7 +68,7 @@ docker run ... -e JVM_OPTS="-someJVMOption someJVMOptionValue" ...
```yaml
environment:
- EULA=true
- JVM_OPTS=-someJVMOption someJVMOptionValue
- JVM_OPTS=-someJVMOption someJVMOptionValue
```
Using object syntax is recommended and more intuitive:
@@ -77,7 +112,7 @@ If needing to map to a different port, then also set the environment variable `J
!!! example
With a compose file:
```yaml
environment:
ENABLE_JMX: true
@@ -96,3 +131,13 @@ The set of flags documented there can be added using
-e USE_AIKAR_FLAGS=true
When `MEMORY` is greater than or equal to 12G, then the Aikar flags will be adjusted according to the article.
## Enable MeowIce's Flags
[MeowIce has created an updated set of JVM flags](https://github.com/MeowIce/meowice-flags?tab=readme-ov-file#why-would-i-have-to-switch-) based on Aikar's flags but with support for optimizations for Java 17 and above
The set of flags documented there can be added using
-e USE_MEOWICE_FLAGS=true
There is an optional `USE_MEOWICE_GRAALVM_FLAGS` variable to enable GraalVM specific optimizations, defaults to `TRUE` if USE_MEOWICE_GRAALVM_FLAGS is `TRUE`

View File

@@ -24,14 +24,9 @@ docker run -d -v /path/on/host:/data \
## Running as alternate user/group ID
By default, the container will switch to user ID 1000 and group ID 1000;
however, you can override those values by setting `UID` and/or `GID` as environmental entries, during the `docker run` command.
By default, the container will switch to and run the Minecraft server as user ID 1000 and group ID 1000; however, that can be changed by setting the environment variables `UID` and `GID`.
-e UID=1234
-e GID=1234
The container will also skip user switching if the `--user`/`-u` argument
is passed to `docker run`.
The startup will also skip user switching if the `--user`/`-u` argument is passed to `docker run` or `user` is set on the compose service.
## Extra Arguments
@@ -41,21 +36,9 @@ See [Custom worlds directory path](../misc/world-data.md#custom-worlds-directory
## Interactive and Color Console
If you would like to `docker attach` to the Minecraft server console with color and interactive capabilities, then add
When RCON is enabled, which is the default, and [TTY](https://docs.docker.com/compose/compose-file/05-services/#tty) is enabled on the container, then some server types will output colorized logs and provide a fully interactive console. To access the interactive console, use [`docker attach`](https://docs.docker.com/engine/reference/commandline/container_attach/) (not `exec`). When finished, make sure to use the sequence Control-P, Control-Q to detach without stopping the container.
```
-e EXEC_DIRECTLY=true
```
> **NOTES**
>
> This feature doesn't work via rcon, so you will need to `docker attach` to the container. Use the sequence Ctrl-P, Ctrl-Q to detach.
>
> This will bypass graceful server shutdown handling when using `docker stop`, so be sure the server console's `stop` command.
>
> Make to enable stdin and tty with `-it` when using `docker run` or `stdin_open: true` and `tty: true` when using docker compose.
>
> This feature is incompatible with Autopause and cannot be set when `ENABLE_AUTOPAUSE=true`.
If this behavior interferes with the log content, then disable TTY or remove the setting entirely since the default is disabled. In a compose file, set the service's `tty` parameter to `false`. On the `docker run` command-line remove the `-t` argument.
## Server Shutdown Options
@@ -67,6 +50,24 @@ To allow time for players to finish what they're doing during a graceful server
The grace period can be increased using [the -t option on docker-compose down](https://docs.docker.com/compose/reference/down/) or set the [stop_grace_period](https://docs.docker.com/compose/compose-file/05-services/#stop_grace_period) in the compose file.
The `STOP_SERVER_ANNOUNCE_DELAY` can be bypassed by sending a `SIGUSR1` signal to the `mc-server-runner` process.
`docker`:
docker stop --signal SIGUSR1 mc
`docker compose`:
docker compose kill --signal SIGUSR1
## Configuration Options for Minecraft Server Health Monitoring
The image tags include specific variables to simplify configuration for monitoring the health of a Minecraft server:
- `-e SERVER_HOST=localhost` : This variable sets the host address of the Minecraft server to be monitored. By default, it is set to `localhost`, but you can replace it with the actual hostname or IP address of your Minecraft server.
- `-e SERVER_PORT=25565` : This variable sets the port number on which the Minecraft server is running. By default, Minecraft servers run on port 25565, but if your server is configured to use a different port, you should replace `25565` with the correct port number. This helps the monitoring system to accurately check the health status of the Minecraft server on the specified port.
## OpenJ9 Specific Options
The openj9 image tags include specific variables to simplify configuration:
@@ -106,11 +107,7 @@ such as:
## HTTP Proxy
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's URL via the `PROXY`
environment variable. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references
a companion squid proxy by setting the equivalent of
-e PROXY=proxy:3128
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`.
## Using "noconsole" option

View File

@@ -4,7 +4,9 @@ If you prefer to manually manage the `server.properties` file, set `OVERRIDE_SER
!!! note
To clear a server property, set the variable to an empty string, such as `-e RESOURCE_PACK=""`. An unset variable is ignored and the existing `server.property` is left unchanged.
To clear a server property, set the variable to an empty string, such as `-e RESOURCE_PACK=""`. An unset variable is ignored and the existing server property is left unchanged.
To see what `server.properties` will get used by the server, set the environment variable `DUMP_SERVER_PROPERTIES` to "true" and the contents of `server.properties` will get output before the server starts.
## Placeholders
@@ -62,13 +64,39 @@ The section symbol (§) and other unicode characters are automatically converted
![](../img/motd-example.png)
To produce a multi-line MOTD, embed a newline character as `\n` in the string, such as
To produce a multi-line MOTD, embed a newline character as `\n` in the string, such as the following example.
!!! example "Multi-line MOTD"
With `docker run`
```
-e MOTD="Line one\nLine two"
```
or within a compose file
```yaml
MOTD: |
line one
line two
# or
# MOTD: "line one\nline two"
```
!!! tip
The following example combines a multi-line MOTD with [placeholders](#placeholders) from the latest version of the installed modpack:
You can also embed configured and resolved environment variables using [placeholders](#placeholders).
!!! example
```yaml
MOD_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: craftoria
MOTD: |
A %TYPE% server on %VERSION%
running %MODPACK_NAME% %MODPACK_VERSION%
```
![](../img/motd-with-placeholders.png)
### Difficulty
@@ -110,7 +138,7 @@ When either is set, [whitelisting of connecting users](https://minecraft.wiki/w/
To change the behavior when the whitelist file already exists, set the variable `EXISTING_WHITELIST_FILE` to one of the following options:
`SKIP` (default)
`SKIP`
: Skip processing of the whitelist file when one is already present. This is the same as setting the legacy variable `OVERRIDE_WHITELIST` to "false".
`SYNCHRONIZE`
@@ -119,7 +147,7 @@ To change the behavior when the whitelist file already exists, set the variable
`MERGE`
: Merge the list of users from `WHITELIST` into the existing file. `WHITELIST_FILE` cannot be used with this option.
`SYNC_FILE_MERGE_LIST`
`SYNC_FILE_MERGE_LIST` (default)
: When `WHITELIST_FILE` is provided it will overwrite an existing whitelist file. Also, if `WHITELIST` is provided, then those users will be merged into the newly copied file.
!!! note
@@ -128,6 +156,11 @@ To change the behavior when the whitelist file already exists, set the variable
To [enforce the whitelist changes immediately](https://minecraft.wiki/w/Server.properties#enforce-whitelist) when whitelist commands are used , set `ENFORCE_WHITELIST` to "true". If managing the whitelist file manually, `ENABLE_WHITELIST` can be set to "true" to set the `white-list` property.
!!! tip "Changing user API provider"
The usernames provided for whitelist and ops processing are resolved using either [PlayerDB](https://playerdb.co/) or [Mojang's API](https://wiki.vg/Mojang_API#Username_to_UUID). The default uses PlayerDB, but can be changed by setting the environment variable `USER_API_PROVIDER` to "mojang". Sometimes one or the other service can become overloaded, which is why there is the ability to switch providers.
### Op/Administrator Players
Similar to the whitelist, users can be provisioned as operators (aka administrators) to your Minecraft server by
@@ -148,7 +181,7 @@ Similar to the whitelist, users can be provisioned as operators (aka administrat
To change the behavior when the ops file already exists, set the variable `EXISTING_OPS_FILE` to one of the following options:
`SKIP` (default)
`SKIP`
: Skip processing of the ops file when one is already present. This is the same as setting the legacy variable `OVERRIDE_OPS` to "false".
`SYNCHRONIZE`
@@ -157,7 +190,7 @@ To change the behavior when the ops file already exists, set the variable `EXIST
`MERGE`
: Merge the list of users from `OPS` into the existing file. `OPS_FILE` cannot be used with this option.
`SYNC_FILE_MERGE_LIST`
`SYNC_FILE_MERGE_LIST` (default)
: When `OPS_FILE` is provided it will overwrite an existing ops file. Also, if `OPS` is provided, then those users will be merged into the newly copied file.
!!! note
@@ -174,22 +207,46 @@ New to [22W42A](https://www.minecraft.net/en-us/article/minecraft-snapshot-22w42
### Server icon
A server icon can be configured using the `ICON` variable. The image will be automatically
downloaded, scaled, and converted from any other image format:
A server icon can be configured by setting the `ICON` variable to a URL to download or a container path. The image will be automatically downloaded (if a URL), scaled, and converted from any other image format:
!!! example
Using `docker run`:
```
docker run -d -e ICON=http://..../some/image.png ...
```
In compose file:
```yaml
environment:
ICON: http://..../some/image.png
```
Using a file from host filesystem:
```yaml
environment:
ICON: /icon.png
OVERRIDE_ICON: true
volumes:
./icon.png:/icon.png
```
The server icon which has been set doesn't get overridden by default. It can be changed and overridden by setting `OVERRIDE_ICON` to `TRUE`.
docker run -d -e ICON=http://..../some/other/image.png -e OVERRIDE_ICON=TRUE...
By default an existing `server-icon.png` file will not be replaced, that can be changed by setting `OVERRIDE_ICON` to "true".
### RCON
RCON is **enabled by default** to allow for graceful shut down the server and coordination of save state during backups. RCON can be disabled by setting `ENABLE_RCON` to "false".
The default password is randomly generated if `RCON_PASSWORD` has not been set.
!!! warning
**DO NOT MAP THE RCON PORT EXTERNALLY** unless you aware of all the consequences and have set a **secure password** with `RCON_PASSWORD`.
Disabling RCON will remove and limit some features, such as interactive and color console support.
The default password is randomly generated on each startup; however, a specific one can be set with `RCON_PASSWORD`.
**DO NOT MAP THE RCON PORT EXTERNALLY** unless you are aware of all the consequences and have set a **secure password** with `RCON_PASSWORD`.
!!! info
@@ -199,125 +256,26 @@ By default, the server listens for RCON on port 25575 within the container. It c
### Query
Enabling this will enable the gamespy query protocol.
By default the query port will be `25565` (UDP) but can easily be changed with the `QUERY_PORT` variable.
docker run -d -e ENABLE_QUERY=true
### Max players
By default max players is 20, you can increase this with the `MAX_PLAYERS` variable.
docker run -d -e MAX_PLAYERS=50
### Max world size
This sets the maximum possible size in blocks, expressed as a radius, that the world border can obtain.
docker run -d -e MAX_WORLD_SIZE=10000
### Allow Nether
Allows players to travel to the Nether.
docker run -d -e ALLOW_NETHER=true
### Announce Player Achievements
Allows server to announce when a player gets an achievement.
docker run -d -e ANNOUNCE_PLAYER_ACHIEVEMENTS=true
### Enable Command Block
Enables command blocks
docker run -d -e ENABLE_COMMAND_BLOCK=true
### Force Gamemode
Force players to join in the default game mode.
- false - Players will join in the gamemode they left in.
- true - Players will always join in the default gamemode.
`docker run -d -e FORCE_GAMEMODE=false`
### Generate Structures
Defines whether structures (such as villages) will be generated.
- false - Structures will not be generated in new chunks.
- true - Structures will be generated in new chunks.
`docker run -d -e GENERATE_STRUCTURES=true`
### Hardcore
If set to true, players will be set to spectator mode if they die.
docker run -d -e HARDCORE=false
### Snooper
If set to false, the server will not send data to snoop.minecraft.net server.
docker run -d -e SNOOPER_ENABLED=false
### Max Build Height
The maximum height in which building is allowed.
Terrain may still naturally generate above a low height limit.
docker run -d -e MAX_BUILD_HEIGHT=256
### Max Tick Time
The maximum number of milliseconds a single tick may take before the server watchdog stops the server with the message, A single server tick took 60.00 seconds (should be max 0.05); Considering it to be crashed, server will forcibly shutdown. Once this criteria is met, it calls System.exit(1).
Setting this to -1 will disable watchdog entirely
docker run -d -e MAX_TICK_TIME=60000
### Spawn Animals
Determines if animals will be able to spawn.
docker run -d -e SPAWN_ANIMALS=true
### Spawn Monsters
Determines if monsters will be spawned.
docker run -d -e SPAWN_MONSTERS=true
### Spawn NPCs
Determines if villagers will be spawned.
docker run -d -e SPAWN_NPCS=true
### Set spawn protection
Sets the area that non-ops can not edit (0 to disable)
docker run -d -e SPAWN_PROTECTION=0
### View Distance
Sets the amount of world data the server sends the client, measured in chunks in each direction of the player (radius, not diameter).
It determines the server-side viewing distance.
docker run -d -e VIEW_DISTANCE=10
Set the environment variable `ENABLE_QUERY` to "true" to enable the gamespy query protocol. Maps to the server property [enable-query](https://minecraft.wiki/w/Server.properties#enable-query). By default, the query port will be `25565` (UDP) but can be changed with the `QUERY_PORT` environment variable.
### Level Seed
If you want to create the Minecraft level with a specific seed, use `SEED`, such as
-e SEED=1785852800490497919
If you want to create the Minecraft level with a specific seed, set the environment variable `SEED`, which maps to the [level-seed](https://minecraft.wiki/w/Server.properties#level-seed) property.
If using a negative value for the seed, make sure to quote the value such as:
!!! example "Using docker run"
```
-e SEED="-1785852800490497919"
```
!!! example "Using compose"
```yaml
environment:
SEED: "-1785852800490497919"
```
### Game Mode
@@ -335,13 +293,6 @@ For example:
docker run -d -e MODE=creative ...
### PVP Mode
By default, servers are created with player-vs-player (PVP) mode enabled. You can disable this with the `PVP`
environment variable set to `false`, such as
docker run -d -e PVP=false ...
### Level Type and Generator Settings
By default, a standard world is generated with hills, valleys, water, etc. A different level type can
@@ -349,7 +300,7 @@ be configured by setting `LEVEL_TYPE` to [an expected type listed here](https://
For some of the level types, `GENERATOR_SETTINGS` can be used to further customize the world generation.
To configure the `GENERATOR_SEETINGS` you need to add the appropriate `GeneratorOptions` JSON configuration. In the case of a superflat world, you may omit the `flat_world_options`.
To configure the `GENERATOR_SETTINGS` you need to add the appropriate `GeneratorOptions` JSON configuration. In the case of a superflat world, you may omit the `flat_world_options`.
The layers are applied from -64 and up and are added in the order of the list
@@ -361,29 +312,28 @@ Example for a superflat world:
- Desert biome
```yaml
LEVEL_TYPE: FLAT
GENERATOR_SETTINGS: >-4
{
"layers": [
{
"block": "minecraft:bedrock",
"height": 1
},
{
"block": "minecraft:stone",
"height": 2
},
{
"block": "minecraft:sandstone",
"height": 15
}
],
"biome": "minecraft:desert"
}
environment:
LEVEL_TYPE: FLAT
GENERATOR_SETTINGS: >-
{
"layers": [
{
"block": "minecraft:bedrock",
"height": 1
},
{
"block": "minecraft:stone",
"height": 2
},
{
"block": "minecraft:sandstone",
"height": 15
}
],
"biome": "minecraft:desert"
}
```
For more details, check the [official wiki](https://minecraft.wiki/w/Java_Edition_level_format#generatorOptions_tag_format).
For more details, refer to the Minecraft Wiki sections for [Superflat Multiplayer](https://minecraft.wiki/w/Superflat#Multiplayer) and [generator options tag format](https://minecraft.wiki/w/Java_Edition_level_format#generatorOptions_tag_format).
### Custom Server Resource Pack
@@ -405,31 +355,24 @@ where the default is "world":
> **INFO** Refer to the [data directory](../data-directory.md) section for a visual description of where the `$LEVEL` directory is situated.
### Online mode
By default, server checks connecting players against Minecraft's account database. If you want to create an offline server or your server is not connected to the internet, you can disable the server to try connecting to minecraft.net to authenticate players with environment variable `ONLINE_MODE`, like this
docker run -d -e ONLINE_MODE=FALSE ...
### Allow flight
Allows users to use flight on your server while in Survival mode, if they have a mod that provides flight installed.
-e ALLOW_FLIGHT=TRUE|FALSE
### Server name
The server name (e.g. for bungeecord) can be set like:
docker run -d -e SERVER_NAME=MyServer ...
### Server port
> **WARNING:** only change this value if you know what you're doing. It is only needed when using host networking and it is rare that host networking should be used. Use `-p` port mappings instead.
> **WARNING:** only change this value if you know what you're doing. It only needs to be changed when using host-networking and it is rare that host networking should be used. Use `-p` port mappings instead.
If you must, the server port can be set like:
!!! example "Using docker run"
```
docker run -d -e SERVER_PORT=25566 ...
```
!!! example "Using compose"
```yaml
environment:
SERVER_PORT: 25566
```
**however**, be sure to change your port mapping accordingly and be prepared for some features to break.
@@ -453,19 +396,47 @@ When using `docker run` from a bash shell, the entries must be quoted with the `
### Other server property mappings
| Environment Variable | Server Property |
|-----------------------------------|-----------------------------------|
| BROADCAST_CONSOLE_TO_OPS | broadcast-console-to-ops |
| BROADCAST_RCON_TO_OPS | broadcast-rcon-to-ops |
| ENABLE_STATUS | enable-status |
| ENFORCE_SECURE_PROFILE | enforce-secure-profile |
| ENTITY_BROADCAST_RANGE_PERCENTAGE | entity-broadcast-range-percentage |
| FUNCTION_PERMISSION_LEVEL | function-permission-level |
| NETWORK_COMPRESSION_THRESHOLD | network-compression-threshold |
| OP_PERMISSION_LEVEL | op-permission-level |
| PLAYER_IDLE_TIMEOUT | player-idle-timeout |
| PREVENT_PROXY_CONNECTIONS | prevent-proxy-connections |
| SIMULATION_DISTANCE | simulation-distance |
| SYNC_CHUNK_WRITES | sync-chunk-writes |
| USE_NATIVE_TRANSPORT | use-native-transport |
| Environment Variable | Server Property |
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------|
| ACCEPTS_TRANSFERS | [accepts-transfers](https://minecraft.wiki/w/Server.properties#accepts-transfers) |
| ALLOW_FLIGHT | [allow-flight](https://minecraft.wiki/w/Server.properties#allow-flight) |
| ALLOW_NETHER | [allow-nether](https://minecraft.wiki/w/Server.properties#allow-nether) |
| BROADCAST_CONSOLE_TO_OPS | [broadcast-console-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-console-to-ops) |
| BROADCAST_RCON_TO_OPS | [broadcast-rcon-to-ops](https://minecraft.wiki/w/Server.properties#broadcast-rcon-to-ops) |
| BUG_REPORT_LINK | [bug-report-link](https://minecraft.wiki/w/Server.properties#bug-report-link) |
| ENABLE_COMMAND_BLOCK | [enable-command-block](https://minecraft.wiki/w/Server.properties#enable-command-block) |
| ENABLE_STATUS | [enable-status](https://minecraft.wiki/w/Server.properties#enable-status) |
| ENFORCE_SECURE_PROFILE | [enforce-secure-profile](https://minecraft.wiki/w/Server.properties#enforce-secure-profile) |
| ENTITY_BROADCAST_RANGE_PERCENTAGE | [entity-broadcast-range-percentage](https://minecraft.wiki/w/Server.properties#entity-broadcast-range-percentage) |
| FORCE_GAMEMODE | [force-gamemode](https://minecraft.wiki/w/Server.properties#force-gamemode) |
| FUNCTION_PERMISSION_LEVEL | [function-permission-level](https://minecraft.wiki/w/Server.properties#function-permission-level) |
| GENERATE_STRUCTURES | [generate-structures](https://minecraft.wiki/w/Server.properties#generate-structures) |
| HARDCORE | [hardcore](https://minecraft.wiki/w/Server.properties#hardcore) |
| HIDE_ONLINE_PLAYERS | [hide-online-players](https://minecraft.wiki/w/Server.properties#hide-online-players) |
| LOG_IPS | [log-ips](https://minecraft.wiki/w/Server.properties#log-ips) |
| MANAGEMENT_SERVER_ENABLED | [management-server-enabled](https://minecraft.wiki/w/Server.properties#management-server-enabled) |
| MANAGEMENT_SERVER_HOST | [management-server-host](https://minecraft.wiki/w/Server.properties#management-server-host) |
| MANAGEMENT_SERVER_PORT | [management-server-port](https://minecraft.wiki/w/Server.properties#management-server-port) |
| MAX_CHAINED_NEIGHBOR_UPDATES | [max-chained-neighbor-updates](https://minecraft.wiki/w/Server.properties#max-chained-neighbor-updates) |
| MAX_PLAYERS | [max-players](https://minecraft.wiki/w/Server.properties#max-players) |
| MAX_TICK_TIME | [max-tick-time](https://minecraft.wiki/w/Server.properties#max-tick-time) |
| MAX_WORLD_SIZE | [max-world-size](https://minecraft.wiki/w/Server.properties#max-world-size) |
| NETWORK_COMPRESSION_THRESHOLD | [network-compression-threshold](https://minecraft.wiki/w/Server.properties#network-compression-threshold) |
| ONLINE_MODE | [online-mode](https://minecraft.wiki/w/Server.properties#online-mode) |
| OP_PERMISSION_LEVEL | [op-permission-level](https://minecraft.wiki/w/Server.properties#op-permission-level) |
| PAUSE_WHEN_EMPTY_SECONDS | [pause-when-empty-seconds](https://minecraft.wiki/w/Server.properties#pause-when-empty-seconds) |
| PLAYER_IDLE_TIMEOUT | [player-idle-timeout](https://minecraft.wiki/w/Server.properties#player-idle-timeout) |
| PREVENT_PROXY_CONNECTIONS | [prevent-proxy-connections](https://minecraft.wiki/w/Server.properties#prevent-proxy-connections) |
| PVP | [pvp](https://minecraft.wiki/w/Server.properties#pvp) |
| RATE_LIMIT | [rate-limit](https://minecraft.wiki/w/Server.properties#rate-limit) |
| REGION_FILE_COMPRESSION | [region-file-compression](https://minecraft.wiki/w/Server.properties#region-file-compression) |
| RESOURCE_PACK_ID | [resource-pack-id](https://minecraft.wiki/w/Server.properties#resource-pack-id) |
| RESOURCE_PACK_PROMPT | [resource-pack-prompt](https://minecraft.wiki/w/Server.properties#resource-pack-prompt) |
| SERVER_NAME | [server-name](https://minecraft.wiki/w/Server.properties#server-name) |
| SIMULATION_DISTANCE | [simulation-distance](https://minecraft.wiki/w/Server.properties#simulation-distance) |
| SPAWN_MONSTERS | [spawn-monsters](https://minecraft.wiki/w/Server.properties#spawn-monsters) |
| SPAWN_PROTECTION | [spawn-protection](https://minecraft.wiki/w/Server.properties#spawn-protection) |
| STATUS_HEARTBEAT_INTERVAL | [status-heartbeat-interval](https://minecraft.wiki/w/Server.properties#status-heartbeat-interval) |
| SYNC_CHUNK_WRITES | [sync-chunk-writes](https://minecraft.wiki/w/Server.properties#sync-chunk-writes) |
| USE_NATIVE_TRANSPORT | [use-native-transport](https://minecraft.wiki/w/Server.properties#use-native-transport) |
| VIEW_DISTANCE | [view-distance](https://minecraft.wiki/w/Server.properties#view-distance) |

View File

@@ -31,7 +31,6 @@ When attached in this way you can stop the server, edit the configuration under
With Docker Compose, setting up a host attached directory is even easier since relative paths can be configured. For example, with the following `docker-compose.yml` Docker will automatically create/attach the relative directory `minecraft-data` to the container.
``` yaml title="docker-compose.yml"
version: "3"
services:
mc:

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -19,7 +19,7 @@ where, in this case, the standard server port 25565, will be exposed on your hos
!!! note
If you plan on running a server for a longer amount of time it is highly recommended using a management layer such as [Docker Compose](#using-docker-compose) or [Kubernetes](#deployment-templates-and-examples) to allow for incremental reconfiguration and image upgrades.
If you plan on running a server for a longer amount of time it is highly recommended using a management layer such as [Docker Compose](#using-docker-compose) or [Kubernetes](misc/deployment/index.md#on-kubernetes) to allow for incremental reconfiguration and image upgrades.
!!! info
@@ -29,7 +29,7 @@ where, in this case, the standard server port 25565, will be exposed on your hos
**DO NOT** port forward RCON on 25575 without first setting `RCON_PASSWORD` to a secure value. It is highly recommended to only use RCON within the container, such as with `rcon-cli`.
By default, the container will download the latest version of the "vanilla" [Minecraft: Java Edition server](https://www.minecraft.net/en-us/download/server) provided by Mojang. The [`VERSION`](versions/java.md) and the [`TYPE`](types-and-platforms/index.md) can be configured to create many variations of desired Minecraft server.
By default, the container will download the latest version of the "vanilla" [Minecraft: Java Edition server](https://www.minecraft.net/en-us/download/server) provided by Mojang. The [`VERSION`](versions/minecraft.md) and the [`TYPE`](types-and-platforms/index.md) can be configured to create many variations of desired Minecraft server.
## Using [Docker Compose](https://docs.docker.com/compose/)
@@ -39,7 +39,6 @@ By default, the container will download the latest version of the "vanilla" [Min
4. Done! Point your client at your host's name/IP address and port 25565.
```yaml
version: "3.8"
services:
mc:
@@ -59,6 +58,9 @@ To apply changes made to the compose file, just run `docker compose up -d` again
Follow the logs of the container using `docker compose logs -f`, check on the status with `docker compose ps`, and stop the container using `docker compose stop`.
!!! note "Configurator Tool"
If you prefer to use an interactive tool to create or edit a Docker Compose file for this image, you can check out [setupmc.com's configurator](https://setupmc.com/java-server/). It provides a form that supports most of the image variables and generates the `compose.yml` file in real time.
!!! note "More Compose Examples"
There are more [examples located in the Github repo](https://github.com/itzg/docker-minecraft-server/tree/master/examples).

View File

@@ -1,4 +1,8 @@
# Auto-Pause
!!! important
As of [1.21.2](https://minecraft.wiki/w/Java_Edition_1.21.2) it is not recommend to use this feature since Minecraft server natively auto-pauses when the server is empty. That is configured via the enivironment variable `PAUSE_WHEN_EMPTY_SECONDS`, which maps to the `pause-when-empty-seconds` server property.
An auto-pause functionality is provided that monitors whether clients are connected to the server. If a client is not connected for a specified time, the Java process is put into a pause state. When a client attempts to connect while the process is paused, then process will be restored to a running state. The experience for the client does not change. This feature can be enabled by setting the environment variable `ENABLE_AUTOPAUSE` to "true".
@@ -16,7 +20,7 @@ A file called `.paused` is created in `/data` directory when the server is pause
A `.skip-pause` file can be created in the `/data` directory to make the server skip autopausing, for as long as the file is present. The autopause timer will also be reset.
A starting, example compose file has been provided in [examples/docker-compose-autopause.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-autopause.yml).
A starting, example compose file has been provided in [the examples](https://github.com/itzg/docker-minecraft-server/blob/master/examples/autopause/compose.yml).
Auto-pause is not compatible with `EXEC_DIRECTLY=true` and the two cannot be set together.
@@ -38,6 +42,8 @@ The following environment variables define the behaviour of auto-pausing:
describes period of the daemonized state machine, that handles the pausing of the process (resuming is done independently)
- `AUTOPAUSE_KNOCK_INTERFACE`, default `eth0`
<br>Describes the interface passed to the `knockd` daemon. If the default interface does not work, run the `ifconfig` command inside the container and derive the interface receiving the incoming connection from its output. The passed interface must exist inside the container. Using the loopback interface (`lo`) does likely not yield the desired results.
- `AUTOPAUSE_STATUS_RETRY_LIMIT`, default 10
- `AUTOPAUSE_STATUS_RETRY_INTERVAL`, default 2s
!!! tip
@@ -45,7 +51,9 @@ The following environment variables define the behaviour of auto-pausing:
## Rootless Auto-Pause
If you're running the container as rootless, you might need to set change the default port forwarder from RootlessKit to slirp4netns.
If you're running the container as rootless, then it is necessary to add the `CAP_NET_RAW` capability to the container, such as using [the `cap_add` service field](https://docs.docker.com/compose/compose-file/05-services/#cap_add) in a compose file or [`--cap-add` docker run argument](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities). It may also be necessary to set the environment variable `SKIP_SUDO` to "true".
You might need to set change the default port forwarder from RootlessKit to slirp4netns.
For Docker, see the following for setup:
@@ -54,8 +62,9 @@ For Docker, see the following for setup:
For Podman, see the following for setup:
- https://rootlesscontaine.rs/getting-started/podman/#changing-the-port-forwarder
- Run with
```
-e AUTOPAUSE_KNOCK_INTERFACE=tap0 --cap-add=CAP_NET_RAW --network slirp4netns:port_handler=slirp4netns
```
!!! example "Using docker run"
-e AUTOPAUSE_KNOCK_INTERFACE=tap0 --cap-add=CAP_NET_RAW --network slirp4netns:port_handler=slirp4netns

View File

@@ -2,7 +2,7 @@
An option to stop the server after a specified time has been added for niche applications (e.g. billing saving on AWS Fargate). The function is incompatible with the Autopause functionality, as they basically cancel out each other.
!!! note
!!! note
the docker container variables have to be set accordingly (restart policy set to "no") and that the container has to be manually restarted.
@@ -17,11 +17,16 @@ Enable the Autostop functionality by setting:
```
The following environment variables define the behavior of auto-stopping:
* `AUTOSTOP_TIMEOUT_EST`, default `3600` (seconds)
- `AUTOSTOP_TIMEOUT_EST`, default `3600` (seconds)
describes the time between the last client disconnect and the stopping of the server (read as timeout established)
* `AUTOSTOP_TIMEOUT_INIT`, default `1800` (seconds)
- `AUTOSTOP_TIMEOUT_INIT`, default `1800` (seconds)
describes the time between server start and the stopping of the server, when no client connects in-between (read as timeout initialized)
* `AUTOSTOP_PERIOD`, default `10` (seconds)
- `AUTOSTOP_PERIOD`, default `10` (seconds)
describes period of the daemonized state machine, that handles the stopping of the server
- `AUTOPAUSE_STATUS_RETRY_LIMIT`, default 10
- `AUTOPAUSE_STATUS_RETRY_INTERVAL`, default 2s
> To troubleshoot, add `DEBUG_AUTOSTOP=true` to see additional output
## Proxy Support
If you make use of PROXY Protocol, i.e. through something like HAProxy or Fly.io, you will need to enable it in your variety of server's configuration, and then set the `USES_PROXY_PROTOCOL` envar to `true`. This lets Autostop monitor the server, where it otherwise wouldn't

42
docs/misc/building.md Normal file
View File

@@ -0,0 +1,42 @@
!!! tip "For advanced use only"
This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size.
Be sure to confirm that the desired [version and variant of Java isn't already provided](../versions/java.md).
## Building image locally with alternate Java base
An alternate Java base image can be specified by setting the [docker build argument](https://docs.docker.com/reference/cli/docker/buildx/build/#build-arg) `BASE_IMAGE` to the desired base image. The following shows an example of using the base image `ghcr.io/graalvm/graalvm-ce:ol8-java11`:
```shell
docker build --build-arg BASE_IMAGE=ghcr.io/graalvm/graalvm-ce:ol8-java11 -t IMG_PREFIX/minecraft-server:java11-graalvm .
```
## Building a multi-architecture image
Ensure buildx/BuildKit support is enabled and run the following to build multi-architecture and push to the repository as named by the image:
```shell
docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag IMG_PREFIX/minecraft-server --push .
```
To build for local images, multi-architecture is not supported, use the following with buildx to load the image into the local daemon:
```shell
docker buildx build --tag IMG_PREFIX/minecraft-server --load .
```
or just a plain build
```shell
docker build -t IMG_PREFIX/minecraft-server .
```
## Installing extra packages
The following build args can be set to install additional packages for the respective base image distro:
- `EXTRA_DEB_PACKAGES`
- `EXTRA_DNF_PACKAGES`
- `EXTRA_ALPINE_PACKAGES`

View File

@@ -1,28 +0,0 @@
## Building image locally with alternate Java base
The following shows how to change the base Java image used by the build:
```shell
docker build --build-arg BASE_IMAGE=ghcr.io/graalvm/graalvm-ce:ol8-java11 -t IMG_PREFIX/minecraft-server:java11-graalvm .
```
## Building a multi-architecture image
Ensure buildx/BuildKit support is enabled and run the following to build multi-architecture and push to the repository as named by the image:
```shell
docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag IMG_PREFIX/minecraft-server --push .
```
To build for local images, multi-architecture is not supported, use the following with buildx to load the image into the local daemon:
```shell
docker buildx build --tag IMG_PREFIX/minecraft-server --load .
```
or just a plain build
```shell
docker build -t IMG_PREFIX/minecraft-server .
```

View File

@@ -46,24 +46,26 @@ popd
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
```shell script
```shell
docker run -it --rm -v ${PWD}:/scripts -e SCRIPTS=/scripts/ --entrypoint bash mc-dev
```
From within the container you can run individual scripts via the attached `/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
```shell script
```shell
export VERSION=1.12.2
/scripts/start-magma
```
...or pre-pending script execution:
```shell script
```shell
VERSION=1.12.2 /scripts/start-magma
```
> NOTE: You may want to temporarily add an `exit` statement near the end of your script to isolate execution to just the script you're developing.
!!! note
You may want to temporarily add an `exit` statement near the end of your script to isolate execution to just the script you're developing.
## Using development copy of tools

View File

@@ -13,6 +13,17 @@
[Shulker](https://github.com/jeremylvln/Shulker) is a Kubernetes operator for managing complex and dynamic Minecraft infrastructures, including game servers and proxies. It uses the docker-minecraft-server and docker-bungeecord images under-the-hood.
## With Ansible
[Ansible](https://docs.ansible.com/ansible/latest/getting_started/introduction.html) is an open-source task automation tool built in [Python](https://www.python.org/). Ansible playbooks can be used to automate all kinds of tasks, including deploying remote Minecraft servers.
### Using the MASH playbook
[The MASH Playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a premade playbook with the option to deploy a [wide variety of open-source services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) to your server(s), including [docker-minecraft-server](https://github.com/XHawk87/ansible-role-minecraft), making it a good option if you want all the bells and whistles alongside your Minecraft server.
- Check out the [Installation Guide](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/README.md) for the MASH playbook to get started.
- You can then enable [Minecraft](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/minecraft.md) in your vars.yml.
- Enable any supporting services that you might find useful, such as [user authentication](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/authelia.md), [remote backups](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/backup-borg.md), [email relay](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/exim-relay.md), [cron monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/healthchecks.md), [audio and video conferencing](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/jitsi.md), databases ([MariaDB](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/mariadb.md), [PostgresSQL](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/postgres.md)), [push notifications](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/ntfy.md), [uptime monitoring](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md), [a website](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/wordpress.md), as well as installing any [extra files, folders, applications, services and running commands](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/auxiliary.md) automatically on deployment.
## On CloudFormation (AWS)
If you're looking for a simple way to deploy this to the Amazon Web Services Cloud, check out the [Minecraft Server Deployment (CloudFormation) repository](https://github.com/vatertime/minecraft-spot-pricing). This repository contains a CloudFormation template that will get you up and running in AWS in a matter of minutes. Optionally it uses Spot Pricing so the server is very cheap, and you can easily turn it off when not in use.

View File

@@ -7,7 +7,6 @@ Various examples are [maintained in the repository](https://github.com/itzg/dock
Using the [GeyserMC plugin](https://geysermc.org/) with a Paper server (or similar) "enables clients from Minecraft Bedrock Edition to join your Minecraft Java server". The example also includes [Floodgate](https://wiki.geysermc.org/floodgate/) which "allows Xbox Live authenticated Bedrock users to join without a Java Edition account".
```yaml
version: "3.8"
services:
mc:
@@ -25,4 +24,119 @@ services:
- ./data:/data
```
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml)
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml)
## Lazymc - Put your Minecraft server to rest when idle
With [lazymc-docker-proxy](https://github.com/joesturge/lazymc-docker-proxy) you are able to use [lazymc](https://github.com/timvisee/lazymc) with the minecraft container.
```yaml
# Lazymc requires that the minecraft server have a static IP.
#
# To ensure that our servers have a static IP we need to create
# a network for our services to use.
#
# By default, Docker uses 172.17.0.0/16 subnet range.
# So we need to create a new network in a different subnet
# See the readme for more information.
#
# Please ensure that the subnet falls within the private CIDRs:
# https://datatracker.ietf.org/doc/html/rfc1918#section-3
#
# And that it is not in use by anything else.
networks:
minecraft-network:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
services:
lazymc:
image: ghcr.io/joesturge/lazymc-docker-proxy:latest
# the IPs should start at .2 as .1 is reserved for the gateway
networks:
minecraft-network:
ipv4_address: 172.18.0.2
restart: unless-stopped
volumes:
# you should mount the minecraft server dir under /server, using read only.
- data:/server:ro
# you need to supply the docker socket, so that the container can run docker command
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
# lazymc-docker-proxy acts as a proxy, so there is
# no need to expose the server port on the Minecraft container
- "25565:25565"
# Standard Docker Minecraft server, also works with other server types
mc:
image: itzg/minecraft-server:java21
# Assign a static IP to the server container
networks:
minecraft-network:
ipv4_address: 172.18.0.3
# We need to add a label here so that lazymc-docker-proxy knows which
# container to manage
labels:
# Set lazymc.enabled to true to enable lazymc on this container
- lazymc.enabled=true
# Required to find the container to manage it
- lazymc.group=mc
# Point to the service name of the Minecraft server
- lazymc.server.address=mc:25565
tty: true
stdin_open: true
# This container should be managed solely by the lazymc container
# so set restart to no, or else the container will start again...
restart: no
environment:
EULA: "TRUE"
volumes:
- data:/data
volumes:
data:
```
[Source](https://github.com/joesturge/lazymc-docker-proxy/blob/master/docker-compose.yaml)
## Lazytainer - Stop Minecraft container based on traffic
Monitors network traffic to the Minecraft containers. If there is traffic, the container runs, otherwise the container is stopped/paused.
By using [Lazytainer](https://github.com/vmorganp/Lazytainer) with the [docker-minecraft-server](https://github.com/itzg/docker-minecraft-server) a somehow similar behaviour to [Lazymc](https://github.com/timvisee/lazymc) can be archived.
```yaml
services:
lazytainer:
image: ghcr.io/vmorganp/lazytainer:master
environment:
VERBOSE: false
ports:
- 25565:25565
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- lazytainer.group.minecraft.sleepMethod=stop
- lazytainer.group.minecraft.ports=25565
- lazytainer.group.minecraft.minPacketThreshold=2 # Start after two incomming packets
- lazytainer.group.minecraft.inactiveTimeout=600 # 10 minutes, to allow the server to bootstrap. You can probably make this lower later if you want.
restart: unless-stopped
network_mode: bridge
mc:
image: itzg/minecraft-server
environment:
EULA: TRUE
TYPE: PAPER
MEMORY: 4G
volumes:
- ./data:/data
labels:
- lazytainer.group=minecraft
depends_on:
- lazytainer
network_mode: service:lazytainer
tty: true
stdin_open: true
restart: unless-stopped
```
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml)

View File

@@ -7,14 +7,14 @@ CONTAINER ID IMAGE COMMAND CREATED
b418af073764 mc "/start" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc
```
You can also query the container's health in a script friendly way:
You can also query the container's health in a script-friendly way:
``` shell
> docker container inspect -f "{{.State.Health.Status}}" mc
healthy
```
There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a compose file, then use something like the following in the service declaration:
There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a Compose file, then use something like the following in the service declaration:
``` yaml
healthcheck:
@@ -24,9 +24,16 @@ healthcheck:
retries: 20
```
Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of healthchecks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`.
Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of health checks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`.
### Healthchecks for older versions
The [health check in a Compose service declaration](https://docs.docker.com/reference/compose-file/services/#healthcheck) can also be disabled using:
This container disables Healthchecks for Versions before b1.8 as those versions do not support any kind of server pinging.
For more information see [Server List Ping](https://wiki.vg/Server_List_Ping#Beta_1.8_to_1.3)
```yaml
healthcheck:
disable: true
test: ["NONE"]
```
### Health checks for older versions
This container disables health checks for Minecraft versions before b1.8 as those versions do not support any kind of server pinging. For more information see [Server List Ping](https://minecraft.wiki/w/Java_Edition_protocol/Server_List_Ping#Beta_1.8_to_1.3).

View File

@@ -6,7 +6,7 @@ Docker image that runs a Minecraft Bedrock server.
Lightweight multiplexer/proxy for Minecraft Java servers. Provided as a stand-alone application and a Docker image.
### [itzg/bungeecord](https://github.com/itzg/docker-bungeecord/)
### [itzg/mc-proxy](https://github.com/itzg/docker-bungeecord/)
Docker image that runs a proxy powered by Bungeecord, Velocity, or Waterfall

View File

@@ -3,3 +3,36 @@ To troubleshoot the container initialization, such as when server files are pre-
To troubleshoot just the command-line used to start the Minecraft server, set the environment variable `DEBUG_EXEC` to `true`.
To troubleshoot any issues with memory allocation reported by the JVM, set the environment variable `DEBUG_MEMORY` to `true`.
If you are experiencing any issues with the "Changing ownership of /data" step, that can be disabled by setting `SKIP_CHOWN_DATA` to `true`.
To confirm the image version that has been pulled, use the following command, replacing `itzg/minecraft-server` as needed for specific image tags:
## Image labels
```shell
docker image inspect itzg/minecraft-server -f "{{json .Config.Labels}}"
```
such as
```json
{
"org.opencontainers.image.authors": "... <...@gmail.com>",
"org.opencontainers.image.created": "2025-04-03T02:15:51.405Z",
"org.opencontainers.image.description": "Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.revision": "d6897a649ecbc16b5fb2e1500e24b64ef80270a0",
"org.opencontainers.image.source": "https://github.com/itzg/docker-minecraft-server",
"org.opencontainers.image.title": "docker-minecraft-server",
"org.opencontainers.image.url": "https://github.com/itzg/docker-minecraft-server",
"org.opencontainers.image.version": "java21"
}
```
The labels that are most interesting are:
- `org.opencontainers.image.created` : the date/time the image was built
- `org.opencontainers.image.revision` : which maps to <https://github.com/itzg/docker-minecraft-server/commit/REVISION>
- `org.opencontainers.image.version` : image tag and variant [as described in this page](../versions/java.md)

View File

@@ -80,6 +80,10 @@ Example of expected VanillaTweaks share codes:
VANILLATWEAKS_SHARECODE: MGr52E,tF1zL2,LnEDwT
```
!!! note
Datapack names are all lower case. [See their spec](https://vanillatweaks.net/assets/resources/json/1.21/dpcategories.json) for a full list of 1.21 datapacks, and [their spec](https://vanillatweaks.net/assets/resources/json/1.21/ctcategories.json) for a full list of 1.21 crafting tweaks.
Example of expected VanillaTweaks files:
``` yaml
@@ -89,13 +93,14 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="DataPacks json"
{
"type": "datapacks",
"version": "1.18",
"version": "1.21",
"packs": {
"survival": [
"gameplay changes": [
"graves",
"multiplayer sleep"
"multiplayer sleep",
"armored elytra"
],
"items": ["armored elytra"]
"teleport commands": ["tpa"]
}
}
```
@@ -103,7 +108,7 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="ResourcePacks json"
{
"type": "resourcepacks",
"version": "1.18",
"version": "1.21",
"packs": {
"aesthetic": ["CherryPicking", "BlackNetherBricks", "AlternateBlockDestruction"]
}
@@ -114,7 +119,7 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="CraftingTweaks Json"
{
"type": "craftingtweaks",
"version": "1.18",
"version": "1.21",
"packs": {
"quality of life": [
"dropper to dispenser",

View File

@@ -6,7 +6,7 @@ A specific file can be omitted from each reference to allow for auto-selecting t
!!! warning "CurseForge API key usage"
A CurseForge API key must be allocated and set with `CF_API_KEY` [as described here](../types-and-platforms/mod-platforms/auto-curseforge.md#api-key).
A CurseForge API key must be allocated and set with `CF_API_KEY` (or `CF_API_KEY_FILE`) [as described here](../types-and-platforms/mod-platforms/auto-curseforge.md#api-key).
## Project-file references
@@ -22,22 +22,27 @@ The following formats are supported in the list of project-file references:
- Project ID, such as `238222`. _The newest applicable file will be automatically selected._
- Project slug or ID, `:`, and a file ID, such as `jei:4593548` or `238222:4593548`
- Project slug or ID, `@`, and a partial filename, such as `jei@10.2.1.1005`. This option is useful to refer to a version of the mod/plugin rather than looking up the file ID.
- An `@` followed by the **container path** to a listing file
An `@` followed by the container path to a listing file can also be provided as a project-file reference. Each line is processed as a reference where blank lines and comments that start with `#` are ignored.
!!! info "More about listing files"
For example, `CURSEFORGE_FILES` can be set to "@/extras/cf-mods.txt" where the container file `/extras/cf-mods.txt` contains
Each line in the listing file is processed as one of the references above; however, blank lines and comments that start with `#` are ignored.
Make sure to place the listing file in a mounted directory/volume or declare an appropriate mount for it.
For example, `CURSEFORGE_FILES` can be set to "@/extras/cf-mods.txt", assuming "/extras" has been added to `volumes` section, where the container file `/extras/cf-mods.txt` contains
```text
# This comment is ignored
jei:10.2.1.1005
# This and previous blank line are ignore
geckolib
aquaculture
naturalist
```
```text
# This comment is ignored
jei:10.2.1.1005
# This and previous blank line are ignore
geckolib
aquaculture
naturalist
```
!!! tip "Docker Compose"
!!! tip "Multi-line values in Docker Compose"
Making use of the space delimited option, compose file declarations can be organized nicely with a [multi-line string](https://yaml-multiline.info/), such as
@@ -47,3 +52,7 @@ naturalist
aquaculture
naturalist
```
## Dependencies
The files processing can detect if a dependency is missing from the given list, but is not able to resolve the dependencies otherwise since their metadata only gives the mod ID and not the specific file version/ID that is needed.

View File

@@ -1,10 +1,10 @@
# Working with mods and plugins
## Mod platforms
## Modpack platforms
By far the easiest way to work with mod and plugins, especially large numbers of them, is to utilize modpacks with [one of the supported mod platforms](../types-and-platforms/index.md).
By far the easiest way to work with mod and plugins, especially large numbers of them, is to utilize modpacks with [one of the supported modpack platforms](../types-and-platforms/index.md).
The following are some supported mod platforms:
The following are some supported modpack platforms:
- [Modrinth](../types-and-platforms/mod-platforms/modrinth-modpacks.md)
- [CurseForge](../types-and-platforms/mod-platforms/auto-curseforge.md)
@@ -16,14 +16,16 @@ On the left, there are sections describing some download automation options.
## Mods vs Plugins
The terms "mods" and "plugins" can be quite confusing. Generally, the rule of thumb is that "mods" are used by the types that run client side to modify rendering, add new blocks, and add behaviors server, such as [Forge](../types-and-platforms/server-types/forge.md) and [Fabric](../types-and-platforms/server-types/fabric.md). "Plugins" are used by the types that **only run on servers** to add behaviors, commands, etc such as [Paper](../types-and-platforms/server-types/paper.md) (which derives from [Bukkit/Spigot](../types-and-platforms/server-types/bukkit-spigot.md)). There are also some types that are [hybrids](../types-and-platforms/server-types/hybrids.md), such as Magma, that use both "mods" and "plugins"
The terms "mods" and "plugins" can be quite confusing. Generally, the rule of thumb is that "mods" are used by the types that run client side to modify rendering, add new blocks, and add behaviors server, such as [Forge](../types-and-platforms/server-types/forge.md) and [Fabric](../types-and-platforms/server-types/fabric.md). "Plugins" are used by the types that **only run on servers** to add behaviors, commands, etc such as [Paper](../types-and-platforms/server-types/paper.md) (which derives from [Bukkit/Spigot](../types-and-platforms/server-types/bukkit-spigot.md)). There are also some types that are [hybrids](../types-and-platforms/server-types/hybrids.md), such as Magma, that use both "mods" and "plugins".
Typically, mods needs to be installed in both the client and server; however, there are some cases when only the server needs a mod. Plugins only need to be installed in the server and are never needed in the client.
## Optional plugins, mods, and config attach points
There are optional volume paths that can be attached to supply content to be copied into the data area:
`/plugins`
: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`.
: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`. If using a mod-based loader, such as Forge or Fabric, but a hybrid mod like [Cardboard](https://modrinth.com/mod/cardboard), then set `USES_PLUGINS` to have the automation utilize `/plugins` mount.
`/mods`
: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`.
@@ -41,8 +43,28 @@ For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMO
These paths work well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive.
!!! information ""
For more flexibility with mods/plugins preparation, you can declare other directories, files, and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list).
!!! information "Multiple source directories"
`COPY_PLUGINS_SRC`, `COPY_MODS_SRC`, `COPY_CONFIG_SRC` can each be set to a comma or newline delimited list of container directories to reference.
For example, in a compose file:
```yaml
environment:
# ...EULA, etc
TYPE: PAPER
# matches up to volumes declared below
COPY_PLUGINS_SRC: /plugins-common,/plugins-local
volumes:
- mc-data:/data
# For example, reference a shared directory used by several projects
- ../plugins-common:/plugins-common:ro
# and add plugins unique to this project
- ./plugins:/plugins-local:ro
```
Alternatively, you can declare other directories along with files and URLs to use in [the `MODS` / `PLUGINS` variables](#modsplugins-list).
## Zip file modpack
@@ -76,11 +98,26 @@ would expand to `https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.
If applying large generic packs, the update can be time-consuming. To skip the update set `SKIP_GENERIC_PACK_UPDATE_CHECK` to "true". Conversely, the generic pack(s) can be forced to be applied by setting `FORCE_GENERIC_PACK_UPDATE` to "true".
The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true.
The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true".
To disable specific mods, which can be useful for conflicts between multiple generic packs, you can use the `GENERIC_PACKS_DISABLE_MODS` variable to specify mods to disable.
Disabling mods with docker run:
```shell
docker run -d -e GENERIC_PACKS_DISABLE_MODS="mod1.jar mod2.jar" ...
```
Disabling mods within docker compose files:
```yaml
GENERIC_PACKS_DISABLE_MODS: |
mod1.jar
mod2.jar
```
## Mods/plugins list
You may also download or copy over individual mods/plugins using the `MODS` or `PLUGINS` environment variables. Both are a comma or newline delimited list of
- URL of a jar file
- container path to a jar file
- container path to a directory containing jar files
@@ -117,7 +154,7 @@ https://edge.forgecdn.net/files/2871/647/ToastControl-1.15.2-3.0.1.jar
Blank lines and lines that start with a `#` will be ignored
[This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-mods-file.yml) shows another example of using this feature.
[This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/mods-file/docker-compose.yml) shows another example of using this feature.
## Remove old mods/plugins

View File

@@ -1,24 +1,65 @@
# Auto-download from Modrinth
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric and Forge mods](https://modrinth.com/mods). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric, Forge, etc mods](https://modrinth.com/mods) and [Paper, etc plugins](https://modrinth.com/plugins), and [datapacks](https://modrinth.com/datapacks). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
- **MODRINTH_PROJECTS** : comma or newline separated list of project slugs (short name) or IDs. The project ID is located in the "Technical information" section. The slug is the part of the page URL that follows `/mod/`:
- **MODRINTH_PROJECTS** : comma or newline separated list of project slugs (short name) or IDs. The project ID is located in the "Technical information" section. The project slug is the part of the URL that follows `/mod/`, `/plugin/`, or `/datapack/`. For example:
```
https://modrinth.com/mod/fabric-api
----------
|
+-- project slug
```
Also, a specific version/type can be declared using colon symbol and version id/type after the project slug. The version id can be found in the 'Metadata' section. Valid version types are `release`, `beta`, `alpha`.
Also, a specific version (or release type) can be declared adding a colon and then the version id, version number/name, or release type after the project slug. The version ID or number can be found in the 'Metadata' section. Valid release types are `release`, `beta`, `alpha`.
To select a datapack from a Modrinth project, prefix the entry with "datapack:". When running a vanilla server, this is optional since only datapacks will be available for vanilla servers to select.
You can also reference a file containing project entries by prefixing the **container path** path with `@`.
| Description | Example projects entry |
|---------------------------------|-------------------------------------------------------|
| Select latest version | `fabric-api` |
| Select specific version | `fabric-api:bQZpGIz0`<br/>`fabric-api:0.119.2+1.21.4` |
| Select latest beta version | `fabric-api:beta` |
| Latest version using project ID | `P7dR8mSH` |
| Latest version of datapack | `datapack:terralith` |
| Specific version of datapack | `datapack:terralith:2.5.5` |
| Projects Listing File | `@/path/to/modrinth-mods.txt` |
!!! info "More about listing files"
Each line in the listing file is processed as one of the references above; however, blank lines and comments that start with `#` are ignored.
Make sure to place the listing file in a mounted directory/volume or declare an appropriate mount for it.
For example, `MODRINTH_PROJECTS` can be set to "@/extras/modrinth-mods.txt", assuming "/extras" has been added to `volumes` section, where the container file `/extras/modrinth-mods.txt` contains
```text
# This comment is ignored
fabric-api
# This and previous blank line are ignore
cloth-config
datapack:terralith
```
## Version from Projects
When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`.
!!! example
| Description | Example |
|---------------------------------|-----------------------|
| Select latest version | `fabric-api` |
| Select specific version | `fabric-api:PbVeub96` |
| Select latest beta version | `fabric-api:beta` |
| Latest version using project ID | `P7dR8mSH` |
Given the environment variables
```yaml
MODRINTH_PROJECTS: |
viaversion
viabackwards
griefprevention
discordsrv
VERSION_FROM_MODRINTH_PROJECTS: true
```
Let's say all are supported on Minecraft up to 1.21.8 except griefprevention, which is only supported up to 1.21.7. In that case, `VERSION` will be automatically set to 1.21.7.
## Extra options
@@ -26,5 +67,8 @@
: Can be set to `none` (the default), `required`, or `optional` to download required and/or optional dependencies.
`MODRINTH_ALLOWED_VERSION_TYPE`
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`.
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`. Setting to `beta` will pick up both release and beta versions. Setting to `alpha` will pick up release, beta, and alpha versions.
`MODRINTH_LOADER`
: When using a custom server, set this to specify which loader type will be requested during lookups

View File

@@ -1,9 +1,7 @@
mkdocs == 1.5.3
mkdocs-material-extensions == 1.3.1
mkdocs-material == 9.4.14
mkdocs-autorefs == 0.5.0
mkdocstrings == 0.24.0
mkdocs-literate-nav == 0.6.1
mdx-gh-links == 0.3.1
mkdocs-click == 0.8.1
mkdocs-static-i18n == 1.2.0
mkdocs-material == 9.6.18
mkdocs-autorefs == 1.4.2
mkdocstrings[python] == 0.30.0
mkdocs-literate-nav == 0.6.2
mdx-gh-links == 0.4
mkdocs-click == 0.9.0
mkdocs-static-i18n == 1.3.0

View File

@@ -1,4 +1,4 @@
# Server Types and Mod Platforms
# Server Types and Modpack Platforms
Server types can be selected by setting the `TYPE` environment variable to one of the types described in these sections.
@@ -6,7 +6,7 @@ The default server type is [the official software provided by Mojang](https://ww
**From the sections to the left...**
The **mod platforms** take a modpack identifier, file, etc and use that to select and download the appropriate version of a mod loader, such as Forge or Fabric, downloading declared mods/plugins, and apply any additional files. The mod platforms are selected by setting `MOD_PLATFORM`; however, for ease of use and compatibility, the selection can be set in `TYPE`.
The **modpack platforms** take a modpack identifier, file, etc and use that to select and download the appropriate version of a mod loader, such as Forge or Fabric, downloading declared mods/plugins, and apply any additional files. The modpack platforms are selected by setting `MODPACK_PLATFORM`; however, for ease of use and backward compatibility, the selection can be set in `TYPE` or `MOD_PLATFORM`.
The individual **server types** allow for selecting the mod loader / server type and specific versions of those.

View File

@@ -1,6 +1,6 @@
# Auto CurseForge
To manage a CurseForge modpack automatically with upgrade support, pinned or latest version tracking, set `MOD_PLATFORM` or `TYPE` to "AUTO_CURSEFORGE". The appropriate mod loader (Forge / Fabric) version will be automatically installed as declared by the modpack. This mode will also take care of cleaning up unused files installed by previous versions of the modpack, but world data is never auto-removed.
To manage a CurseForge modpack automatically with upgrade support, pinned or latest version tracking, set `MODPACK_PLATFORM`, `MOD_PLATFORM` or `TYPE` to "AUTO_CURSEFORGE". The appropriate mod loader (Forge / Fabric) version will be automatically installed as declared by the modpack. This mode will also take care of cleaning up unused files installed by previous versions of the modpack, but world data is never auto-removed.
## API Key
@@ -12,6 +12,7 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
Example if your key is `$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa`:
```yaml
# compose.yaml
environment:
CF_API_KEY: '$$11$$22$$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
```
@@ -21,16 +22,48 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
docker run ... -e CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
```
To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). `$`'s in the value still need to escaped with a second `$` and the variable needs to be referenced from the compose file, such as:
To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). You **do not** need to escape `$`'s with a second `$` in the `.env` file **as long as the key is wrapped in single quotes**.
```
# .env
CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
```
The variable should to be referenced from the compose file, such as:
```yaml
# compose.yaml
environment:
CF_API_KEY: ${CF_API_KEY}
```
The .env file should be placed in the same directory as your compose file like so:
```
/minecraft-server
├── .env
├── compose.yaml
├── /data
```
To use the equivalent with `docker run` you need to specify the `.env` file explicitly:
```
docker run --env-file=.env itzg/minecraft-server
```
Alternately you can use [docker secrets](https://docs.docker.com/compose/how-tos/use-secrets/) with a `CF_API_KEY_FILE` environment variable:
```
service:
environment:
CF_API_KEY_FILE: /run/secrets/cf_api_key
secrets:
- cf_api_key
secrets:
cf_api_key:
file: cf_api_key.secret
```
!!! note
Be sure to use the appropriate [image tag for the Java version compatible with the modpack](../../versions/java.md).
@@ -56,7 +89,9 @@ For example:
-e TYPE=AUTO_CURSEFORGE -e CF_SLUG=all-the-mods-8
```
The latest file will be located and used by default, but if a specific version is desired you can use one of the following options. With any of these options **do not select a server file** -- they lack the required manifest and defeat the ability to consistently automate startup.
### Pinning modpack and mod loader versions
The latest modpack file and its associated mod loader will be located and installed by default on startup (including automatic upgrading of both on subsequent startups, if a later version is found on CurseForge). If a specific version is desired instead, you can use one of the following options. With any of these options **do not select a server file** -- they lack the required manifest and defeat the ability to consistently automate startup.
- Use `CF_PAGE_URL`, but include the full URL to a specific file
- Set `CF_FILE_ID` to the numerical file ID
@@ -82,13 +117,15 @@ The following examples all refer to version 1.0.7 of ATM8:
CF_FILENAME_MATCHER: 1.0.7
```
Pinning modpack version also pins the mod loader (to the version specified by the modpack). Mod loader version cannot be pinned independently of the modpack.
## Manual Downloads
For mod, modpacks, and world files that are not allowed for automated download, the container path `/downloads` can be attached and matching files will be retrieved from there. The subdirectories `mods`, `modpacks`, and `worlds` will also be checked accordingly. To change the source location of downloaded files, set `CF_DOWNLOADS_REPO` to an existing container path. To disable this feature, set `CF_DOWNLOADS_REPO` to an empty string.
!!! note "Mods need download report"
!!! warning "Download using a browser"
A file called `MODS_NEED_DOWNLOAD.txt` will be created in the `/data` directory that lists the mods that need to be manually downloaded and where to get them.
It's important to use a browser to download the files listed for manual download. If your Docker host is running without a graphical interface, then you can use `scp` or similar to transfer the files to it.
!!! example
@@ -97,7 +134,7 @@ For mod, modpacks, and world files that are not allowed for automated download,
1. Create a directory next to the `docker-compose.yml` file. The name doesn't matter, but "downloads" is the common convention
2. From the "Mods Need Download" output, visit the download page of each, click on the file download and save that file into the directory created in the previous step
3. Add a host directory mount to the volumes section where the container path **must be** `/downloads`. The snippet below shows how that will look
4. Re-run `docker composwe up -d` to apply the changes
4. Re-run `docker compose up -d` to apply the changes
```yaml
volumes:
@@ -106,7 +143,57 @@ For mod, modpacks, and world files that are not allowed for automated download,
## Unpublished Modpacks
If you wish to use a unpublished modpack zip, set the container path to the file in `CF_MODPACK_ZIP`. Similarly, the container path to a modpack manifest JSON can be passed to `CF_MODPACK_MANIFEST`. In either case, **the modpack slug or page URL must still be provided**.
If you wish to use an unpublished modpack zip, set the container path to the file in `CF_MODPACK_ZIP`. Similarly, the container path to a modpack manifest JSON can be passed to `CF_MODPACK_MANIFEST`. In either case, **the modpack slug or page URL must still be provided**.
!!! example
```yaml
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
MODPACK_PLATFORM: AUTO_CURSEFORGE
# allocate from https://console.curseforge.com/ and set in .env file
CF_API_KEY: ${CF_API_KEY}
CF_MODPACK_MANIFEST: /manifests/manifest.json
CF_SLUG: "custom"
volumes:
- ./manifests:/manifests:ro
```
where an exported manifest file should look like:
```json
{
"minecraft": {
"version": "1.20.4",
"modLoaders": [
{
"id": "fabric-0.15.3",
"primary": true
}
]
},
"manifestType": "minecraftModpack",
"manifestVersion": 1,
"name": "Custom",
"author": "",
"files": [
{
"projectID": 351725,
"fileID": 4973035,
"required": true
},
{
"projectID": 306612,
"fileID": 5010374,
"required": true
}
],
"overrides": "overrides"
}
```
## Exclude client mods
@@ -114,6 +201,11 @@ Quite often there are mods that need to be excluded, such as ones that did not p
Mods can be excluded by passing a comma or space delimited list of **project** slugs or IDs via `CF_EXCLUDE_MODS`. Similarly, there are some mods that are incorrectly tagged as client only. For those, pass the **project** slugs or IDs via `CF_FORCE_INCLUDE_MODS`. These lists will be combined with the content of the exclude/include file, if given.
!!! note
`CF_FORCE_INCLUDE_MODS` will not download additional mods.
For additional mods, refer to [the `CURSEFORGE_FILES` variable](../../mods-and-plugins/curseforge-files.md).
A mod's project ID can be obtained from the right hand side of the project page:
![cf-project-id](../../img/cf-project-id.png)
@@ -157,11 +249,36 @@ Ant-style paths can include the following globbing/wildcard symbols:
## World/Level Data
Some modpacks come with world/save data via a worlds file and/or the overrides provided with the modpack. Either approach can be selected to set the `LEVEL` to the resulting saves directory by setting `CF_SET_LEVEL_FROM` to either:
- `WORLD_FILE`
- `OVERRIDES`
## Ignore missing files
Some mods use temporary files from the modpack and delete them when finished. Others will patch themselves and "disable" the original mod jar, such as gregtech. In order to avoid the installer from detecting the absent file(s) and re-installing, those files can be ignored by passing a comma or newline delimited list to `CF_IGNORE_MISSING_FILES`.
!!! hint
A warning log will indicate what files were found to be missing from the previous installation run, such as
```
Re-installing due to missing files from modpack: [mods/gregtech-2.6.2-beta.jar]
```
!!! example
In a Compose file
```yaml
environment:
CF_IGNORE_MISSING_FILES: |
mods/gregtech-2.6.2-beta.jar
```
## Extra options
Other configuration available:
- `CF_PARALLEL_DOWNLOADS` (default is 4): specify how many parallel mod downloads to perform
- `CF_OVERRIDES_SKIP_EXISTING` (default is false): if set, files in the overrides that already exist in the data directory are skipped. **NOTE** world data is always skipped, if present.
- `CF_FORCE_REINSTALL_MODLOADER` (default is false): this can be set to `true` to force the modpack's declared modloader, such as Forge, to be reinstalled. This is useful if some of the modloader's files become corrupted.

View File

@@ -1,6 +1,10 @@
# Manual CurseForge server packs
Enable this server mode by setting `MOD_PLATFORM` or `TYPE` to "CURSEFORGE" along with the following specific variables.
!!! warning "Deprecated"
This mod platform type is deprecated. Please use [AUTO_CURSEFORGE](auto-curseforge.md) for new deployments.
Enable this server mode by setting `MODPACK_PLATFORM`, `MOD_PLATFORM` or `TYPE` to "CURSEFORGE" along with the following specific variables.
You need to specify a modpack to run, using the `CF_SERVER_MOD` environment
variable. A CurseForge server modpack is available together with its respective

View File

@@ -3,7 +3,7 @@
!!! note
Requires one of the Ubuntu with Hotspot images listed in [the Java versions section](../../versions/java.md).
[Feed the Beast application](https://www.feed-the-beast.com/) modpacks are supported by setting `MOD_PLATFORM` or `TYPE` to "FTBA"
[Feed the Beast application](https://www.feed-the-beast.com/) modpacks are supported by setting `MODPACK_PLATFORM`, `MOD_PLATFORM` or `TYPE` to "FTBA"
!!! note
The "A" at the end of "FTBA" is important. The value "FTB" used to be an alias for "CURSEFORGE".

View File

@@ -1,6 +1,6 @@
# Modrinth Modpacks
[Modrinth Modpacks](https://modrinth.com/modpacks) can automatically be installed along with the required mod loader (Forge or Fabric) by setting `MOD_PLATFORM` or `TYPE` to "MODRINTH". Upgrading (and downgrading) takes care of cleaning up old files and upgrading (and downgrading) the mod loader.
[Modrinth Modpacks](https://modrinth.com/modpacks) can automatically be installed along with the required mod loader (Forge or Fabric) by setting `MODPACK_PLATFORM`, `MOD_PLATFORM` or `TYPE` to "MODRINTH". Upgrading (and downgrading) takes care of cleaning up old files and upgrading (and downgrading) the mod loader.
## Modpack project
@@ -9,11 +9,17 @@ The desired modpack project is specified with the `MODRINTH_MODPACK` environment
- The project "slug", which is located in the URL shown here:
![](../../img/modrinth-project-slug.drawio.png)
- The project ID, which is located in the bottom of the left panel, shown here
![](../../img/modrinth-project-id.drawio.png)
- The project page URL, such as <https://modrinth.com/modpack/cobblemon-fabric>. As described below, this can further be the page URL of a modpack's version page.
- A custom URL of a hosted [mrpack file](https://support.modrinth.com/en/articles/8802351-modrinth-modpack-format-mrpack)
- The container path to a local [mrpack file](https://support.modrinth.com/en/articles/8802351-modrinth-modpack-format-mrpack)
## Modpack version
The automatic modpack version resolving can be narrowed in a few ways:
@@ -53,4 +59,51 @@ To exclude client mods that are incorrectly declared by the modpack as server-co
notenoughanimations
lambdynamiclights
euphoriapatcher
```
```
## Force-include files
To force include client mods, set `MODRINTH_FORCE_INCLUDE_FILES` to a comma or newline delimited list of partial file names. You may need to set `MODRINTH_FORCE_SYNCHRONIZE` to "true" while iterating on a compatible set of mods to use.
!!! example
In a Compose file:
```yaml
MODRINTH_FORCE_INCLUDE_FILES: |
yet-another-config-lib
```
## Default exclude/includes
The image comes with a default set of exclude/includes, maintained [in the repo files area](https://github.com/itzg/docker-minecraft-server/blob/master/files/modrinth-exclude-include.json) and uses the same [JSON schema](https://github.com/itzg/mc-image-helper?tab=readme-ov-file#excludeinclude-file-schema) as Auto CurseForge. Those defaults can be disabled by setting the env var `MODRINTH_DEFAULT_EXCLUDE_INCLUDES` to an empty string.
## Excluding Overrides Files
Modrinth mrpack/zip files may include an `overrides` subdirectory that contains config files, world data, and extra mod files. All of those files will be extracted into the `/data` path of the container. If any of those files, such as incompatible mods, need to be excluded from extraction, then the `MODRINTH_OVERRIDES_EXCLUSIONS` variable can be set with a comma or newline delimited list of ant-style paths ([see below](#ant-style-paths)) to exclude, relative to the overrides (or `/data`) directory.
### Ant-style paths
Ant-style paths can include the following globbing/wildcard symbols:
| Symbol | Behavior |
|--------|---------------------------------------------------------|
| `*` | Matches zero, one, or many characters except a slash |
| `**` | Matches zero, one, or many characters including slashes |
| `?` | Matches one character |
!!! example
The following compose `environment` entries show how to exclude Iris and Sodium mods from the overrides
```yaml
MODRINTH_OVERRIDES_EXCLUSIONS: mods/NekosEnchantedBooks-*.jar,mods/citresewn-*.jar
```
or using newline delimiter, which improves maintainability
```yaml
MODRINTH_OVERRIDES_EXCLUSIONS: |
mods/NekosEnchantedBooks-*.jar
mods/citresewn-*.jar
```

View File

@@ -1,5 +1,9 @@
# Bukkit/Spigot
!!! failure "GetBukkit site no longer supports automated downloads"
The downloads provider <https://getbukkit.org> seems to no longer support automated downloads. As such, it is highly recommended to switch to [Paper](paper.md) instead since it is actively maintained and fully compatible with Bukkit/Spigot plugins.
Run a Bukkit/Spigot server type by setting the environment variable `TYPE` to "BUKKIT" or "SPIGOT".
!!! example
@@ -8,7 +12,7 @@ Run a Bukkit/Spigot server type by setting the environment variable `TYPE` to "B
```
docker run ... -e TYPE=SPIGOT ...
```
Compose
```yaml
environment:
@@ -46,3 +50,16 @@ Canyon is on a temporary hiatus, so by default the final build from GitHub will
-e CANYON_BUILD=6
-e CANYON_BUILD=26
### Poseidon
[Poseidon](https://github.com/retromcorg/Project-Poseidon) is a fork of CraftBukkit for Minecraft Beta 1.7.3. It includes multiple enhancements whilst also retaining compatibility with old Bukkit plugins.
-e VERSION=b1.7.3 -e TYPE=CANYON
!!! important
Only `VERSION=b1.7.3` is supported. Since that version pre-dates the health check mechanism used by this image, that will need to be disabled by setting `DISABLE_HEALTHCHECK=true`.
### Uberbukkit
[Uberbukkit](https://github.com/Moresteck/uberbukkit) is a fork of CraftBukkit for Minecraft Beta with Multi version support, supports b1.0 - b1.7.3

View File

@@ -1,27 +1,67 @@
Enable [Fabric server](https://fabricmc.net/) mode by adding a `-e TYPE=FABRIC` to your command-line.
A [Fabric server](https://fabricmc.net/) can be automatically downloaded, upgraded, and run by setting the environment variable TYPE to "FABRIC"
```
docker run -d -v /path/on/host:/data \
-e TYPE=FABRIC \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
```
!!! example
Using `docker run` command line
```
docker run -d -e EULA=TRUE -e TYPE=FABRIC -p 25565:25565 itzg/minecraft-server
```
In a compose file service:
```yaml
environment:
EULA: TRUE
TYPE: FABRIC
```
By default, the container will install the latest [fabric server launcher](https://fabricmc.net/use/server/), using the latest [fabric-loader](https://fabricmc.net/wiki/documentation:fabric_loader) against the minecraft version you have defined with `VERSION` (defaulting to the latest vanilla release of the game).
A specific loader or launcher version other than the latest can be requested using `FABRIC_LOADER_VERSION` and `FABRIC_LAUNCHER_VERSION` respectively, such as:
```
docker run -d -v /path/on/host:/data ... \
-e TYPE=FABRIC \
-e FABRIC_LAUNCHER_VERSION=0.10.2 \
-e FABRIC_LOADER_VERSION=0.13.1
```
!!! example "Using launcher and loader versions"
With docker run
```
docker run -d ... \
-e TYPE=FABRIC \
-e FABRIC_LAUNCHER_VERSION=0.10.2 \
-e FABRIC_LOADER_VERSION=0.13.1
```
In a compose file service:
```yaml
environment:
EULA: TRUE
TYPE: FABRIC
FABRIC_LAUNCHER_VERSION: 0.10.2
FABRIC_LOADER_VERSION: 0.13.1
```
!!! note
If you wish to use an alternative launcher you can:
See the [Working with mods and plugins](../../mods-and-plugins/index.md) section to set up Fabric mods and configuration.
- Provide the path to a custom launcher jar available to the container with `FABRIC_LAUNCHER`, relative to `/data` (such as `-e FABRIC_LAUNCHER=fabric-server-custom.jar`)
- Provide the URL to a custom launcher jar with `FABRIC_LAUNCHER_URL` (such as `-e FABRIC_LAUNCHER_URL=http://HOST/fabric-server-custom.jar`)
## Fabric API
See the [Working with mods and plugins](../../mods-and-plugins/index.md) section to set up Fabric mods and configuration.
As [mentioned on the Fabric download page](https://fabricmc.net/use/installer/), most mods will require the Fabric API mod to be installed. That can be easily done by utilizing [the Modrinth downloads feature](../../mods-and-plugins/modrinth.md), such as adding this to the `environment` of a compose file service:
```yaml
TYPE: FABRIC
MODRINTH_PROJECTS: |
fabric-api
```
## Alternate launcher
If you wish to use an alternative launcher you can:
- Provide the path to a custom launcher jar available to the container with `FABRIC_LAUNCHER`, relative to `/data` (such as `-e FABRIC_LAUNCHER=fabric-server-custom.jar`)
- Provide the URL to a custom launcher jar with `FABRIC_LAUNCHER_URL` (such as `-e FABRIC_LAUNCHER_URL=http://HOST/fabric-server-custom.jar`)
## Force re-install
If the Fabric launcher jar becomes corrupted you can temporarily set FABRIC_FORCE_REINSTALL to "true" to have it re-installed on next startup.

View File

@@ -1,5 +1,13 @@
A [Forge server](http://www.minecraftforge.net/) can be automatically downloaded, upgraded, and run by setting the environment variable `TYPE` to "FORGE".
!!! note "A note from the installer"
> Please do not automate the download and installation of Forge.
Our efforts are supported by ads from the download page.
If you MUST automate this, please consider supporting the project through <https://www.patreon.com/LexManos/>
Since my project also relies on donations, please pass it along and consider contributing to the Patreon above.
!!! example
```
@@ -14,6 +22,7 @@ A [Forge server](http://www.minecraftforge.net/) can be automatically downloaded
The overall version is specified by `VERSION`, [as described in the section above](../../versions/minecraft.md) and provides the same benefits of upgrading as new versions are released. By default, the recommended version of Forge for that Minecraft version will be selected. The latest version can be selected instead by setting the environment variable `FORGE_VERSION` to "latest". You can also choose a specific Forge version by setting `FORGE_VERSION` with that version, such as "14.23.5.2854".
!!! example
```
@@ -36,11 +45,16 @@ In both of the cases above, there is no need for the `VERSION` or `FORGE_VERSION
If an error occurred while installing Forge, it might be possible to resolve by temporarily setting `FORGE_FORCE_REINSTALL` to "true". Be sure to remove that variable after successfully starting the server.
URLs configurable via environment variables:
- `FORGE_PROMOTIONS_URL`: default is https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
- `FORGE_MAVEN_REPO_URL`: default is https://maven.minecraftforge.net
## Alternatives
### NeoForge
Support for [NeoForge](https://neoforged.net/) is also provided. A NeoForge server can be automatically managed by setting `TYPE` to "NEOFORGE". `VERSION` specifies the Minecraft version and `NEOFORGE_VERSION` can be set to select a specific sub-version. By default, the latest NeoForge version available for the requested Minecraft version will be used.
Support for [NeoForge](https://neoforged.net/) is also provided. A NeoForge server can be automatically managed by setting `TYPE` to "NEOFORGE". `VERSION` specifies the Minecraft version and `NEOFORGE_VERSION` can be set to select a specific version, "latest", or "beta". By default, the latest, non-beta NeoForge version available for the requested Minecraft version will be used.
!!! example
@@ -52,6 +66,25 @@ Support for [NeoForge](https://neoforged.net/) is also provided. A NeoForge serv
```yaml
environment:
TYPE: NEOFORGE
VERSION: "1.20.1"
NEOFORGE_VERSION: "47.1.79"
VERSION: "1.20.4"
NEOFORGE_VERSION: "beta"
```
### Cleanroom
[Cleanroom](https://github.com/CleanroomMC/Cleanroom) isn't fully automated, but can be utilized by...
1. choose the desired release at https://github.com/CleanroomMC/Cleanroom/releases
2. grab the link to the `*-installer.jar` file in that release
3. with `TYPE` set to "FORGE", set `FORGE_INSTALLER_URL` to the installer jar's link
!!! example
In docker compose `environment`
```yaml
TYPE: FORGE
FORGE_INSTALLER_URL: https://github.com/CleanroomMC/Cleanroom/releases/download/0.2.4-alpha/cleanroom-0.2.4-alpha-installer.jar
```
[Full example](https://github.com/itzg/docker-minecraft-server/tree/master/examples/cleanroom)

View File

@@ -8,8 +8,32 @@ A [Magma](https://magmafoundation.org/) server, which is a combination of Forge
!!! note
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.16.5", etc.
The Magma project has been terminated ([original link died](https://git.magmafoundation.org/magmafoundation/magma-1-20-x/-/commit/4e7abe37403c47d09b74b77bcfc26a19b18f5891), [alternate statement on their discord](https://discord.com/channels/612695539729039411/647287352833605662/1174412642962649198) ). Please use Magma Maintained for 1.12.2, 1.18.2 and 1.19.3, or Ketting for 1.20.1+.
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.16.5", etc.
### Magma Maintained
A [Magma Maintained](https://github.com/magmamaintained/) server, which is a alternative project of Magma, can be used with
-e TYPE=MAGMA_MAINTAINED
!!! note
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.18.2", "1.19.3", or "1.20.1".
In addition, `FORGE_VERSION` and `MAGMA_MAINTAINED_TAG` must be specified. You can find the supported `FORGE_VERSION` and `MAGMA_MAINTAINED_TAG` in a releases page for each repositories.
### Ketting
A [Ketting](https://github.com/kettingpowered/Ketting-1-20-x) server, which is an alternative project of Magma 1.20.1+, can be used with
-e TYPE=KETTING
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.20.1" or later.
`FORGE_VERSION` and `KETTING_VERSION` may be specified; however, they will be defaulted by the [Ketting launcher](https://github.com/kettingpowered/kettinglauncher) otherwise.
Available Ketting Versions may be found at [https://reposilite.c0d3m4513r.com/#/Ketting-Server-Releases/org/kettingpowered/server/forge](https://reposilite.c0d3m4513r.com/#/Ketting-Server-Releases/org/kettingpowered/server/forge).
The Version structure is `MinecraftVersion-ForgeVersion-KettingVersion` (e.g. `1.20.1-47.2.20-0.1.4` is for Minecraft `1.20.1`, Forge `47.2.20` and Ketting `0.1.4`).
### Mohist
@@ -19,7 +43,35 @@ A [Mohist](https://github.com/MohistMC/Mohist) server can be used with
!!! note
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2"
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2"
By default the latest build will be used; however, a specific build number can be selected by setting `MOHIST_BUILD`, such as
-e VERSION=1.16.5 -e MOHIST_BUILD=374
### Youer
A [Youer](https://github.com/MohistMC/Youer) server can be used with
-e TYPE=YOUER
!!! note
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2"
By default the latest build will be used; however, a specific build number can be selected by setting `MOHIST_BUILD`, such as
-e VERSION=1.16.5 -e MOHIST_BUILD=374
### Banner
A [Banner](https://github.com/MohistMC/Banner) server can be used with
-e TYPE=BANNER
!!! note
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2"
By default the latest build will be used; however, a specific build number can be selected by setting `MOHIST_BUILD`, such as
@@ -32,3 +84,10 @@ A [Catserver](http://catserver.moe/) type server can be used with
-e TYPE=CATSERVER
> **NOTE** Catserver only provides a single release stream, so `VERSION` is ignored
### Arclight
A [Arclight](https://arclight.izzel.io/) type server can be used with
-e TYPE=ARCLIGHT
-e ARCLIGHT_TYPE=NEOFORGE,FORGE,FABRIC

View File

@@ -39,6 +39,14 @@ Configuration options with defaults:
Instead of using format codes in the MOTD, Limbo requires [JSON chat content](https://minecraft.wiki/w/Raw_JSON_text_format#Java_Edition). If a plain string is provided, which is the default, then it gets converted into the required JSON structure.
## NanoLimbo
A [NanoLimbo](https://github.com/BoomEaro/NanoLimbo) server can be run by setting `TYPE` to `NANOLIMBO`.
Note: it is a fork of the original [NanoLimbo](https://github.com/Nan1t/NanoLimbo) made by Nan1t
An alternate Limbo server
## Crucible
A [Crucible](https://github.com/CrucibleMC/Crucible) server can be run by setting `TYPE` to `CRUCIBLE`.
@@ -65,4 +73,4 @@ Alternatively, the final `-jar` invocation can be replaced by setting `CUSTOM_JA
When using `docker run` make sure to quote the entire value since it has spaces in it, such as
-e CUSTOM_JAR_EXEC="-cp worldedit.jar:Carpet-Server.jar net.minecraft.server.MinecraftServer"
-e CUSTOM_JAR_EXEC="-cp worldedit.jar:Carpet-Server.jar net.minecraft.server.MinecraftServer"

View File

@@ -1,10 +1,50 @@
Enable Paper server mode by adding a `-e TYPE=PAPER` to your command-line.
A [PaperMC server](https://papermc.io/) can be automatically downloaded, upgraded, and run by setting the environment variable TYPE to "PAPER".
By default, the container will run the latest build of [Paper server](https://papermc.io/downloads) but you can also choose to run a specific build with `-e PAPERBUILD=205`.
By default, the container will find and download the latest build for the `VERSION` chosen. If `VERSION` is not specified, then the latest Minecraft version released by PaperMC is selected. Along with a specific `VERSION`, a specific Paper build can be selected by setting the environment variable `PAPER_BUILD`.
docker run -d -v /path/on/host:/data \
-e TYPE=PAPER \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
To allow for the selection of experimental builds, set `PAPER_CHANNEL` to "experimental", otherwise only release/default channel builds are selected.
!!! example
Using `docker run` command line
```
docker run ... -e TYPE=PAPER ...
docker run ... -e TYPE=PAPER -e VERSION=1.20.6 ...
docker run ... -e TYPE=PAPER -e VERSION=1.20.6 -e PAPER_BUILD=140 ...
docker run ... -e TYPE=PAPER -e PAPER_CHANNEL=experimental ...
```
Using a compose file:
```yaml
environment:
TYPE: PAPER
```
```yaml
environment:
TYPE: PAPER
VERSION: 1.20.6
PAPER_BUILD: 140
```
```yaml
environment:
TYPE: PAPER
PAPER_CHANNEL: experimental
```
!!! tip
If you see the following error, it likely means you need to set the env var `PAPER_CHANNEL` to "experimental"
```
No build found for version 1.21 with channel 'default'
```
If you are hosting your own copy of Paper you can override the download URL with `PAPER_DOWNLOAD_URL=<url>`.
@@ -45,15 +85,38 @@ Extra variables:
- `USE_FLARE_FLAGS=false` : set to true to add appropriate flags for the built-in [Flare](https://blog.airplane.gg/flare) profiler
- `PURPUR_DOWNLOAD_URL=<url>` : set URL to download Purpur from custom URL.
### Leaf
A [Leaf server](https://www.leafmc.one/) is a Paper fork focused on performance improvements and low-level optimizations for smoother gameplay.
To use a Leaf server, set the environment variable `TYPE` to `"LEAF"`.
-e TYPE=LEAF
!!! note
The `VERSION` variable is used to select the Minecraft version to run.
To specify a particular Leaf build, use `LEAF_BUILD`.
By default the latest build will be used; however, a specific build number can be selected by setting `LEAF_BUILD`, such as
-e VERSION=1.21.4 -e LEAF_BUILD=441
### Folia
Enable Folia server mode by adding a `-e TYPE=FOLIA` to your command-line.
A [Folia server](https://papermc.io/software/folia) can be used by setting the environment variable `TYPE` to "FOLIA".
By default, the container will run the latest build of [Folia server](https://papermc.io/downloads), but you can also choose to run a specific build with `-e FOLIABUILD=26`.
By default, the container will run the latest experimental build of [Folia server](https://papermc.io/downloads), but you can also choose to run a specific build with `-e FOLIABUILD=26`. The release channel can be changed with the variable `FOLIA_CHANNEL`; however, only experimental builds are available at this time.
!!! example
Using `docker run`
```
docker run -d -v /path/on/host:/data \
-e TYPE=FOLIA \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
```
If you are hosting your own copy of Folia you can override the download URL with `FOLIA_DOWNLOAD_URL=<url>`.
@@ -63,3 +126,7 @@ If you have attached a host directory to the `/data` volume, then you can instal
!!! note
The Folia type inherits from the Paper type. Paper's variables will override the Folia ones.
## Extra config
- `SKIP_DOWNLOAD_DEFAULTS`: when set to "true" startup will entirely skip checking for default Paper/Bukkit/Spigot config files to download

View File

@@ -1,5 +1,11 @@
### **OS OPTIONS**
!!! warning
The variables listed on this page are manually documented and may be out-of-date or inaccurate.
All other documentation pages are actively maintained, so please use the search box above to find the desired topic.
### General options
<table>
<thead>
<tr>
@@ -42,7 +48,7 @@
</tr>
<tr>
<td><code>TZ</code></td>
<td>You can configure the timezone to match yours by setting the TZ environment variable.
<td>You can configure the timezone to match yours by setting the TZ environment variable.
alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
@@ -75,6 +81,18 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
<td><code>false</code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>USE_MEOWICE_FLAGS</code></td>
<td><a href="https://github.com/MeowIce/meowice-flags?tab=readme-ov-file#why-would-i-have-to-switch-">MeowIce has created an updated set of JVM flags</a> based on Aikar's flags but with support for optimizations for Java 17 and above</td>
<td><code>false</code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>USE_MEOWICE_GRAALVM_FLAGS</code></td>
<td>enables MeowIce's flags for GraalVM if USE_MEOWICE_GRAALVM_FLAGS is TRUE</td>
<td><code>true</code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>JVM_OPTS</code></td>
<td>General JVM options can be passed to the Minecraft Server invocation by passing a <code>JVM_OPTS</code> environment variable. The JVM requires -XX options to precede -X options, so those can be declared in <code>JVM_XX_OPTS</code>. Both variables are space-delimited, raw JVM arguments</td>
@@ -108,7 +126,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tbody>
</table>
### **SERVER**
### Server
<table>
<thead>
@@ -448,7 +466,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tbody>
</table>
### **CUSTOM RESOURCE PACK**
### Custom resource pack
<table>
<thead>
@@ -481,7 +499,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tbody>
</table>
### **WHITELIST**
### Whitelist
<table>
<thead>
@@ -520,7 +538,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tbody>
</table>
### **RCON**
### RCON
<table>
<thead>
@@ -534,7 +552,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
<tbody>
<tr>
<td><code>ENABLE_RCON</code></td>
<td>Should RCON be enabled</td>
<td>Enable/disable RCON support; however, be aware that disabling RCON will remove and limit some features, such as interactive and color console support.</td>
<td><code>true</code></td>
<td>⬜️</td>
</tr>
@@ -552,44 +570,44 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tr>
<tr>
<td><code>BROADCAST_RCON_TO_OPS</code></td>
<td>Should RCON be enabled</td>
<td>Sets broadcast-rcon-to-ops server property</td>
<td><code>false</code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_STARTUP</code></td>
<td>RCON commands can be configured to execute when the server starts, a client connects, or a client disconnects</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_ON_CONNECT</code></td>
<td>RCON commands can be configured to execute when the server starts, a client connects, or a client disconnects</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_ON_DISCONNECT</code></td>
<td>RCON commands can be configured to execute when the server starts, a client connects, or a client disconnects</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_LAST_DISCONNECT</code></td>
<td>RCON commands can be configured to execute when the server starts, a client connects, or a client disconnects</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_STARTUP</code></td>
<td>RCON commands can be configured to execute when the server starts, a client connects, or a client disconnects</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<td><code>RCON_CMDS_STARTUP</code></td>
<td>RCON commands to execute when the server starts.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_ON_CONNECT</code></td>
<td>RCON commands to execute whenever a client connects to the server.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_FIRST_CONNECT</code></td>
<td>RCON commands to execute on the first client connection to the server.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_ON_DISCONNECT</code></td>
<td>RCON commands to execute whenever a client disconnects from the server.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_CMDS_LAST_DISCONNECT</code></td>
<td>RCON commands to execute when the last client disconnects from the server.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
</tbody>
</table>
### **AUTOPAUSE**
### Auto-Pause
!!! note
@@ -652,7 +670,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
### **AUTOSTOP**
### Auto-Stop
!!! note
@@ -702,11 +720,11 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</table>
### **CURSEFORGE**
### CurseForge
!!! note
!!! tip
A CurseForge API key is required to use a CurseForge type server. Go to their [developer console](https://console.curseforge.com/), generate an API key, and set the environment variable CF_API_KEY
Refer to the [main documentation page](types-and-platforms/mod-platforms/auto-curseforge.md) for more details and up-to-date information.
<table>
<thead>
@@ -724,6 +742,12 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
<td><code></code></td>
<td>✅</td>
</tr>
<tr>
<td><code>CF_API_KEY_FILE</code></td>
<td>A path to a file inside of container that contains <strong>YOUR</strong> CurseForge (Eternal) API Key.</td>
<td><code></code></td>
<td>✅</td>
</tr>
<tr>
<td><code>CF_PAGE_URL</code></td>
<td>Pass a page URL to the modpack or a specific file</td>

View File

@@ -1,58 +1,145 @@
## Running Minecraft server on different Java version
## Image tags
!!! note
Image references can either omit the tag, which implies the tag `latest`, such as
For Forge versions less than 1.18, you _must_ use the `java8-multiarch` (or other java8) image tag.
itzg/minecraft-server
In general, if you see the following line in a server startup failure, then it means you need to be using Java 8 instead of the latest image Java version:
or explicitly include the tag, such as
```
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader
cannot be cast to class java.net.URLClassLoader
```
itzg/minecraft-server:<tag>
When using the image `itzg/minecraft-server` without a tag, the `latest` image tag is implied from the table below. To use a different version of Java, please use an alternate tag to run your Minecraft server container. The `stable` tag is similar to `latest`; however, it tracks [the most recent repository release/tag](https://github.com/itzg/docker-minecraft-server/releases/latest).
where `<tag>` refers to the first column of this table:
| Tag name | Java version | Linux | JVM Type | Architecture |
|------------------|--------------|--------|----------------|-------------------|
| latest | 17 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| stable | 17 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java8 | 8 | Alpine | Hotspot | amd64 |
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 |
| java8-multiarch | 8 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 |
| java11 | 11 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java11-jdk | 11 | Ubuntu | Hotspot+JDK | amd64,arm64,armv7 |
| java11-openj9 | 11 | Debian | OpenJ9 | amd64 |
| java17 | 17 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java17-jdk | 17 | Ubuntu | Hotspot+JDK | amd64,arm64,armv7 |
| java17-openj9 | 17 | Debian | OpenJ9 | amd64 |
| java17-graalvm | 17 | Oracle | Oracle GraalVM | amd64,arm64 |
| java17-alpine | 17 | Alpine | Hotspot | amd64 |
| java21-alpine | 21 | Alpine | Hotspot | amd64 |
| java21 | 21 | Ubuntu | Hotspot | amd64,arm64 |
| java21-graalvm | 21 | Oracle | Oracle GraalVM | amd64,arm64 |
| Tag | Java version | Linux | JVM Type | Architecture | Note |
|----------------|--------------|--------|--------------------|---------------------|------|
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| java24 | 24 | Ubuntu | Hotspot | amd64, arm64 | (2) |
| java24-graalvm | 24 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (2) |
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 | |
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 | |
| java21-graalvm | 21 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | |
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) | |
| java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (4) |
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
For example, to use Java version 8 on any supported architecture:
Notes
docker run --name mc itzg/minecraft-server:java8-multiarch
1. Why no arm64 for Java 17 Alpine? That is because the base images, such as [elipse-temurin](https://hub.docker.com/_/eclipse-temurin/tags?page=&page_size=&ordering=&name=17-jre-alpine) do not provide support for that. Use the Ubuntu based images instead.
2. Short-term variant, subject to deprecation upon next version introduction
3. Based on the [Oracle GraalMV images](https://blogs.oracle.com/java/post/new-oracle-graalvm-container-images), which as of JDK 17, are now under the [GraalVM Free License](https://blogs.oracle.com/java/post/graalvm-free-license) incorporating what used to be known as the GraalVM Enterprise.
4. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
!!! note
!!! example "Example using java8"
Keep in mind that some versions of Minecraft server, such as Forge before 1.17, can't work on the newest versions of Java. Instead, one of the Java 8 images should be used. Also, FORGE doesn't support openj9 JVM implementation.
With docker run command-line
Some versions of vanilla Minecraft, such as 1.10, also do not run correctly with Java 17. If in doubt, use `java8-multiarch` for any version less than 1.17.
```
docker run -it -e EULA=true itzg/minecraft-server:java8
```
or in a compose file
```yaml
services:
mc:
image: itzg/minecraft-server:java8
```
### Deprecated Image Tags
!!! note "Latest"
The "latest" tag shifts to include not only the latest features and bug fixes, but also the latest Java version that Mojang requires for the latest Minecraft version.
!!! tip "Class File Version"
If the Minecraft startup is logging an error about a "class file version", then refer [to this table](https://javaalmanac.io/bytecode/versions/) to identify the JDK/Java version corresponding to each class file version.
### Release versions
Since the tags referenced above will shift as the newest image build brings in new features and bug fixes, released variants of those can also be used to pin a specific build of the image.
The syntax of released image tags is:
itzg/minecraft-server:<release>-<java tag>
where `java tag` still refers to the first column of the table above and `release` refers to [one of the image releases](https://github.com/itzg/docker-minecraft-server/releases).
!!! example
For example, the 2024.4.0 release of the Java 17 image would be
```
itzg/minecraft-server:2024.4.0-java17
```
### Stable image tag
The `stable` image tag combines the benefits of `latest` and [release versions](#release-versions) since it shifts to refer to the most recently released version. There is also a per-variant stable tag, formatted as `stable-{variant}`.
## Version compatibilities
[This section in the Minecraft wiki](https://minecraft.wiki/w/Tutorials/Update_Java#Why_update?) lists out versions of **vanilla** Minecraft versions and the corresponding Java version that is required.
### Class file version 65.0
If encountering a startup failure similar to the following examples, then ensure that the latest image has been re-pulled to use a Java 21. Alternatively, set the image tag specifically to `itzg/minecraft-server:java21`.
> Exception in thread "ServerMain" java.lang.UnsupportedClassVersionError: org/bukkit/craftbukkit/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
or
> Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
### Forge versions
Forge and its mods sometimes utilize non-public APIs of the JVM and as such are suspceptible to becoming broken with newer Java versions.
#### Java 21
Some mods even up to Minecraft 1.21 require Java 17 and will not run on the latest Java version. If you see an error like the following then be sure to explicitly use a Java 17 tagged image:
```
Caused by: org.spongepowered.asm.mixin.throwables.ClassMetadataNotFoundException: java.util.List
at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transformMethod(MixinPreProcessorStandard.java:754)
```
#### Java 8
For Forge versions less than 1.18, you _must_ use the `java8-multiarch` (or other java8) image tag.
In general, if you see the following line in a server startup failure, then it means you need to be using Java 8 instead of the latest image Java version:
```
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader
cannot be cast to class java.net.URLClassLoader
```
Forge also doesn't support openj9 JVM implementation.
## Deprecated Image Tags
The following image tags have been deprecated and are no longer receiving updates:
- java19
- adopt13
- adopt14
- adopt15
- openj9-nightly
- multiarch-latest
- java16/java16-openj9
- java16-openj9
- java17-graalvm-ce
- java17-openj9
- java19
- java20-graalvm, java20, java20-alpine
- java23-*
- java8-multiarch is still built and pushed, but please move to java8 instead
- java8-alpine, java8-jdk, java8-openj9, java8-graalvm-ce
## JSON Listing
Information about the image tags is available programmatically at <https://raw.githubusercontent.com/itzg/docker-minecraft-server/refs/heads/master/images.json>

3
examples/.gitignore vendored
View File

@@ -1,3 +1,4 @@
data/
modpacks/
.env
.env
downloads/

View File

@@ -0,0 +1,25 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-of-fabric-7
# CF_FILENAME_MATCHER: 1.2.2
CF_OVERRIDES_EXCLUSIONS: |
mods/iris*.jar
mods/sodium*.jar
MEMORY: 4G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,28 @@
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: true
MOD_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: all-the-mods-10
# Optional: select a specific version/file
# CF_FILENAME_MATCHER: "1.17"
MEMORY: 4G
CF_OVERRIDES_EXCLUSIONS: |
shaderpacks/**
volumes:
# Use managed volume by default, but can change to a relative path like
# ./data:/data
# to use a host directory
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,21 +1,21 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server
image: itzg/minecraft-server:java17
ports:
- "25565:25565"
environment:
EULA: "true"
MOD_PLATFORM: AUTO_CURSEFORGE
# allocate from https://console.curseforge.com/ and set in .env file
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-8
CF_FILENAME_MATCHER: "1.0.6"
# CF_FILENAME_MATCHER: "1.1.0"
MEMORY: 4G
volumes:
- mc-data:/data
- ../downloads:/downloads
# Since Docker's default volume driver creates volumes owned by root, this
# init container will change ownership to match final UID of mc service, above
init-filebrowser:

View File

@@ -0,0 +1,22 @@
services:
mc:
image: itzg/minecraft-server
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-9
# Optional: select a specific version/file
#CF_FILENAME_MATCHER: "0.2.34"
MEMORY: 4G
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,23 @@
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: true
ALLOW_FLIGHT: true
MOD_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: craftoria
MOTD: |
A %TYPE% server on %VERSION%
running %MODPACK_NAME% %MODPACK_VERSION%
MEMORY: 8G
volumes:
# Use managed volume by default, but can change to a relative path like
# ./data:/data
# to use a host directory
- mc-data:/data
volumes:
mc-data:

View File

@@ -0,0 +1,25 @@
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
# Game port
- "25565:25565/tcp"
environment:
EULA: "TRUE"
TYPE: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/ftb-evolution
# This modpack includes an override client-side only mod that will prevent the server from starting.
# For more information on override exclusions see:
# https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#excluding-overrides-files
CF_OVERRIDES_EXCLUSIONS: mods/rgp_client*.jar
MEMORY: 6G
volumes:
# attach the relative directory 'data' to the container's /data path
- ./data:/data

View File

@@ -0,0 +1,22 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_MODPACK_MANIFEST: /manifests/manifest.json
CF_SLUG: "custom"
MEMORY: 2G
volumes:
- mc-data:/data
- ./manifests:/manifests:ro
ports:
- "25565:25565"
volumes:
mc-data: {}

View File

@@ -0,0 +1,28 @@
{
"minecraft": {
"version": "1.20.4",
"modLoaders": [
{
"id": "fabric-0.15.3",
"primary": true
}
]
},
"manifestType": "minecraftModpack",
"manifestVersion": 1,
"name": "Custom",
"author": "",
"files": [
{
"projectID": 351725,
"fileID": 4973035,
"required": true
},
{
"projectID": 306612,
"fileID": 5010374,
"required": true
}
],
"overrides": "overrides"
}

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server
@@ -7,8 +5,11 @@ services:
- "25565:25565"
environment:
EULA: "true"
MOD_PLATFORM: AUTO_CURSEFORGE
# CF_API_KEY=... must be set in .env file or as environment variable
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: one-block-modded
# Modpack client zip must be manually downloaded from

View File

@@ -0,0 +1,21 @@
services:
mc:
image: itzg/minecraft-server:java8-multiarch
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: the-pixelmon-modpack
CF_FILENAME_MATCHER: "9.1.2"
MEMORY: 4G
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,21 @@
services:
mc:
image: itzg/minecraft-server
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/prominence-2-rpg
CF_FILENAME_MATCHER: "2.8.7"
MEMORY: 4G
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,30 @@
# This runs the most recent version of Roguelike Adventures and Dungeons 2. Version 1.11 as of writing.
services:
mc:
image: itzg/minecraft-server:java8
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/roguelike-adventures-and-dungeons-2
# Optional: select a specific version/file
#CF_FILENAME_MATCHER: "0.2.34"
CF_EXCLUDE_MODS: |
creative-core
default-options
itemphysic-lite
konkrete
oauth
CF_FORCE_SYNCHRONIZE: "true"
MEMORY: 4G
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,16 @@
services:
mc:
image: itzg/minecraft-server:java8
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: skyfactory-4
CF_FILENAME_MATCHER: 4.2.4
CF_API_KEY: ${CF_API_KEY}
MEMORY: 3G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -0,0 +1,24 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
# https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/
MODPACK_PLATFORM: AUTO_CURSEFORGE
# CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/6290684
CF_SLUG: skyfactory-5
# Comment out the following to get the latest version or pick a version from
# https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/all?page=1&pageSize=20
CF_FILENAME_MATCHER: 5.0.8
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
MEMORY: 4G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -0,0 +1,20 @@
services:
mc:
image: itzg/minecraft-server:java8
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/minecraft-eternal/files/4102634
MEMORY: 4G
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -0,0 +1,21 @@
services:
mc:
image: itzg/minecraft-server
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_FORCE_SYNCHRONIZE: "true"
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/valhelsia-5/files/4429560
MEMORY: 4G
volumes:
- data:/data
volumes:
data: {}

View File

@@ -0,0 +1,24 @@
services:
mc:
image: itzg/minecraft-server:java17
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: vault-hunters-1-18-2
MOTD: "§4----- §2 Vault Hunters: 1.18.2 §4 -----§r\\n §4------ §e vaulthunters.gg §4------"
MEMORY: 6G # 4G for base server + 2G per player
ALLOW_FLIGHT: true
ENABLE_COMMAND_BLOCK: true
DIFFICULTY: hard
volumes:
- mc-data:/data
volumes:
mc-data: {}

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server
@@ -9,12 +7,13 @@ services:
- "mc:/data"
environment:
EULA: "TRUE"
TYPE: PAPER
ENABLE_AUTOPAUSE: "TRUE"
OVERRIDE_SERVER_PROPERTIES: "TRUE"
MAX_TICK_TIME: "-1"
# More aggressive settings for demo purposes
AUTOPAUSE_TIMEOUT_INIT: "30"
AUTOPAUSE_TIMEOUT_EST: "10"
JVM_DD_OPTS: "disable.watchdog:true"
restart: unless-stopped
volumes:

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server

View File

@@ -1,19 +1,19 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
MOD_PLATFORM: AUTO_CURSEFORGE
# Set CF_API_KEY=... in a .env file next to this compose file and don't source control that file
MODPACK_PLATFORM: AUTO_CURSEFORGE
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: better-mc-fabric-bmc1
CF_FILENAME_MATCHER: v18.5
# CF_FILENAME_MATCHER: v18.5
MEMORY: 4G
volumes:
- mc:/data
- ../downloads:/downloads
ports:
- "25565:25565"

View File

@@ -0,0 +1,13 @@
services:
mc:
image: itzg/minecraft-server:java8
environment:
EULA: true
TYPE: canyon
VERSION: b1.7.3
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -0,0 +1,15 @@
# Provides an example of running CleanroomMC from https://github.com/CleanroomMC/Cleanroom,
# which is a Forge fork
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: FORGE
FORGE_INSTALLER_URL: https://github.com/CleanroomMC/Cleanroom/releases/download/0.2.4-alpha/cleanroom-0.2.4-alpha-installer.jar
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,12 +1,13 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: FORGE
# allocate from https://console.curseforge.com/ and set in .env file
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
VERSION: 1.19.2
CURSEFORGE_FILES: |

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
ports:

View File

@@ -1,5 +1,3 @@
version: '3.8'
####################################################################
# CURSEFORGE #
# #

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-java8}

View File

@@ -1,5 +1,3 @@
version: '3.8'
####################################################################
# FORGE_GENERIC_PACK #
# #

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@@ -1,159 +0,0 @@
version: '3.8'
####################################################################
# FORGE GENERIC_PACK #
# #
# Date: 20220828 #
# #
# Mod: TNP Limitless 5 v2.19.0 #
# #
# Notes: Verify that there is no EULA file in the modpack.zip #
# if you do not delete it the EULA flag below will be #
# overwritten when the modpack is copied and the server #
# will not start. #
# #
####################################################################
services:
####################################################################
# Service Name #
# #
# Define Service Name here. If using RCON this name will be #
# referenced again as RWA_RCON_HOST below. #
# #
# Example: 'name:' or 'mc_atm6:' #
####################################################################
mc_tnp5:
####################################################################
# Image & Container Name #
# #
# Specify Image Name and Java Version. The 'image' will always be #
# 'itzg/minecraft-server' however the tag added to the end is #
# where you can specify the java version or container architecture.#
# See readme.md for a full list. #
# #
# 'container_name:' This can be anything you like. This is the name#
# that will show when you run 'docker ps' commands. #
####################################################################
image: itzg/minecraft-server
container_name: mc_tnp5
####################################################################
# Server Ports #
# #
# Specify external port. #
####################################################################
ports:
- 25565:25565
####################################################################
# Automatic Server Restart #
# #
# Define a restart policy here. #
# - 'no' = Do not restart. #
# - 'on-failure' = Restart if container exits because an error. #
# - 'always' = Regardless of stop reason. #
# - 'unless-stopped' = Similar to always except if stopped. #
####################################################################
restart: unless-stopped
####################################################################
# Volume and Folder Access #
# #
# This section defines what folders and volumes you want to give #
# this container access to. It is recommended to leaves these set #
# to the default values unless you know what you are doing. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
# #
# Specify the data volume name or directory here as well. #
# In this example the volume name is 'data'. When docker creates #
# the volume it will add what ever name you give it here to the #
# end of the container name specified above. In this example it #
# would be named 'mc_atm6_data'. If you change this be sure to #
# update the volume name at the bottom of this config. #
####################################################################
volumes:
- ./modpacks:/modpacks:ro
- data:/data
####################################################################
# EULA #
# #
# Accept EULA by setting to "true" #
####################################################################
environment:
EULA: "true"
####################################################################
# FORGE INSTALL #
# #
# Sets install type to FORGE and specifys the zip folder name #
# and location of your mod pack. #
# #
# TYPE: Defines the install type as FORGE #
# #
# VERSION: Defines the version of MC the modpack is based on. #
# #
# FORGE_VERSION: Defines the version of FORGE the modpack uses. #
# This can usually be found in the modpack.zip as #
# installer.jar #
# #
# GENERIC_PACK: Define where the modpack.zip is located. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
####################################################################
TYPE: FORGE
VERSION: 1.18.2
FORGE_VERSION: 40.1.73
GENERIC_PACK: /modpacks/tnp5.zip
####################################################################
# Server Memory #
# #
# Set Maximum amount of memory allowed for your server. #
####################################################################
MEMORY: "8G"
####################################################################
# Logging Options #
# #
# Set to "true" to delete old logs #
####################################################################
ENABLE_ROLLING_LOGS: "true"
####################################################################
# Server Timezone #
# #
# Specify server Timezone #
####################################################################
TZ: "America/New_York"
####################################################################
# Minecraft Game Options #
# #
# List any game options you want to define here. A full list can #
# be found on the readme.md page on github. #
####################################################################
OVERRIDE_SERVER_PROPERTIES: "true"
DIFFICULTY: "easy"
MAX_TICK_TIME: "-1"
VIEW_DISTANCE: "6"
ALLOW_FLIGHT: "true"
OPS: ""
MAX_PLAYERS: 10
PVP: "false"
LEVEL_TYPE: "biomesoplenty"
MOTD: "Welcome Home"
####################################################################
# Volumes #
# #
# Define data volume name here. You should leave this set to the #
# default. #
####################################################################
volumes:
data:

View File

@@ -1,21 +0,0 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-latest}
volumes:
- data:/data
- ./modpacks:/modpacks:ro
environment:
EULA: "true"
TYPE: FORGE
DEBUG: "${DEBUG:-false}"
VERSION: ${VERSION:-1.17.1}
FORGE_VERSION: ${FORGE_VERSION:-37.0.90}
GENERIC_PACK: /modpacks/${MODPACK:-Server-Files-0.0.21.zip}
REMOVE_OLD_MODS: "${REMOVE_OLD_MODS:-false}"
ports:
- "25565:25565"
volumes:
data: {}

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server:java8

View File

@@ -1,10 +1,8 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server
volumes:
- data:/data
- ./data:/data
- ./mods:/mods
ports:
- "25565:25565"
@@ -12,10 +10,5 @@ services:
EULA: "true"
TYPE: "FORGE"
VERSION: "1.19.2"
DEBUG: "true"
SETUP_ONLY: "true"
tty: True
stdin_open: True
volumes:
data: {}
tty: true
stdin_open: true

View File

@@ -1,5 +1,3 @@
version: '3'
services:
minecraft:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
@@ -14,7 +12,10 @@ services:
CURSEFORGE_FILES: |
fabric-api
chunky-pregenerator
# allocate from https://console.curseforge.com/ and set in .env file
# Allocate API key from https://console.curseforge.com/
# and set in .env file making sure to double up dollar signs, such as
# CF_API_KEY=$$2a$$10$$....
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
CF_API_KEY: ${CF_API_KEY}
# YAML Heredoc, be sure to use '|-' this will remove the first newline and final new line.
# This is versus '|' that will leaving with two empty strings at top and bottom.

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@@ -1,20 +0,0 @@
version: "3"
services:
mc:
# Only using IMAGE variable to allow for local testing
image: itzg/minecraft-server
# image: ${IMAGE:-itzg/minecraft-server}
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: SPIGOT
# SPIGET_RESOURCES: 34315,3836
SPIGET_RESOURCES: ""
REMOVE_OLD_MODS: "true"
volumes:
- data:/data
volumes:
data: {}

View File

@@ -1,4 +1,3 @@
version: '3.8'
# Forge with Sponge API support. THIS REQUIRES DOWNLOADING SPONGEFORGE.
# Place the SpongeForge jar file in /data/mods. Other Forge mods go here as well.
# Place Sponge mods in /data/mods/plugins. Yes, this is a directory inside the Forge mod directory. Do NOT use /data/plugins.

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@@ -1,16 +1,12 @@
version: '3'
# Other docker-compose examples in /examples
services:
minecraft:
image: itzg/minecraft-server
stdin_open: true
tty: true
ports:
- "25565:25565"
volumes:
- "mc:/data"
- ./data:/data
environment:
EULA: "TRUE"
restart: always
volumes:
mc: {}
restart: unless-stopped

View File

@@ -0,0 +1,20 @@
services:
mc:
image: itzg/minecraft-server:latest
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: "FABRIC"
MEMORY: 4G
MODRINTH_PROJECTS: |
fabric-api
cardboard:beta
USES_PLUGINS: true
volumes:
- mc-data:/data
- ./plugins:/plugins:ro
volumes:
mc-data:

View File

@@ -0,0 +1,20 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: "true"
TYPE: FABRIC
# VERSION: 1.21.4
# FABRIC_INSTALLER_VERSION: 1.0.1
# FABRIC_LOADER_VERSION: 0.16.10
# Since Fabric server type only includes the loader, most times
# the fabric-api is required for other mods to function
MODRINTH_PROJECTS: |
fabric-api
ports:
- "25565:25565"
volumes:
- fabric:/data
volumes:
fabric: {}

View File

@@ -1,24 +1,25 @@
version: "3.8"
services:
mc:
# FTBA support is only available in non-Alpine images
image: itzg/minecraft-server:${IMAGE_TAG:-java8-multiarch}
image: itzg/minecraft-server
ports:
# expose the Minecraft server port outside of container
- 25565:25565
- "25565:25565"
environment:
# REQUIRED for all types
EULA: "TRUE"
# Set server type (vs the default of vanilla)
TYPE: FTBA
# Use Pack ID from https://ftb.neptunepowered.org/pack/ftb-presents-direwolf20-1-12/
FTB_MODPACK_ID: "31"
FTB_MODPACK_VERSION_ID: ""
# Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about
FTB_MODPACK_ID: "119"
# FTB_MODPACK_VERSION_ID: ""
MOTD: |
An FTB server running
%MODPACK_NAME% version %MODPACK_VERSION%
MEMORY: 4G
volumes:
# use a named, managed volume for data volume
- ftba:/data
- data:/data
volumes:
# declared the named volume, but use default/local storage engine
ftba: {}
data: {}

View File

@@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:java8

View File

@@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@@ -0,0 +1,25 @@
services:
mc:
# make sure this java version matches with pack java version
image: itzg/minecraft-server:java21
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: CUSTOM
GENERIC_PACKS: GT_New_Horizons_2.7.2_Server_Java_17-21
GENERIC_PACKS_SUFFIX: .zip
GENERIC_PACKS_PREFIX: https://downloads.gtnewhorizons.com/ServerPacks/
# if this isn't true, then the container tries to download the modpack every run
SKIP_GENERIC_PACK_UPDATE_CHECK: "true"
MEMORY: 6G
# Make sure that this matches what is in your pack's startserver bash file
JVM_OPTS: -Dfml.readTimeout=180 @java9args.txt
CUSTOM_JAR_EXEC: -jar lwjgl3ify-forgePatches.jar nogui
volumes:
# attach a managed volume, change to a relative or absolute host directory if needed
- mc-data:/data
volumes:
mc-data:

Some files were not shown because too many files have changed in this diff Show More