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
102 lines
2.1 KiB
Markdown
102 lines
2.1 KiB
Markdown
# 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:
|
|
```bash
|
|
sudo /path/to/scripts/learner-add.sh <username> '<ssh-public-key>'
|
|
```
|
|
|
|
Example:
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
sudo ./scripts/learner-remove.sh <username>
|
|
```
|
|
|
|
With archive (saves home directory before deleting):
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# See what plugins are loaded
|
|
curl -s http://localhost:29316/_matrix/maubot/v1/plugins \
|
|
-H "Authorization: Bearer <token>" | jq
|
|
```
|
|
|
|
### View Learner Directories
|
|
|
|
```bash
|
|
ls -la /home/*/plugins/
|
|
```
|
|
|
|
### Check Maubot Logs
|
|
|
|
```bash
|
|
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:
|
|
```bash
|
|
ls -la /home/<username>/plugins/
|
|
```
|
|
2. Verify .mbp file structure:
|
|
```bash
|
|
unzip -l /home/<username>/plugins/*/dist/*.mbp
|
|
```
|
|
|
|
### Disk Space
|
|
|
|
Monitor learner disk usage:
|
|
```bash
|
|
du -sh /home/*/
|
|
```
|