Files
Kappeh 11128897bc
All checks were successful
Deploy / Deploy (push) Successful in 2m24s
Update scripts/README.md
2026-02-23 09:05:05 +00:00
..
2026-02-02 01:10:14 +00:00
2026-01-15 19:50:50 +00:00
2026-02-02 03:20:40 +00:00
2026-02-23 09:05:05 +00:00
2026-01-31 00:36:37 +00:00
2026-01-30 17:03:00 +00:00
2026-01-15 19:50:50 +00:00

Scripts

This directory contains operational scripts used by the Minecraft server Docker stack. These scripts handle initialization, backup & restore, and server/world configuration tasks.

Some scripts are desgined to by run automatically, while others are intended to be run manually by an administrator.


Overview

Script / File Purpose How It's Run
init.sh Prepare Docker volumes and permissions Automatically by the init container
backup.sh Create and prune server backups Automatically (e.g. cron/systemd)
mark_daily_backup.sh Create/update daily backup marker Automatically (e.g. cron/systemd)
restore.sh Restore data from a backup Manually
setup.sh Configure gamerules, time, weather, gamemode Manually
creative Gamerule definitions for creative worlds Read by setup.sh
survival Gamerule definitions for survival worlds Read by setup.sh

Script Details

init.sh

Purpose: Ensures that required directories exist inside named Docker volumes and that ownership/permissions are set correctly.

This script is responsible for preparing the filesystem so that the Minecraft server and related containers can start without permission issues.

Execution:

  • Run only by the init container
  • Executed inside the init container
  • Not intended to be run manually
  • Does not take any arguments

backup.sh

Purpose: Creates a complete backup of the Minecraft server's persistent data, including:

  • World save files
  • Plugin data
  • Mod data
  • Permissions database
  • Plot database
  • Whitelist database

This script also handles automatic pruning of old backups once a configured maximum number of backups is reached.

Execution

  • Intended to run automatically on a schedule
  • Typically triggered by a cron job or systemd timer
  • Must be run from the directory containing compose.yml
  • Does not take any arguments

mark_daily_backup.sh

Purpose: Marks the latest backup as the daily backup.

This script maintains consistency between the two backup tiers: hourly and daily. Hourly backups are created by backup.sh, while daily backups are managed by Duplicati.

To prevent Duplicati from accessing a backup that is still in progress, this script updates an intermediate daily marker to point to the most recently completed hourly backup. By the time the scheduled daily job runs, the referenced backup is guaranteed to be complete.

Execution

  • Intended to run automatically on a schedule
  • Typically triggered by a cron job or systemd timer
  • Must be run from the directory containing compose.yml
  • Does not take any arguments

restore.sh

Purpose: Restores data from an existing backup back into the live server.

This script supports partial restores, allowing you to restore only specific components, such as:

  • A single world
  • Permissions database
  • Any combination of components

It can also be used to initialize a brand-new server instance from an existing backup.

Execution:

  • Run manually
  • Must be run from the directory containing compose.yml
  • Run restore.sh help for usage information

setup.sh

Purpose: Applies server-wide configuration to all worlds, including:

  • Gamerules
  • Game mode
  • Time
  • Weather

This script is primarily intended for initial server setup, but can be re-run if settings are accidentally changed or need to be reapplied.

Execution:

  • Run manually
  • Must be run from the directory containing compose.yml
  • Does not take any arguments

Gamerule Definition Files

creative

Contains a list of gamerules that should be applied to creative-mode worlds.

  • Read by setup.sh
  • Format: one gamerule per line (as expected by the script)

survival

Contains a list of gamerules that should be applied to survival-mode worlds.

  • Read by setup.sh
  • Format: one gamerule per line (as expected by the script)