runv-server

server tooling for runv.club
Log | Files | Refs | README

10-user-provisioning-and-admin-ops.md (2708B)


      1 # Provisionamento de utilizadores e operações admin
      2 
      3 [← Índice](README.md)
      4 
      5 ## Fonte canónica: `scripts/admin/create_runv_user.py`
      6 
      7 - **Único** script de criação de **membros** com a política completa (docstring longa no ficheiro): `adduser`, chaves, `public_html` / gopher / gemini, permissões, jail (Jailkit), quota, metadados em `users.json`.
      8 - Executar como **root** no servidor Debian.
      9 
     10 ## Pós-criação: landing pública e constelação
     11 
     12 - **`genlanding.py` completo** continua necessário para a **primeira** montagem do site (VirtualHost Apache, módulos, cópia inicial). Não é preciso repetir esse fluxo **a cada** novo membro.
     13 - Flag **`--landing-document-root`** (default `/var/www/runv.club/html`): se o directório **existir**, após gravar `users.json` o script invoca **`site/genlanding.py --sync-public-only`** — recopia `site/public/` para o DocumentRoot, aplica `chown` a `www-data` e regenera `data/members.json` via `build_directory.py` interno ao genlanding.
     14 - **`--no-refresh-landing-members`:** omite toda essa sincronização (nem cópia de `public/` nem `members.json`).
     15 - Saída para o operador: linha **`landing (public + bolhas): sincronizado`** com contagem opcional, ou **AVISO** com comando manual (`genlanding.py --sync-public-only …`) se o DocumentRoot não existir ou o subprocess falhar.
     16 
     17 ## Outros scripts admin
     18 
     19 | Script | Uso |
     20 |--------|-----|
     21 | `update_user.py` | Actualizar metadados / quota / estado (`users.json` com lock) |
     22 | `del-user.py` | Remover utilizador e metadados |
     23 | `setup_alt_protocols.py` | Reparar protocolos para contas criadas fora do fluxo |
     24 | `scripts/doom/doom.py` | **Perigoso:** remove contas em massa; só testes / com backup |
     25 
     26 ## Fluxo de aprovação
     27 
     28 1. JSON na fila `entre-queue/`.
     29 2. Admin valida manualmente.
     30 3. `create_runv_user.py` com dados aprovados, manualmente ou por `request_id` da fila.
     31 4. Refresh público conforme [07](07-public-members-directory.md).
     32 
     33 ### Aprovação rápida por `request_id`
     34 
     35 Se o pedido veio do fluxo `entre`, o admin pode aprová-lo diretamente pelo UUID do ficheiro na fila:
     36 
     37 ```bash
     38 sudo python3 scripts/admin/create_runv_user.py --request-id UUID
     39 ```
     40 
     41 O script lê `username`, `email` e `public_key` do JSON em `/var/lib/runv/entre-queue/UUID.json`, cria a conta e arquiva o pedido em `entre-queue/approved/` após sucesso.
     42 
     43 ### Aprovação em lote da fila inteira
     44 
     45 Para processar todos os pedidos pendentes de uma vez:
     46 
     47 ```bash
     48 sudo python3 scripts/admin/create_runv_user.py --all-pending
     49 ```
     50 
     51 O script percorre os JSONs pendentes da fila, processa um a um em sequência e imprime um resumo final com sucessos e falhas.
     52 
     53 Próximo: [11-daily-operations.md](11-daily-operations.md).