Skip to main content

Overview

Mounts allow you to share files or directories from the host system into server containers. They can be assigned to specific eggs, nodes, or individual servers.

Endpoints

List Mounts

curl -X GET "https://panel.example.com/api/admin/mounts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Authentication: Admin with mounts:read permission Query Parameters:
  • view (optional): Set to options for a simplified list of ID and name only
Response (default):
{
  "data": [
    {
      "id": "mount-uuid",
      "uuid": "mount-uuid",
      "name": "Shared Maps",
      "description": "Shared world maps",
      "source": "/mnt/maps",
      "target": "/home/container/maps",
      "readOnly": true,
      "userMountable": false,
      "createdAt": "2024-01-15T10:30:00Z",
      "updatedAt": "2024-01-15T10:30:00Z",
      "eggCount": 3,
      "nodeCount": 5,
      "serverCount": 12
    }
  ]
}
Response (view=options):
{
  "data": [
    {
      "id": "mount-uuid",
      "name": "Shared Maps"
    }
  ]
}

Create Mount

curl -X POST "https://panel.example.com/api/admin/mounts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Shared Plugins",
    "description": "Shared plugin directory",
    "source": "/mnt/plugins",
    "target": "/home/container/plugins",
    "readOnly": true,
    "userMountable": false,
    "nodeIds": ["node-uuid-1", "node-uuid-2"],
    "eggIds": ["egg-uuid-1"]
  }'
Request Body:
  • name (required): Mount name (1-255 characters, trimmed)
  • description (optional): Description (max 500 characters, trimmed)
  • source (required): Host path (trimmed, minimum 1 character)
  • target (required): Container path (trimmed, minimum 1 character)
  • readOnly (optional): Whether mount is read-only (default: false)
  • userMountable (optional): Whether users can mount this (default: false)
  • nodeIds (optional): Array of node UUIDs to assign mount to
  • eggIds (optional): Array of egg UUIDs to assign mount to

Update Mount

curl -X PATCH "https://panel.example.com/api/admin/mounts/mount-uuid" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "readOnly": false,
    "userMountable": true
  }'
Request Body: Same as create, but all fields are optional

Delete Mount

curl -X DELETE "https://panel.example.com/api/admin/mounts/mount-uuid" \
  -H "Authorization: Bearer YOUR_API_KEY"

Mount Object

id
string
Mount UUID
uuid
string
Mount UUID
name
string
Mount name
description
string
Mount description
source
string
Path on the host system
target
string
Path inside the container
readOnly
boolean
Whether the mount is read-only
userMountable
boolean
Whether users can mount this themselves
createdAt
string
ISO 8601 timestamp
updatedAt
string
ISO 8601 timestamp
eggCount
integer
Number of eggs using this mount (list endpoint only)
nodeCount
integer
Number of nodes with this mount (list endpoint only)
serverCount
integer
Number of servers using this mount (list endpoint only)

Mount Assignment

Mounts can be assigned to:
  • Eggs: Mount automatically applies to all servers using that egg
  • Nodes: Mount is only available on specific nodes
  • Servers: Mount can be individually assigned to servers

Security Considerations

  • Use readOnly: true when servers should not modify shared data
  • Carefully control userMountable to prevent security issues
  • Ensure source paths exist on all assigned nodes
  • Be cautious with sensitive directories (e.g., /etc, system paths)

Notes

  • Mounts are ordered alphabetically by name
  • Counts are computed via SQL joins in the list endpoint
  • Use view=options for dropdown/select inputs
  • Audit logs track all mount operations

Build docs developers (and LLMs) love