PortalMine

PortalMine Custom Server Upload Guide

Prepare and upload Java, PocketMine, archive, and Linux server packages with the correct runtime, startup file, and verification workflow.

By PortalMine Operations & DocumentationReviewed July 31, 202612 min read
PortalMine Custom Server Upload Guide editorial illustration

PortalMine owner documentation. Test important changes on a copy and keep a verified backup.

Goal: upload a custom server package without guessing the runtime, startup file, or folder structure.

1. Prepare the package before uploading

A custom server should be a complete, self-contained package. Do not upload a random launcher, installer, or source-code archive and expect it to become a working server. Identify the actual entry file first.

PackageTypical entry fileRuntime
Java serverserver.jar, Paper, Purpur, Forge, or Fabric launcherMatching Java version
PocketMine-MPPocketMine-MP.pharPocketMine PHP runtime
Shell packagestart.shLinux shell plus required binaries
ArchiveA ZIP/TAR containing one of the aboveDepends on the extracted entry file
  • Remove backups, logs, crash dumps, and unrelated client files.
  • Keep configuration, libraries, mods, plugins, and world data in their expected relative paths.
  • Use simple ASCII file names for the primary startup file.
  • Confirm the package is permitted to be redistributed and hosted.

2. Match the runtime to the server

Java selection is not cosmetic. A server built for a newer Java release can fail immediately on an older runtime, while some legacy modded servers require an older Java line. PocketMine is not a Java server and needs its own PHP runtime. Read the first startup error instead of changing several settings at once.

3. Upload and wait for server-side processing

The browser upload reaching 100% means the file reached PortalMine. Large archives may still need time to transfer, verify, and extract inside the server storage. Keep the page open until the operation reports completion, but do not submit the same file repeatedly. Duplicate attempts can create partial archives and confusing folder names.

Before uploadStop the server and create a backup.
During uploadWatch the named stage, not only the percentage.
After uploadRefresh Files and confirm the expected entry file exists.

4. Confirm startup in the console

  1. Start once and wait for the first complete startup attempt.
  2. Find the first meaningful error, not only the final exit code.
  3. Confirm the process binds to the assigned port.
  4. For Java, confirm eula.txt contains eula=true.
  5. Join with a matching client before adding extensions.

5. Common failure patterns

Entry file not found

The archive extracted into an extra top-level folder or the file name differs from the startup command.

Wrong Java version

The console reports an unsupported class version or the process exits before loading the server.

Missing native library

The package depends on a system library unavailable in the selected runtime.

Server runs but cannot be joined

Check the edition, client version, assigned address, protocol, and whether the process bound to the displayed port.

Related guides