Перейти к содержимому
Mineforgian

Impulse Server Manager

Automatically create, start, and stop backend servers with Velocity

Загрузки
663
Подписчики
4
Обновлён
16 марта 2025 г.
Лицензия
AGPL-3.0-or-later

Опубликован 14 января 2025 г.

Impulse

Impulse is a plugin for the Minecraft server proxy Velocity. It adds the ability to dynamically start and stop servers on demand as players join and leave. Why run a server that is only used for a few hours a day?

Key Features

Impulse has many features to make managing your servers easy! Some highlights include:

  • Dynamic server creation and destruction - only run servers when your players are connected
  • First and third party brokers - Cores to drive your servers no matter how they are deployed, via Docker, JAR files, or something else. We are actively working on expanding our selection but you can find the full list here
  • Automatic hot reload of configuration - update how impulse runs a server automatically, without a reload command!
  • Unmanaged server support - plays nice with any static servers you have configured in Velocity
  • Custom events - broadcasts custom events that allow you to extend Impulse's functionality
  • Third party Broker support - Implement your own Broker or use someone else's to manage your servers
  • FOSS - Impulse is commited to being free and open source always

Documentation

For more detailed information on how to use Impulse, see our documentation. For API documentation, see our KDocs.

Installation

In short, download our latest release from one of our sources and place it in your Velocity plugins folder. For more detailed instructions see our installation guide.

Sources:

Quick Start

[!TIP] Looking for a more in-depth guide? See our Getting Started documentation.

The following configuration should get you started with a simple lobby server.

Step 1: Configure Velocity

Simply add the server to your velocity config as normal.

player-info-forwarding = "modern"

[servers]
lobby = "127.0.0.1:25566"

try = ["lobby"]

Step 2: Configure Impulse

Configure impulse so it know how to manage your server

instanceName: Bones
servers:
  - name: lobby
    inactiveTimeout: 300
    type: docker
    docker:
      image: itzg/minecraft-server
      portBindings:
        - "25566:25565"
      env:
        ONLINE_MODE: "FALSE"
        TYPE: "FABRIC"
        EULA: "TRUE"
        MODRINTH_PROJECTS: "fabricproxy-lite"
        DIFFICULTY: "PEACEFUL"
        ALLOW_NETHER: "FALSE"
        MODE: "adventure"
      volumes:
        - "/srv/lobby:/data"

Step 3: Configure the MC Server

Add some config to allow for modern forwarding

# create the file /srv/lobby/config/FabricProxy-Lite.toml
hackOnlineMode = true
hackEarlySend = false
hackMessageChain = true
disconnectMessage = "This server requires you to connect through the proxy."
secret = "<YOUR SECRET FROM forwarding.secret FILE>"

Step 4: Connect

Simply start your velocity proxy and connect to it from your Minecraft client. If you run into issues check our documentation or open an issue!

Getting Help

If your having problems with Impulse, experiencing a bug, or just want to recommend a feature, feel free to open an issue! I will do my best to respond.

Contributing

All contributions are welcome! For more specific instructions see our contributing page.

For specifics on adding creating your own broker to integrate with another server platform see our guide.

Ченджлог

v0.3.2Релиз1.21.2, 1.21.3, 1.21.4 · 16 марта 2025 г.

Highlight

Small fix release for a server matching bug.

Bugfixes

  • Fixed timeout logic so it no longer drops the connection. This allows Velocity to continue trying servers in your try block if one fails to start.

What's Changed

Full Changelog: https://github.com/Arson-Club/Impulse/compare/v0.3.1...v0.3.2

v0.3.0Релиз1.21.2, 1.21.3, 1.21.4 · 2 марта 2025 г.

Highlights

This release brings new ways to run backend servers as well as some bug fixes and updates for annoying error messages.

Features

  • JAR Broker: Directly run server jars! This allows for better integration with existing servers. See the updated documentation and getting started guide for how to use it.
  • Docker TLS Support: The docker broker now supports TLS for connections to remote daemons. Securely launch servers on a cluster of machines!

Bugfixes

  • Config Error Handinling: Better config error handling for when you are missing a config file.
  • Default Config Generation: Generates a default config file if you are missing one.
  • Doc fixes: Correct typos in readme and docs.
  • Handle Server Crashes: Stop Impulse from waiting forever if server crashes while starting.

API Changes

[!TIP] These changes are only important for developers!

  • Broker Factory: The broker factory API now provides a list of broker names it can construct rather than a single name. This allows a single broker package to more easily provide multiple implementations. See the new JAR/CMD broker for an example.

What's Changed

Full Changelog: https://github.com/Arson-Club/Impulse/compare/v0.2.1...v0.3.0

v0.2.1Релиз1.21.2, 1.21.3, 1.21.4 · 12 февраля 2025 г.

Release v0.2.1 is a minor update that includes several bugfixes as well as a few minor quality of life improvements. It also includes a lot of internal testing and CI improvements.

Hightlights

Bugifxes

  • Transferring players no longer disconnected if startup timeout reached
  • Double reconciliation fixed when adding new servers

Features

  • Dynamic server registration if not configured in velocity.toml
  • KDocs now built and published on new merges.

What's Changed

Full Changelog: https://github.com/Arson-Club/Impulse/compare/v0.2.0...v0.2.1

0.2.0Релиз1.21.2, 1.21.3, 1.21.4 · 9 февраля 2025 г.

We are excited to announce the release of v0.2.0! This update includes significant under-the-hood changes and refactoring aimed at making it easier to extend Impulse. Additionally, we have introduced several user-facing features and quality-of-life improvements.

Hightlights

Broker Refactor

The broker refactor is now complete, allowing you to create custom brokers as plugins for Impulse. This new architecture will also facilitate the distribution of future first-party brokers outside of our core functionality, enabling us to support a wider range of platforms without bloating the installation.

API Documentation

We have enhanced our API library documentation with comprehensive docstrings. A dedicated KDocs site will be launched soon for easier access.

New Pin/Unpin Commands

We have added new commands that allow for a temporary override of the shutdown behavior, providing greater flexibility in server management.

Expanded Server Lifecycle Configuration

More configuration settings have been exposed, allowing for deeper customization of how the server lifecycle is managed by Impulse.

Revamped Documentation

Our documentation has been completely overhauled and is now presented in a more user-friendly format!

Bugfixes

We have resolved several outstanding bugs related to configuration permissions, parsing issues, and Docker image pulling.

Migration

[!WARNING] There are braking changes in this update. You must read this section before upgrading.

Configuration

As part of our refactoring, we have introduced several breaking changes to our configuration schema. While all keys remain, they have been reorganized to maintain clarity as we expand the options available. You can find the full documentation for the configuration file here.

Renamed Configuration Keys

  • inactiveTimeout has been renamed to lifecycleSettings.timeouts.inactiveGracePeriod
    servers:
      - name: foo
        lifecycleSettings:
          timeouts:
            inactiveGracePeriod: 500 # time in seconds
    
  • forceServerReconciliation has been renamed to lifecycleSettings.reconciliationBehavior
    servers:
      - name: foo
        lifecycleSettings:
          reconciliationBehavior: ON_STOP
    
  • serverReconciliationGracePeriod has been renamed to lifecycleSettings.timeouts.reconciliationGracePeriod
    servers:
      - name: foo
        lifecycleSettings:
          timeouts:
            reconciliationGracePeriod: 60 # time in seconds
    

Default Behavior Changes

By default, servers will no longer stop after 5 minutes of inactivity; they will now run indefinitely unless specified otherwise.

What's Changed

Full Changelog: https://github.com/Arson-Club/Impulse/compare/v0.1.0...v0.2.0

v0.1.0Релиз1.21.2, 1.21.3, 1.21.4 · 14 января 2025 г.

Changelog available on our Github: Release v0.1.0

Комментарии

Загружаем…