Skip to content

Users & quotas

import { Steps } from ‘@astrojs/starlight/components’;

LabPod manages two things per user: a LabPod account (login credentials and quotas) and a Linux account on the host (where containers run). These are related but separate.

Open /admin/usersNew user. Fill in the username and an initial password. LabPod provisions a Linux account automatically if one doesn’t already exist.

Admin Users page - user list on the left, New User form on the right

Terminal window
# Interactive password prompt
sudo labpod admin --db /var/lib/labpod/labpod.db create-user alice
# Or pipe the password (for automation)
printf '%s\n' 'initial-password' | sudo labpod admin --db /var/lib/labpod/labpod.db create-user alice
Terminal window
# Run these as root
# Interactive password prompt
labpod admin --db /var/lib/labpod/labpod.db create-user alice
# Or pipe the password (for automation)
printf '%s\n' 'initial-password' | labpod admin --db /var/lib/labpod/labpod.db create-user alice

When LabPod creates a new Linux account it runs:

  1. useradd -m -s /bin/bash <username> - creates the account and home directory.
  2. chpasswd - sets the initial Linux password (same as the LabPod password at creation time).
  3. loginctl enable-linger <username> - keeps the user’s systemd slice running after logout, so rootless containers survive a browser disconnect.
  4. Creates the workspace-private and work directories beneath the configured account-home and work bases. With the defaults these are /home/<username>/workspaces/ and /home/<username>/work/.
  5. Creates /shared/<username>/ (readable by all users) if the /shared root exists.

If a Linux account with that username already exists, LabPod adopts it only when its configured home is already beneath LABPOD_FILEOP_HOME_BASE. It then enables linger and creates required workspace directories, but never modifies the existing Linux password. An account homed elsewhere is rejected with an explanation rather than being changed unexpectedly.

These are fully independent credentials after account creation:

WhatWhereWho can change it
LabPod passwordLabPod databaseUser (Settings page), admin (set-password)
Linux passwordHost /etc/shadowOnly the host admin, outside LabPod

Changing a LabPod password via the UI or set-password never modifies the Linux password. The Linux password is only set once, during the initial create-user call, and is otherwise LabPod’s concern.

Terminal window
sudo labpod admin --db /var/lib/labpod/labpod.db set-password alice
# Or pipe:
printf '%s\n' 'new-password' | sudo labpod admin --db /var/lib/labpod/labpod.db set-password alice
Terminal window
# Run these as root
labpod admin --db /var/lib/labpod/labpod.db set-password alice
# Or pipe:
printf '%s\n' 'new-password' | labpod admin --db /var/lib/labpod/labpod.db set-password alice
Terminal window
sudo labpod admin --db /var/lib/labpod/labpod.db list-users
Terminal window
# Run these as root
labpod admin --db /var/lib/labpod/labpod.db list-users
RoleHow to identifyWhat they can do
Root adminUsername is rootEverything: user CRUD, templates, policies, images, audit logs, force-stop any workspace
SuperuserSuperuser flag setView all workspaces and resource usage; no mutations
Regular userDefaultOwn workspaces, templates, and files only

An admin can:

  • View and monitor any workspace.
  • Force-stop any workspace (recorded in the audit log).

An admin cannot (without OS-level access):

  • Enter another user’s terminal session.
  • Start, edit, or launch apps in another user’s workspace.
  • Delete another user’s workspace.
  • View another user’s files via the LabPod file manager.

Quotas are set per user via /admin/policies:

Admin Policies page - per-user CPU, memory, GPU, and disk-alert fields with current usage shown

QuotaWhat it limits
Max CPUTotal cores across all running workspaces
Max memoryTotal RAM (GB) across all running workspaces
Max GPU fractionTotal GPU allocation (1.0 = one full GPU) across running workspaces
Max workspacesNumber of simultaneously running workspaces
Disk alertAdvisory GB threshold for the user’s account home and relocated work area

CPU, memory, GPU, and workspace-count quotas are enforced at workspace start time when their host support is effective. Disk use is measured and can raise an alert, but LabPod never blocks a write or a workspace start for disk use. Running workspaces are not stopped when an admin lowers a quota.

From the admin UI: removes the LabPod database record and revokes all sessions. The Linux account and home directory are preserved - LabPod never calls userdel. If you want to reclaim disk space, do so manually as a host admin.

Re-adding the same username later adopts the existing Linux account.