Skip to main content

Overview

StellarStack uses a hierarchical permission system to control user access to server features. With 45+ permission nodes across 12 categories, you can create roles from view-only to full administrator access.

45+ Permission Nodes

Fine-grained control over every server action

Hierarchical Structure

Category-based organization with wildcard support

Preset Roles

Viewer, Operator, and Admin presets for quick setup

Subuser Management

Invite users with custom permission sets

Permission Structure

Permissions follow a hierarchical pattern:
category.action
Examples:
  • control.start - Start server
  • files.delete - Delete files
  • backups.restore - Restore from backup

Wildcard Permissions

Grant all permissions in a category:
  • control.* - All power control actions
  • files.* - All file operations
  • * - Full admin access to everything

Permission Matching

The system checks permissions in order:
  1. Wildcard *: Full access, skip other checks
  2. Category wildcard (e.g., control.*): All actions in category
  3. Exact permission (e.g., control.start): Specific action only

Permission Categories

StellarStack organizes permissions into 12 categories:

1. Power Controls

Manage server power state:
PermissionDescription
control.startStart the server
control.stopStop the server gracefully
control.restartRestart the server
control.killForcefully kill server process
Wildcard: control.*

2. Console

Access server console:
PermissionDescription
console.readView server console output
console.writeSend commands to server console
Wildcard: console.*

3. File Manager

Manage server files:
PermissionDescription
files.readView and download files
files.writeEdit existing files
files.createCreate new files and folders
files.deleteDelete files and folders
files.archiveCreate and extract archives
files.sftpConnect via SFTP
Wildcard: files.*

4. Backups

Manage server backups:
PermissionDescription
backups.readView list of backups
backups.createCreate new backups (also lock/unlock)
backups.deleteDelete unlocked backups
backups.restoreRestore server from backup
backups.downloadDownload backup files
Wildcard: backups.*

5. Network Allocations

Manage IP:Port allocations:
PermissionDescription
allocations.readView server allocations
allocations.createAdd new allocations to server
allocations.deleteRemove allocations from server
allocations.updateSet primary allocation
Wildcard: allocations.*

6. Startup Configuration

Modify startup settings:
PermissionDescription
startup.readView startup configuration
startup.updateEdit startup variables
startup.docker-imageChange server’s Docker image
Wildcard: startup.*

7. Server Settings

Manage server metadata:
PermissionDescription
settings.readView server settings
settings.renameChange server name
settings.descriptionEdit server description
settings.reinstallReinstall the server (destructive)
Wildcard: settings.*

8. Activity Logs

View audit trail:
PermissionDescription
activity.readView server activity logs
Wildcard: activity.*

9. Schedules

Manage scheduled tasks:
PermissionDescription
schedules.readView scheduled tasks
schedules.createCreate new scheduled tasks
schedules.updateEdit existing scheduled tasks
schedules.deleteDelete scheduled tasks
Wildcard: schedules.*

10. Subusers

Manage server access:
PermissionDescription
users.readView server subusers
users.createInvite new subusers
users.updateEdit subuser permissions
users.deleteRemove subusers from server
Wildcard: users.*

11. Databases

Manage server databases:
PermissionDescription
database.readView database list
database.createCreate new databases
database.deleteDelete databases
database.view-passwordView database passwords
Wildcard: database.*

12. Server Splitting

Split server resources:
PermissionDescription
split.readView child servers from splitting
split.createCreate child servers by splitting resources
split.deleteDelete child servers
Wildcard: split.*

Preset Roles

StellarStack provides three preset permission sets:

Viewer

Read-only access to server information:
[
  "console.read",
  "files.read",
  "backups.read",
  "allocations.read",
  "startup.read",
  "settings.read",
  "activity.read",
  "schedules.read",
  "users.read"
]
Use Cases:
  • Monitoring server status
  • Viewing logs and files
  • Checking configurations
  • Auditing activity

Operator

Manage day-to-day server operations:
[
  "control.start",
  "control.stop",
  "control.restart",
  "console.read",
  "console.write",
  "files.read",
  "files.write",
  "files.create",
  "backups.read",
  "backups.create",
  "allocations.read",
  "startup.read",
  "settings.read",
  "activity.read",
  "schedules.read",
  "schedules.create"
]
Use Cases:
  • Server restarts and management
  • File editing and uploads
  • Console command execution
  • Creating backups
  • Managing schedules

Admin

Full server access:
["*"]
Use Cases:
  • Server ownership
  • Complete control
  • Can manage subusers
  • Can delete/modify anything

Managing Subusers

Server owners can invite users with custom permissions:

Inviting a Subuser

1

Navigate to Subusers

ServerSubusersAdd Subuser
2

Enter Email

Email address of the user to invite (must have a panel account)
3

Select Permissions

Choose from:
  • Preset roles (Viewer, Operator, Admin)
  • Custom permission set
  • Individual permission nodes
4

Send Invitation

User receives email notification and gains access immediately
Required Permission: users.create

Editing Subuser Permissions

  1. Navigate to ServerSubusers
  2. Click Edit on target subuser
  3. Modify permissions:
    • Add/remove individual permissions
    • Switch to different preset
    • Grant/revoke category wildcards
  4. Click Save
  5. Changes apply immediately
Required Permission: users.update

Removing Subusers

  1. Navigate to ServerSubusers
  2. Click Delete on target subuser
  3. Confirm removal
  4. User loses all access to server
Required Permission: users.delete

Permission Use Cases

Example 1: Moderator Role

Allow moderators to manage players but not server configuration:
[
  "console.read",
  "console.write",
  "activity.read"
]
Can Do:
  • View console output
  • Execute commands (kick, ban, teleport)
  • View activity logs
Cannot Do:
  • Start/stop server
  • Edit files
  • Create backups
  • Modify settings

Example 2: Developer Role

Allow developers to edit files and view logs:
[
  "console.read",
  "files.read",
  "files.write",
  "files.create",
  "files.sftp",
  "backups.read",
  "backups.create"
]
Can Do:
  • View console
  • Edit configuration files
  • Upload plugins/mods via SFTP
  • Create backups before changes
Cannot Do:
  • Start/stop server (ask operator)
  • Delete files (safety)
  • Restore backups (destructive)

Example 3: Backup Manager

Dedicated role for backup management:
[
  "backups.*",
  "files.read"
]
Can Do:
  • Create backups
  • Download backups
  • Restore from backups
  • Lock/unlock backups
  • View files (for backup verification)
Cannot Do:
  • Edit files
  • Execute console commands
  • Change server settings

Example 4: Network Administrator

Manage allocations and network settings:
[
  "allocations.*",
  "settings.read"
]
Can Do:
  • Add/remove port allocations
  • Set primary allocation
  • View server settings
Cannot Do:
  • Start/stop server
  • Edit files
  • Execute commands

Permission Validation

The system validates permissions on every action:

Client-Side (UI)

Buttons and features are hidden/disabled based on permissions:
{hasPermission("control.start") && (
  <Button onClick={startServer}>Start Server</Button>
)}
If user lacks permission, UI elements don’t appear.

Server-Side (API)

All API endpoints enforce permissions:
// Example: Start server endpoint
servers.post("/:serverId/start", requireServerAccess, async (c) => {
  const user = c.get("user")
  const server = c.get("server")
  
  if (!hasPermission(user.permissions, "control.start")) {
    return c.json({ error: "Missing permission: control.start" }, 403)
  }
  
  // Start server...
})
Attempting unauthorized actions returns:
{
  "error": "Missing permission: control.start",
  "code": 403
}

Server Ownership

The server owner (creator) has implicit permissions:
  • Automatic * Wildcard: Owner has all permissions
  • Cannot Be Removed: Owner cannot be deleted as a subuser
  • Cannot Be Downgraded: Owner permissions cannot be reduced
  • Can Transfer Ownership: Admin can change server owner
Ownership is tracked via ownerId field on server record.

Best Practices

Grant only the permissions users need:
  • Start with Viewer role
  • Add permissions as needed
  • Avoid blanket * wildcard
  • Review permissions regularly
Leverage presets when possible:
  • Faster setup
  • Well-tested permission sets
  • Easy to understand
  • Customize from preset baseline
Create role-specific permission sets:
  • Moderators: Console + activity
  • Developers: Files + backups
  • Operators: Power + console + files
  • Backup managers: Backups only
Regularly review who has access:
  • Remove inactive subusers
  • Downgrade over-privileged users
  • Check activity logs
  • Rotate access for contractors
Be cautious with:
  • settings.reinstall - Wipes server data
  • backups.restore - Replaces current files
  • files.delete - Permanent file deletion
  • users.delete - Remove team members
Grant only to trusted users.

Troubleshooting

User Cannot Access Feature

Symptoms: Button grayed out or feature missing Solution:
  1. Check user’s permission list
  2. Verify required permission exists
  3. Grant missing permission
  4. User may need to refresh page

Permission Changes Not Applied

Symptoms: User still has old permissions after edit Solution:
  1. Verify changes were saved
  2. Ask user to log out and back in
  3. Check for client-side caching
  4. Clear browser cookies/storage

Cannot Grant Permission

Symptoms: Permission option not available when editing Cause: You lack users.update permission yourself Solution: Ask server owner or admin to grant permission

Subuser Invite Not Working

Symptoms: Cannot add subuser Causes:
  1. No users.create permission: Ask owner to grant
  2. Email not registered: User must create panel account first
  3. Already a subuser: Cannot invite same user twice

Future Enhancements

Planned permission features:
  • Permission Templates: Save/load custom permission sets
  • Time-Based Permissions: Grant access for limited duration
  • IP Restrictions: Limit access to specific IP ranges
  • 2FA Requirement: Require two-factor auth for sensitive permissions
  • Audit Logs: Detailed permission change history

Build docs developers (and LLMs) love