Skip to content
Coritan Docs

Manage server ports

Add, remove and label your server's ports, choose its primary address and publish a port on a floating IP.

View as Markdown

Every server has a primary port: the address players join. You can add more ports for a voice plugin, a map viewer, or a query or RCON listener. The server's Ports tab, under More on its page, lists them, adds and releases them, and chooses which one is primary. With a floating IP attached, you can also open ports on that address and publish a port on the game's default port, so players join with the address alone.

  • The plan sets how many ports the server can hold, including the primary one. Most plans allow 5. The Port slots used figure on the tab shows how many you have used, such as 2 of 5, and Port slots on the Size and add-ons card of the Billing tab shows the limit. Managed ports, ports the software needs and ports on a floating IP use no slot. When every port is in use, the tab offers the Extra Port add-on, which raises the limit by one. A server a brand's Medal quest has boosted can have more: a level on the brand's paid ladder can add ports on top of the plan's and the add-on's.
  • Only the ports on the tab are reachable from outside the server. A plugin or a second listener with a port of its own, such as Geyser on its own port, Dynmap, a voice chat plugin or a query port, needs a port added here.
  • Extra ports on the machine's shared address come from the range 10000–40000. Set the plugin to listen on 0.0.0.0 and that port's number, not on the server's IP address.
  • Adding or releasing a port on a running server takes effect when the server restarts.
  • On a server someone shared with you, you need the allocation permissions. The dashboard's permission list has no option for them, so the owner can grant them only through the API.

The three figures at the top show the Port slots used against the plan's limit, the Managed ports that a feature such as Bedrock crossplay, or the player slots of a Bedrock Dedicated Server, added, which use no slot, and the Primary address with a button to copy it.

The table lists every port:

Address
The address players or apps connect to, with a button to copy it. When a floating IP changes how the port is reached, the address on the machine's own IP shows under it as direct. An IPv6 address shows in brackets, such as [2001:db8::10]:25570, so the port stands apart from the address. The ports you add are on IPv4. Only our staff can add a port on IPv6.
Purpose
A Primary badge marks the primary port, Managed marks a port the platform added for a feature (such as Bedrock crossplay, or the Bedrock UDP window of a Bedrock Dedicated Server), and Floating IP marks a port on the server's floating IP. Other ports show what they are for, such as Extra, Query or RCON. Required by the software marks a port the server's software listens on besides the primary one, such as Rust's query and RCON ports or a Bedrock server's IPv6 port, and its note says which.
Published on
The game's default port this port answers on, if you published it.
Notes
The note you gave the port.
Added
When the port was added.

A Bedrock Dedicated Server also holds a run of managed UDP ports, one for each Bedrock player who can be connected at once. The Software tab shows their number as Player slots (Run a Bedrock Dedicated Server).

Managed ports use no slot, and you cannot release them. Turning off the feature that added a port, such as Bedrock crossplay, releases it. The Bedrock UDP window rows have no switch: they stay while the server runs Bedrock Dedicated Server software, and we release them when you change the server to other software or delete it. Ports the software needs use no slot either. You can release one, but the listener on it then stops being reachable.

A Bedrock server's IPv6 port is the port Bedrock players use for the server over IPv6. Bedrock Dedicated Server keeps it apart from the primary port, as server-portv6 in server.properties, so we give it a port of its own. On our game edge, the IPv6 port is the same as the IPv4 one, 19132. Players reach a server over IPv6 through its join address, while the server's own address and the ports you add stay IPv4.

  1. In the dashboard, go to App Deployment and open the server, then the Ports tab.
  2. Select Add port…. A page opens with the heading Add a port.
  3. Under Which port, choose where the port comes from:
    • Lowest free port takes the next free port in the machine's range.
    • Choose a port lets you pick one from the Free port list.
    • On the floating IP opens a port on the server's floating IP. Enter a Port from 1024 to 65535, or leave it empty for the first free one. The field's hint lists the ports the host itself uses, which you cannot open.
  4. Optional: enter a Note, such as voice or dynmap, so you remember what the port is for. It can be up to 64 characters.
  5. Select Add port. The page returns to the list. If we cannot add the port, the page keeps what you entered and says why under the form.

Set the plugin to listen on 0.0.0.0 and the new port's number. A running server opens the port when it next restarts, so the tab says Port 25581 opens when the server restarts and offers Restart server. Restarting disconnects everyone playing, so restart once the plugin is set up. Ports on the floating IP do not count against the plan's limit, and a server can hold up to 16 of them.

On some servers, staff add the extra ports. There, the tab shows Request port… in place of Add port…, and a request you sent shows as open until staff add the port or reply.

  1. Select Request port…. A page opens with the heading Request a port.
  2. Under What the port is for, say what needs it, such as A voice plugin on UDP.
  3. Select Send request.

A message confirms Port request sent. Staff add the port or reply by email.

Connect a proxy to its servers

Section titled Connect a proxy to its servers

A proxy such as Velocity or BungeeCord reaches each backend server at the backend's address on its Ports tab, such as 51.89.6.162:25580, even when both run on the same machine. 127.0.0.1 and localhost reach only the proxy's own server. Put that address in the proxy's server list, such as velocity.toml or BungeeCord's config.yml.

When the server holds every port its plan allows, the Ports card says so, such as All 5 ports on this server are in use. Release one to add another., and a card above it offers the Extra Port add-on with its monthly price.

  1. Select Add… on the Extra Port card.
  2. Choose the Quantity, check the price under Your order, and select the button at the foot of it. It reads Pay and the amount, then and add.
  3. When the page asks you to pay the invoice, pay it (Pay an invoice). The limit rises once the invoice is paid.

The add-on renews with the server, and the first invoice charges the rest of the current billing period. The Size and add-ons card on the server's Billing tab sells the same add-on and removes it. On a server someone shared with you, only its owner can add it.

  1. Open the menu at the end of the port's row and select Make primary….
  2. Select Make primary.

The server's main listener moves to that port, and it becomes the address the dashboard shows. If the server is running, we restart it so it listens on the new port. The menu does not offer this for managed ports.

Publish a port on the default game port

Section titled Publish a port on the default game port

With a floating IP attached, a port can answer on the game's default port, so players type the floating IP without a port number.

  1. Open the menu at the end of the port's row and select Publish on the default port….
  2. A page opens with the heading Publish port and the port's number. Under Publish on, choose Java (25565) or Bedrock (19132).
  3. Select Publish port.

We move the port onto that number and restart the server if it is running. Only one port can hold each default port at a time. To undo it, open the menu, select Change the published port…, then select Stop publishing on the page that opens. A managed port, or a port that is already on the floating IP, cannot be published.

  1. Open the menu at the end of the port's row and select Release port….
  2. Select Release port.
  3. If the server is running, the dialog then asks Release port 25580 and restart?, because the running server keeps the port until it restarts. Select Release and restart to release it and restart the server now, which disconnects everyone playing. To choose the moment yourself, select Cancel, stop the server, and release the port then.

Anything listening on the port stops being reachable. A port on the shared address goes back into the pool, and we may give it to another server. You cannot release the primary port or a managed port. While a floating IP is attached, the server keeps at least one port on the shared address, because it falls back to that port if the floating IP is detached.

The Web address card at the bottom of the tab puts a hostname in front of the primary port, with an HTTPS certificate and our edge's filtering. Use it for a web map, a panel or an API.

  1. Enter a Hostname, such as map.example.com. The field suggests a name when your account holds a Coritan domain.
  2. Leave Request an HTTPS certificate selected unless you do not want one.
  3. Select the button under the form to give the server a web address.

When we host the domain's DNS, we write the record for you. Otherwise, point the name at our edge yourself. The card then lists the address, and Manage route opens it in Game Shield.

A message confirms each change, such as Port 25567 added., Port 25567 released. or 25567 is now the primary port. The table updates straight away. On a running server, the message adds It opens when the server restarts. after an add, and The server restart is queued. after Release and restart.

A plugin's port does not answer
Check that the port is on the Ports tab, that the plugin listens on 0.0.0.0 rather than the server's IP address, and that the server has restarted since you added the port.
A proxy cannot reach a server on the same machine
Use the server's address from its Ports tab, not 127.0.0.1 or localhost (Connect a proxy to its servers).
Add port… is greyed out
Every port the plan allows is in use, and the server has no floating IP with room. Release a port, or add the Extra Port add-on (Add a port at the limit).
Allocation limit reached (5). Cannot add more ports to this server.
The server holds every port its plan allows. Release a port or add the Extra Port add-on first. The number in the message is the server's limit.
Port must be between 10000 and 40000
Ports on the shared address come from that range. Use On the floating IP for any other port.
Port 25565 is reserved on the node main IP (gameproxy / platform services)
Our own services use that port on the shared address. Choose another port.
Port 25567 is already in use on this node
Another server has that port. Choose another one from the Free port list.
Cannot release the primary allocation
Make another port primary first, then release this one.
This port is managed by the platform (…). Turn the feature that uses it off to release it.
A feature such as Bedrock crossplay uses the port. Turn the feature off to release it. The message names Bedrock UDP window for a Bedrock Dedicated Server's player slots, which have no switch: they go when you change the software or delete the server.
The server is running, and it keeps this port until it restarts. Remove the port and restart the server, or stop the server first.
The API answers this with 409 to a release without restart=true. Release the port with ?restart=true, or stop the server first (With the API).
Keep at least one shared node port: it is what this server falls back to if the floating IP is detached.
Keep this port while the floating IP is attached.
Attach a floating IP first; …
Opening a port on a floating IP, or publishing on a default port, needs a floating IP attached to the server. See Floating IPs.
Another port on this server already publishes on 25565
Stop publishing the other port first.

GET /api/v1/client/servers/{uuid}/allocations lists the server's ports. Each has id, ip, port, is_primary, purpose, label, managed, limit_exempt, dedicated (on the floating IP), notes, publish_port and created_at, and endpoint, the host:port players use, with an IPv6 address in brackets. limit_exempt is true for a port that uses no slot: a managed port, or one with the purpose software, which the software needs and you can release.

GET /api/v1/client/servers/{uuid}/allocations/rules returns the limits: allocation_limit (with any ports a boost level adds, which allocation_boost counts) and allocation_used (without limit_exempt ports) for the shared range, publish_ip (the floating IP, or null), and dedicated_ip with the floating IP's address, port_min, port_max, reserved_ports, limit and used, or null without one. game names the server's game and its default_port.

GET /api/v1/client/servers/{uuid}/allocations/available-ports returns up to limit free ports in the shared range (1 to 200, default 50) as ports.

Add a port. Leave out port for the lowest free one, and set on_dedicated_ip to true to open it on the floating IP:

Shell
curl -X POST https://api.coritan.com/api/v1/client/servers/$SERVER/allocations \
  -H "Authorization: Bearer $CORITAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"port": 25567, "notes": "voice"}'

The response is 201 with the new port and restart_required. When it is true, the server is running and opens the port only after its next start. We do not restart it for you. Send POST /api/v1/client/servers/{uuid}/power with {"signal": "restart"} when it suits you.

Request What it does
DELETE /allocations/{allocation_id} Releases the port and answers restart (not_needed when the server did not need one). On a running server that keeps the port until it restarts, it answers 409 with detail.error set to restart_required and keeps the port.
DELETE /allocations/{allocation_id}?restart=true Releases the port and restarts a running server that needs it, which disconnects its players. restart is scheduled, or pending when a restart was already queued.
POST /allocations/{allocation_id}/primary Makes the port primary. The response adds a publish object.
POST /allocations/{allocation_id}/publish-port Publishes the port on {"port": 25565} or {"port": 19132}, or stops with {"port": null}. Returns allocation and publish.

The paths are relative to /api/v1/client/servers/{uuid}. In publish, restart is scheduled when we restart the server to rebind it. Every other refusal answers 400 with the reason in detail.

The Extra Port add-on goes on the server's service with POST /api/v1/services/{service_id}/addons, as Add-ons shows. allocation_limit in allocations/rules counts it once it is paid.

GET /api/v1/client/servers/{uuid}/allocations/request answers {"required": false, "open_request": null} on a Coritan server, because you add ports yourself. It is there for storefronts whose free servers ask their staff for ports instead. POST to the same path, with note (3 to 500 characters), answers 403 with Extra ports on this server are added from the Ports tab, not requested.

On a server shared with you, listing and reading allocations/request need allocation.read, adding needs allocation.create, releasing needs allocation.delete, and making a port primary or publishing it needs allocation.update.

API operations on this page

MethodPathWhat it does
GET/api/v1/client/servers/{uuid}/allocationsList primary + extra ports for this server
POST/api/v1/client/servers/{uuid}/allocationsCreate server allocation
GET/api/v1/client/servers/{uuid}/allocations/available-portsFree ports on this server's node (node-wide, not shared across servers)
GET/api/v1/client/servers/{uuid}/allocations/requestGet port request
POST/api/v1/client/servers/{uuid}/allocations/requestAsk staff for an extra port, where the rule above requires it
GET/api/v1/client/servers/{uuid}/allocations/rulesAllocation rules
DELETE/api/v1/client/servers/{uuid}/allocations/{allocation_id}Release an extra port
POST/api/v1/client/servers/{uuid}/allocations/{allocation_id}/primaryMark an existing port as the primary allocation
POST/api/v1/client/servers/{uuid}/allocations/{allocation_id}/publish-portSet allocation publish port