Share a server with other users
Give another Coritan account access to your server and choose exactly what it can do, permission by permission.
In the dashboard
The Users tab gives another Coritan account access to your server. The other person signs in to their own account, finds the server on their Container Apps page and can do only what you allow. You never share your password, and billing stays with you: other users cannot see your invoices, change the plan or cancel the server.
Before you begin
Section titled Before you begin- The other person needs a Coritan account. You add them by its user ID, a number. No dashboard page shows it yet, so ask them to read
idin the answer toGET /api/v1/auth/me, as Profile shows. - You must own the server, or hold the Manage users permission on it.
- We do not email the other person or ask them to accept. Tell them yourself once you have added them.
Add a user
Section titled Add a user- In the dashboard, go to Container Apps and open the server, then the Users tab.
- Select Add user….
- In User ID, enter the other account's user ID, for example
10482. - Under Permissions, tick what they may do. Choose permissions explains each one.
- Select Add user.
The user joins the list, and the server appears on their Container Apps page.
Choose permissions
Section titled Choose permissionsEach permission in the list covers one area of the server:
| Permission | What it allows |
|---|---|
| Power | Start, stop, restart and kill the server, and wake a sleeping free server. |
| Command | Run commands in the console. |
| Console | Open the console. It grants the same as Command, so once you save either one, the list shows both. |
| Files | Browse, edit, upload, download and delete files, compress and extract archives, connect over SFTP and import files from another host. |
| Snapshots | Take snapshots of this server, list them and restore a snapshot onto this server. |
| Backups | List, restore, download, lock and delete the server's backups. |
| Databases | Create databases, see their passwords, set new passwords and delete databases. |
| Schedules | Create, change, run and delete schedules. Each task also needs the permission for its action. |
| Manage users | Add, change and remove other users on this server. |
| Manage rules | Create, change and delete rules. |
| Install software | Search the catalogue, install and update plugins, mods and packs, turn them on and off, and set the resource pack. |
Warning
A user with Manage users can give anyone any permission, including permissions they do not hold themselves. Give it only to someone you would trust with the whole server.
Some things need a permission that the list does not offer, and you can grant these only through the API:
- The Ports tab needs the
allocationpermissions. - The Java settings need
startup.readandstartup.update. - Removing a plugin, mod, pack or the resource pack needs
software.delete. - Changing the server's software needs
settings.reinstallas well as Install software. - Starting in safe mode needs Power as well as Install software.
Downloading, locking and deleting a snapshot work only from the account that holds it, so another user cannot do them even with the Snapshots permission.
Change what a user can do
Section titled Change what a user can do- On the Users tab, open the menu at the end of the user's row and select Edit permissions….
- Tick or clear permissions.
- Select Save permissions.
The change applies straight away. If the user has the console open, it closes, and the new permissions apply when they open it again.
Saving keeps any permission you granted through the API that the list does not show, such as allocation.read. A wildcard is the exception: saving replaces *, or a whole-area grant such as file.*, with the permissions of the boxes that are ticked.
Remove a user
Section titled Remove a user- On the Users tab, open the menu at the end of the user's row and select Remove user….
- Select Remove user to confirm.
They lose access to the server at once, and any console they have open closes. Their account and their own servers are not affected.
What the other user sees
Section titled What the other user sees- The server is on their Container Apps page, with every tab. An action they have no permission for fails with
Insufficient permissions. - On the Users tab they see the other users by name, without email addresses. They see their own email address, but not yours.
- They connect over SFTP with their own email address and password.
Result
Section titled ResultThe dashboard confirms each change with User added., Permissions updated. or User removed.. The Access column lists each user's permissions, and the line under their name shows how many permission keys they hold and when you added them.
Troubleshooting
Section titled TroubleshootingThat user already owns this server- You entered your own user ID. Enter the other person's.
User 10482 is already a subuser on this server- That account already has access. Use Edit permissions… on its row instead. The same message appears when no account has that user ID, so check the number with the other person.
Insufficient permissions- The user tried something their permissions do not cover. The owner adds the permission with Edit permissions….
- No permissions this panel knows of
- The user holds only permissions that the list does not show, granted through the API. They keep them when you save.
- The server is missing from the other person's Container Apps page
- Check that they signed in to the account whose user ID you entered, then ask them to reload the page.
Related
Section titled Related- Use the console and power controls
- Connect to a server with SFTP
- Schedule server tasks
- Manage server ports
With the API
Section titled With the APIGET /api/v1/client/servers/{uuid}/users lists the users on a server. Each entry has id (the entry's own number), user_id (the account's user ID), permissions, created_at, email and name. When a user who is not the owner asks, email is null on every entry but their own.
Add a user with POST /api/v1/client/servers/{uuid}/users. The body takes user_id and permissions, a list of permission keys:
curl -X POST https://api.coritan.com/api/v1/client/servers/$SERVER/users \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"user_id": 10482, "permissions": ["control.console", "control.start", "control.stop", "control.restart", "file.read", "file.read-content"]}'
The response (201) is the new entry:
{
"id": 318,
"server_id": 2207,
"user_id": 10482,
"permissions": ["control.console", "control.start", "control.stop", "control.restart", "file.read", "file.read-content"],
"created_at": "2026-09-25T14:30:00",
"email": "sam@example.com",
"name": "Sam Taylor"
}
The other routes take the entry's id, not the user ID:
| Route | What it does |
|---|---|
PUT /api/v1/client/servers/{uuid}/users/{subuser_id} |
Replaces the user's permissions with the permissions list in the body. |
DELETE /api/v1/client/servers/{uuid}/users/{subuser_id} |
Removes the user and answers {"message": "Subuser removed"}. |
These are the permission keys, by area. * grants every key, and an area followed by .*, such as file.*, grants every key in that area. The list must hold at least one key.
| Area | Keys | What the dashboard's list grants |
|---|---|---|
control |
console, start, stop, restart, kill |
Command and Console grant console; Power grants the other four. |
file |
read, read-content, create, update, update-content, delete, archive, sftp |
Files grants all eight. |
snapshot |
create, read, delete, restore, download |
Snapshots grants all five. |
backup |
create, read, delete, restore, download |
Backups grants all five. |
database |
create, read, update, delete, view_password |
Databases grants all five. |
schedule |
create, read, update, delete |
Schedules grants all four. |
user |
create, read, update, delete |
Manage users grants all four. |
settings |
automation, reinstall, rename |
Manage rules grants automation. |
software |
search, read, install, update, delete |
Install software grants search, read and install. |
allocation |
read, create, update, delete |
None. |
startup |
read, update, docker-image |
None. |
A key is the area and the name joined by a full stop, for example file.read-content. We accept settings.rename, software.update and startup.docker-image, but nothing checks them yet. Each guide in this section names the keys its routes need.
Adding a user needs user.create, changing one needs user.update and removing one needs user.delete. Any user on the server can list the users. Errors answer 400 with the reasons in Troubleshooting, Unknown permission: file.rename for a key that does not exist and Select at least one permission for an empty list. A subuser_id that is not on the server answers 404 with Subuser not found.
API operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/client/servers/{uuid}/users | List subusers for a server |
POST | /api/v1/client/servers/{uuid}/users | Add a subuser to a server |
PUT | /api/v1/client/servers/{uuid}/users/{subuser_id} | Update subuser permissions |
DELETE | /api/v1/client/servers/{uuid}/users/{subuser_id} | Remove a subuser from a server |