ops-jrz1/docs/learner-admin.md
Dan 3d33a45cc9 Add learner dev environment, testing infrastructure, and skills
Learner account management:
- learner-add.sh: create accounts with SSH, plugin skeleton
- learner-remove.sh: remove accounts with optional archive
- plugin-skeleton template: starter maubot plugin

Testing:
- flake.nix: add checks output for pre-deploy validation
- smoke-test.sh: post-deploy service verification

Documentation:
- learner-onboarding.md: VS Code Remote-SSH setup guide
- learner-admin.md: account management procedures

Skills:
- code-review.md: multi-lens code review skill
- orch, worklog: symlinks to shared skills
2025-12-28 22:23:06 -05:00

2.1 KiB

Learner Account Administration

Guide for managing learner accounts on the maubot development server.

Adding a Learner

  1. Get the learner's SSH public key (they run cat ~/.ssh/id_ed25519.pub)

  2. SSH to the server and run:

    sudo /path/to/scripts/learner-add.sh <username> '<ssh-public-key>'
    

    Example:

    sudo ./scripts/learner-add.sh alice 'ssh-ed25519 AAAAC3... alice@laptop'
    
  3. The script will output onboarding instructions - send these to the learner.

What Gets Created

  • Unix user account with SSH access
  • ~/plugins/hello_<username>/ - starter maubot plugin
  • The plugin includes a working hello/ping bot

Removing a Learner

sudo ./scripts/learner-remove.sh <username>

With archive (saves home directory before deleting):

sudo ./scripts/learner-remove.sh <username> --archive

Archives are saved to /var/backups/learners/.

Maubot Setup (One-Time)

After adding the first learner, set up the shared test environment:

  1. Create a Matrix bot user for learners (via Element or API)

  2. In maubot admin (http://localhost:29316):

    • Add the bot user as a client
    • Learners will create instances using this client
  3. Create #learners-sandbox room:

    • Create the room in Matrix
    • Invite the bot user
    • Give learners the room ID/alias

Monitoring

Check Learner Plugin Status

# See what plugins are loaded
curl -s http://localhost:29316/_matrix/maubot/v1/plugins \
  -H "Authorization: Bearer <token>" | jq

View Learner Directories

ls -la /home/*/plugins/

Check Maubot Logs

journalctl -u maubot -f

Troubleshooting

Learner Can't Connect

  1. Verify user exists: id <username>
  2. Check SSH key: cat /home/<username>/.ssh/authorized_keys
  3. Check SSH logs: journalctl -u sshd | grep <username>

Plugin Won't Load

  1. Check file permissions:
    ls -la /home/<username>/plugins/
    
  2. Verify .mbp file structure:
    unzip -l /home/<username>/plugins/*/dist/*.mbp
    

Disk Space

Monitor learner disk usage:

du -sh /home/*/