Skip to main content

FAQ

What does Luminesk manage?​

Luminesk resolves a reviewed recipe, installs one Docker-backed server instance, tracks file ownership, records exact source and image digests, and performs transactional updates. It is not a game-server implementation or a general container orchestrator.

What is a recipe?​

A recipe is a directory containing luminesk.toml plus any templates, Dockerfile, and local source files it declares. It describes inputs, artifact sources, installed files, ownership, runtime settings, checks, and update policy. Start with Creating a Recipe.

Can I install a custom server core?​

Yes, when a catalog already provides an appropriate recipe or when you write and review your own recipe. Luminesk does not treat an arbitrary JAR or binary as a complete server definition: runtime, files, ownership, and checks still need to be declared.

Do end users need Git?​

No. GitHub recipe installs use API metadata and a bounded, commit-pinned archive. Recipe authors may use Git for source control, but Luminesk does not execute the Git client during installation or operation.

Do I need Docker?​

Yes. Docker is the only runtime driver and is also the isolated build boundary for recipes that declare [build]. nesk doctor verifies both the Docker executable and daemon access.

Does Luminesk support multiple instances?​

Yes. Each instance has its own directory, local control state, runtime container, inputs, and lock. Commands target one instance with --dir; the global index is used for discovery, not as the authoritative instance state.

How do I know which inputs an install needs?​

Run nesk info NAME for an official catalog recipe. It lists every input, default, constraint, and whether a value uses --set or --set-file. A normal interactive nesk install NAME --dir INSTANCE then asks for missing values in a wizard. JSON and non-interactive modes never prompt, so scripts must supply all required values explicitly.

Does --yes accept the Minecraft EULA?​

No. --yes approves the displayed trust and change plan. EULA acceptance is a separate recipe input and is never inferred. For example, Paper and Purpur automation commands use --set eula=true --yes: the first option accepts the EULA and the second approves the reviewed operation.

Which instance does a command use?​

Pass --dir /path/to/instance when you are outside it. Runtime commands without --dir search the current directory and its parents for an instance manifest. Use nesk list to find indexed instances and nesk import PATH --scan to rebuild missing index entries from valid instance state.

Where should worlds and editable configuration live?​

In paths the recipe marks data or preserve. Managed/generated paths belong to the recipe and cannot be silently overwritten after an operator edits them. Check the recipe's ownership and backup declarations before deploying it.

Why is server.properties missing after install?​

Editable server configs are normally created by the core on first start. Start the instance, wait for readiness, stop it, and edit the complete generated file before starting again. Luminesk templates replace whole files; they do not merge a partial template with server defaults. Official recipes therefore avoid seeding incomplete server.properties-style files.

How do I use and leave the interactive console?​

nesk attach --dir INSTANCE opens a full-screen TUI with the latest 200 log lines, live output, command input, and scrolling. Ctrl+D detaches while the server keeps running, Ctrl+C stops it gracefully, Ctrl+K kills it, and Ctrl+L clears only the local view. Use nesk logs instead when output must be piped or automated.

Is a quiet long-running command stuck?​

Interactive terminals show the current stage with a spinner. Animation is disabled for redirected output, JSON, non-interactive mode, and debug mode so machine output remains stable. Add --debug for stage-level stderr diagnostics and wait for the original command to finish or time out before retrying it.

How do I change an input after installation?​

Pass --set NAME=VALUE or --set-file NAME=PATH to a supported install, update, or start command. Install and update persist non-secret values in instance state; start overrides affect that start only. Secret values are never persisted, must use --set-file, and are not available to path templates.

Is an image tag reproducible?​

No. Locking resolves a tag to a full repository SHA-256 digest. Installed apply and runtime operations require that digest, so a later tag move does not silently change an already locked instance.

What is the difference between the manifest and the lock?​

luminesk.toml is the author's intent. luminesk.lock records the resolved recipe revision, target platform, exact artifact digests, and exact Docker image digest for one resolution. Both are required for reproducible application.

Should I commit luminesk.lock?​

Yes for a recipe you maintain: review and commit manifest and lock changes together. An installed instance also keeps its applied lock locally. Locks are platform-specific, so test them on the deployment target.

Can a recipe run host shell commands?​

No. Host shell commands are forbidden. Runtime and command readiness checks are argv arrays executed without a shell inside the container. A recipe with [build] can execute Docker build instructions after the user reviews and approves that recipe; build-network access is off unless declared.

Is there a [permissions] section?​

No. It is not part of manifest version 1 and is rejected as an unknown key. Build-code consent is based on the presence of [build]; network access for that build is controlled by [build].network.

What does manifest_version = 1 mean?​

It selects the current recipe manifest schema. It is a file-format version, not the Luminesk product version and not the server-core version.

What happens to worlds and configuration on update?​

Paths marked data remain user-owned and are never recipe-written. preserve paths keep existing content. Managed/generated files change only if their recorded applied digest still matches, and the recipe's [update].backup globs select protected paths copied into transaction backups.

Can I update only one component?​

Use nesk update SOURCE_ID when the recipe has multiple sources. The command still creates and validates a coherent new lock and plan; it does not bypass ownership, checks, or transaction safety.

Can I run offline?​

Use --frozen only after the matching target lock and every locked source blob are present in the local content cache. Frozen mode performs no resolution and fails rather than fetching or changing anything. Docker must still be able to use the locked image locally.

Can I install a .lumineskpkg file?​

The package format and verifier exist for deterministic distribution, but the current public CLI has no nesk package command and does not accept an arbitrary package as an install target. Use a local recipe directory or a reviewed catalog recipe. See Lockfiles and Packages.

Can I automate Luminesk?​

Yes. Use --json --non-interactive, inspect the process exit status and the JSON error object, and add --yes only after automation has approved remote recipe trust or another confirmation. Parser/usage errors may be emitted before JSON dispatch, but they use the same JSON error envelope whenever --json is present. Without --json, errors are written to stderr. Usage errors exit with code 2.

Does nesk doctor prove that Docker is healthy?​

It verifies that the CLI exists and that the current user can contact the daemon. It does not pull an image, test registry access, or run a recipe; use a recipe resolution/validation phase for those workload-specific boundaries.

Can I directly open or import a 1.x instance?​

No. The current manifest, lock, state, ownership ledger, and transaction layout form a clean compatibility boundary. Migrate data side by side; nesk import only rebuilds index entries for already valid current instances. Follow Migrating from 1.x.

Is Luminesk production-ready?​

The CLI enforces verified resolution, ownership-aware plans, transactional file application, lock digests, and Docker lifecycle checks. Production readiness for a particular server still depends on recipe review, tested backups and recovery, Docker operations, capacity planning, monitoring, and workload-specific acceptance. Treat a new or changed recipe like deployment code.