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.
| Package | Typical entry file | Runtime |
|---|---|---|
| Java server | server.jar, Paper, Purpur, Forge, or Fabric launcher | Matching Java version |
| PocketMine-MP | PocketMine-MP.phar | PocketMine PHP runtime |
| Shell package | start.sh | Linux shell plus required binaries |
| Archive | A ZIP/TAR containing one of the above | Depends 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.
4. Confirm startup in the console
- Start once and wait for the first complete startup attempt.
- Find the first meaningful error, not only the final exit code.
- Confirm the process binds to the assigned port.
- For Java, confirm
eula.txtcontainseula=true. - 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.