Skip to main content

Flora Family Minecraft Server

Docker Details

This minecraft server is running from a Docker Compose stack on the primary homelab docker host (terra.flora.family).

The docker instance spins up a java runtime environment with 6GB of dedicated memory. It uses the "Aikar" JRE settings as well to tune the server for performance.

We use the itzg/minecraft-server image and watch it with Watchtower to ensure that the image is as up-to-date as possible. However, we've pinned the minecraft server version to ensure that all plugins remain compatible (there's typically a delay between when the latest server version comes out and when the plugins are compatible with it).

Docker Compose File

Here's the /srv/minecraft/docker-compose.yaml file in full:

services:
  minecraft:
    image: itzg/minecraft-server:latest
    container_name: minecraft
    hostname: minecraft
    user: 110:986
    ports:
      - "25565:25565"
      - "24454:24454/udp"
    volumes:
      - /main/appdata/minecraft/serverdata:/data
    networks:
      - proxy_network
      - minecraft_network
    environment:
      EULA: TRUE
      MEMORY: 6G
      TZ: America/New_York
      USE_AIKAR_FLAGS: true
      ENABLE_ROLLING_LOGS: true

      VERSION: 1.21.5
      TYPE: PAPER

      # Current version of Dynmap compatible w/ paper isn't on Modrinth or Spigot
      # Currently needs to be installed manually.
      SPIGET_RESOURCES: 81862 # Celeste isn't on Modrinth
      MODRINTH_PROJECTS: |-
        chunky
        chunkyborder
        decentholograms
        essentialsx
        essentialsx-discord
        essentialsx-spawn
        essentialsx-chat-module
        luckperms
        multiverse-core
        multiverse-portals
        simple-voice-chat
        terra:beta
        vaultunlocked
        worldedit
        worldguard
    restart: unless-stopped
    depends_on:
      - mongodb

  mongodb:
    image: mongo:latest
    container_name: mongodb
    hostname: mongodb
    logging:
      driver: "none"
    restart: unless-stopped
    command: --quiet
    volumes:
      - /main/appdata/minecraft/mongodbdata:/data/db
      - /main/appdata/minecraft/mongodbconfig:/data/configdb
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=super_duper_tough
      - TZ=America/New_York
    networks:
      - minecraft_network

networks:
  minecraft_network:
    name: minecraft_network
  proxy_network:
    external: true

Minecraft Server

We're running a Paper server, currently (as of 7/19/25) at version 1.21.5. All plugins are server-side only.

There is one exception to the server-side plugin rule: Simple Voice Chat requires both the server plugin and a client-side plugin (using Fabric or Forge). There is a separate page with full details on how to get that set up for the client.