admin.md (12303B)
1 # Guia do Administrador 2 3 Manual prático para operações administrativas do `runv-server` no servidor Debian do `runv.club`. 4 5 Use este documento como folha de referência rápida. Quando houver dúvida sobre comportamento detalhado, a fonte de verdade continua sendo o código dos scripts em `scripts/`, `tools/`, `site/`, `terminal/`, `patches/` e a árvore `docs/`. 6 7 ## Convenções 8 9 Assuma: 10 11 ```bash 12 cd /caminho/para/runv-server 13 ``` 14 15 Nos exemplos abaixo, substitua: 16 17 - `REPO` pelo caminho real do clone 18 - `USER` pelo username Unix do membro 19 - `EMAIL` pelo email do membro 20 - `PUBKEY.pub` pelo arquivo `.pub` aprovado 21 22 ## Pré-requisitos 23 24 - Executar como `root` ou com `sudo` 25 - Servidor Debian com Python 3 26 - Quotas ext4 prontas se for usar quota automática 27 - Apache / DocumentRoot configurados se quiser refresh público automático 28 - Operador autorizado: por padrão, `pmurad-admin` (ou a lista em `RUNV_ADMIN_USERS`) 29 30 ## Bootstrap inicial do servidor 31 32 Bootstrap conservador do host: 33 34 ```bash 35 sudo python3 REPO/scripts/admin/starthere.py --verbose 36 ``` 37 38 Simular sem alterar: 39 40 ```bash 41 sudo python3 REPO/scripts/admin/starthere.py --dry-run --verbose 42 ``` 43 44 ## Ferramentas globais, MOTD, skel e IRC 45 46 Aplicar ferramentas globais, `MOTD`, `skel`, drop-in SSH jailed e patch IRC: 47 48 ```bash 49 sudo python3 REPO/tools/tools.py 50 ``` 51 52 Esse comando também: 53 54 - garante `pmurad-admin` com sudo administrativo via `/etc/sudoers.d/90-runv-pmurad-admin` 55 - remove `pmurad-admin` do grupo `runv-jailed` 56 - não altera membros já existentes por omissão 57 58 Simular: 59 60 ```bash 61 sudo python3 REPO/tools/tools.py --dry-run --verbose 62 ``` 63 64 Reaplicar só arquivos e patch IRC, sem APT: 65 66 ```bash 67 sudo python3 REPO/tools/tools.py --skip-apt 68 ``` 69 70 Reaplicar sem APT: 71 72 ```bash 73 sudo python3 REPO/tools/tools.py --skip-apt 74 ``` 75 76 Se quiser reconciliar membros já existentes de uma vez (jail SSH + patch IRC): 77 78 ```bash 79 sudo python3 REPO/tools/tools.py --reconcile-existing-users 80 ``` 81 82 ## Setup do onboarding via SSH (`entre`) 83 84 Instalar/configurar o usuário `entre` e o fluxo de pedido: 85 86 ```bash 87 sudo python3 REPO/terminal/setup_entre.py --help 88 ``` 89 90 Exemplo de execução: 91 92 ```bash 93 sudo python3 REPO/terminal/setup_entre.py 94 ``` 95 96 ## Fila de pedidos 97 98 Fila padrão: 99 100 - `/var/lib/runv/entre-queue/` 101 102 Listar pedidos: 103 104 ```bash 105 sudo ls -lah /var/lib/runv/entre-queue 106 ``` 107 108 Inspecionar um pedido JSON: 109 110 ```bash 111 sudo cat /var/lib/runv/entre-queue/ID_DO_PEDIDO.json 112 ``` 113 114 Ou com formatação: 115 116 ```bash 117 sudo jq . /var/lib/runv/entre-queue/ID_DO_PEDIDO.json 118 ``` 119 120 Log do onboarding: 121 122 ```bash 123 sudo tail -n 200 /var/log/runv/entre.log 124 ``` 125 126 ## Criar usuário novo 127 128 Fluxo canônico de provisionamento: 129 130 ```bash 131 sudo python3 REPO/scripts/admin/create_runv_user.py \ 132 --username USER \ 133 --email EMAIL \ 134 --public-key-file PUBKEY.pub 135 ``` 136 137 Simular: 138 139 ```bash 140 sudo python3 REPO/scripts/admin/create_runv_user.py \ 141 --username USER \ 142 --email EMAIL \ 143 --public-key-file PUBKEY.pub \ 144 --dry-run --verbose 145 ``` 146 147 Exigir quota pronta antes de criar: 148 149 ```bash 150 sudo python3 REPO/scripts/admin/create_runv_user.py \ 151 --username USER \ 152 --email EMAIL \ 153 --public-key-file PUBKEY.pub \ 154 --require-quota 155 ``` 156 157 Criar sem quota: 158 159 ```bash 160 sudo python3 REPO/scripts/admin/create_runv_user.py \ 161 --username USER \ 162 --email EMAIL \ 163 --public-key-file PUBKEY.pub \ 164 --no-quota 165 ``` 166 167 Criar sem jail: 168 169 ```bash 170 sudo python3 REPO/scripts/admin/create_runv_user.py \ 171 --username USER \ 172 --email EMAIL \ 173 --public-key-file PUBKEY.pub \ 174 --no-jail 175 ``` 176 177 Criar com valores de quota explícitos: 178 179 ```bash 180 sudo python3 REPO/scripts/admin/create_runv_user.py \ 181 --username USER \ 182 --email EMAIL \ 183 --public-key-file PUBKEY.pub \ 184 --quota-soft-mb 450 \ 185 --quota-hard-mb 500 \ 186 --quota-inode-soft 10000 \ 187 --quota-inode-hard 12000 188 ``` 189 190 Modo interativo: 191 192 ```bash 193 sudo python3 REPO/scripts/admin/create_runv_user.py --interactive 194 ``` 195 196 Aprovar direto da fila pelo `request_id`: 197 198 ```bash 199 sudo python3 REPO/scripts/admin/create_runv_user.py --request-id ID_DO_PEDIDO 200 ``` 201 202 Processar toda a fila pendente de uma vez: 203 204 ```bash 205 sudo python3 REPO/scripts/admin/create_runv_user.py --all-pending 206 ``` 207 208 ## Atualizar usuário existente 209 210 Abrir menu interativo: 211 212 ```bash 213 sudo python3 REPO/scripts/admin/update_user.py --interactive --username USER 214 ``` 215 216 Atualizar email: 217 218 ```bash 219 sudo python3 REPO/scripts/admin/update_user.py --username USER --email EMAIL 220 ``` 221 222 Substituir chave pública: 223 224 ```bash 225 sudo python3 REPO/scripts/admin/update_user.py \ 226 --username USER \ 227 --ssh-replace-file PUBKEY.pub 228 ``` 229 230 Acrescentar chave pública: 231 232 ```bash 233 sudo python3 REPO/scripts/admin/update_user.py \ 234 --username USER \ 235 --ssh-append-file PUBKEY.pub 236 ``` 237 238 Definir nova senha de login: 239 240 ```bash 241 sudo python3 REPO/scripts/admin/update_user.py --username USER --set-password 242 ``` 243 244 Alterar quota: 245 246 ```bash 247 sudo python3 REPO/scripts/admin/update_user.py \ 248 --username USER \ 249 --quota-soft-mb 450 \ 250 --quota-hard-mb 500 \ 251 --quota-inode-soft 10000 \ 252 --quota-inode-hard 12000 253 ``` 254 255 Simular: 256 257 ```bash 258 sudo python3 REPO/scripts/admin/update_user.py \ 259 --username USER \ 260 --email EMAIL \ 261 --dry-run 262 ``` 263 264 ## Remover usuário / banimento técnico 265 266 Remover conta e home: 267 268 ```bash 269 sudo python3 REPO/scripts/admin/del-user.py --username USER 270 ``` 271 272 Execução não interativa: 273 274 ```bash 275 sudo python3 REPO/scripts/admin/del-user.py --username USER -y 276 ``` 277 278 Simular: 279 280 ```bash 281 sudo python3 REPO/scripts/admin/del-user.py --username USER --dry-run 282 ``` 283 284 Observações: 285 286 - o script desmonta jail/binds antes de remover 287 - atualiza `users.json` 288 - pode sincronizar a landing pública após a remoção 289 290 ## Remoção em massa 291 292 Ferramenta perigosa, só com backup: 293 294 ```bash 295 sudo python3 REPO/scripts/doom/doom.py --help 296 ``` 297 298 Simular: 299 300 ```bash 301 sudo python3 REPO/scripts/doom/doom.py --dry-run 302 ``` 303 304 ## Reparar Gopher e Gemini 305 306 Reconfigurar infraestrutura de Gopher e Gemini: 307 308 ```bash 309 sudo python3 REPO/scripts/admin/setup_alt_protocols.py 310 ``` 311 312 Simular: 313 314 ```bash 315 sudo python3 REPO/scripts/admin/setup_alt_protocols.py --dry-run --verbose 316 ``` 317 318 Sem instalar pacotes: 319 320 ```bash 321 sudo python3 REPO/scripts/admin/setup_alt_protocols.py --skip-install 322 ``` 323 324 Sem backfill de usuários: 325 326 ```bash 327 sudo python3 REPO/scripts/admin/setup_alt_protocols.py --skip-backfill 328 ``` 329 330 ## Site público e landing 331 332 Primeira montagem completa da landing / Apache: 333 334 ```bash 335 sudo python3 REPO/site/genlanding.py 336 ``` 337 338 Somente sincronizar `site/public` + `members.json` para o DocumentRoot: 339 340 ```bash 341 sudo python3 REPO/site/genlanding.py --sync-public-only \ 342 --document-root /var/www/runv.club/html \ 343 --members-users-json /var/lib/runv/users.json 344 ``` 345 346 Atualizar só `members.json`: 347 348 ```bash 349 sudo python3 REPO/site/build_directory.py \ 350 --users-json /var/lib/runv/users.json \ 351 -o /var/www/runv.club/html/data/members.json 352 ``` 353 354 ## Notícias 355 356 Publicar notícias novas: 357 358 ```bash 359 sudo python3 REPO/site/news/publish_news.py 360 ``` 361 362 Simular: 363 364 ```bash 365 sudo python3 REPO/site/news/publish_news.py --dry-run 366 ``` 367 368 Publicar sem sincronizar Apache: 369 370 ```bash 371 sudo python3 REPO/site/news/publish_news.py --skip-genlanding 372 ``` 373 374 ## Wiki 375 376 Gerar a wiki estática localmente a partir de `site/wiki/*.txt`: 377 378 ```bash 379 python3 REPO/site/wiki/build_wiki.py 380 ``` 381 382 Depois, sincronizar a landing: 383 384 ```bash 385 sudo python3 REPO/site/genlanding.py --sync-public-only \ 386 --document-root /var/www/runv.club/html \ 387 --members-users-json /var/lib/runv/users.json 388 ``` 389 390 ## Email 391 392 Configurar Mailgun: 393 394 ```bash 395 sudo python3 REPO/email/configure_mailgun.py --help 396 ``` 397 398 Configurar msmtp: 399 400 ```bash 401 sudo python3 REPO/email/configure_msmtp.py --help 402 ``` 403 404 Modo legado SMTP/msmtp: 405 406 ```bash 407 sudo python3 REPO/email/configure_msmtp_legacy.py --help 408 ``` 409 410 Diagnóstico: 411 412 ```bash 413 sudo sh REPO/email/scripts/diagnose_msmtp.sh 414 ``` 415 416 Teste de envio: 417 418 ```bash 419 sudo sh REPO/email/scripts/send_test_mail.sh 420 ``` 421 422 ## IRC da casa 423 424 Aplicar/reaplicar a configuração IRC em todos os usuários: 425 426 ```bash 427 sudo python3 REPO/patches/patch_irc.py --all-users --force 428 ``` 429 430 Aplicar a um único usuário: 431 432 ```bash 433 sudo python3 REPO/patches/patch_irc.py --user USER --force 434 ``` 435 436 Simular: 437 438 ```bash 439 sudo python3 REPO/patches/patch_irc.py --all-users --force --dry-run --verbose 440 ``` 441 442 Padrão atual: 443 444 - servidor `irc.tilde.chat` 445 - porta `6697` 446 - TLS ligado 447 - canal `#runv` 448 - comando de uso do membro: `chat` 449 - ao correr `chat`, o membro entra automaticamente no `#runv` 450 - a lista lateral de nicks do WeeChat fica visível quando o terminal tiver espaço utilizável 451 452 ## Moderação da comunidade e square 453 454 ### Política 455 456 A política editorial e disciplinar está em: 457 458 - [site/wiki/05_punicoes-e-moderacao.txt](/Z:/Códigos/runv-server/site/wiki/05_punicoes-e-moderacao.txt) 459 - [site/wiki/04_regras-da-comunidade.txt](/Z:/Códigos/runv-server/site/wiki/04_regras-da-comunidade.txt) 460 461 ### O que este repositório faz 462 463 Este repositório fornece os comandos para: 464 465 - criar conta 466 - atualizar conta 467 - remover conta 468 - regenerar presença pública 469 - aplicar infraestrutura e serviços 470 471 ### O que este repositório não fornece 472 473 Este snapshot **não inclui** um CLI canônico próprio para moderar a `square` em nível de posts, salas, threads, silenciamento, suspensão comunitária ou revisão de conteúdo dentro da aplicação social. 474 475 Então, para `square`, a orientação operacional é: 476 477 - aplicar a moderação pelos controles nativos da própria plataforma `square` que vocês já operam 478 - registrar internamente a medida tomada 479 - se a medida envolver perda de acesso ao servidor, complementar com `del-user.py` ou `update_user.py`, conforme o caso 480 481 Exemplos de fluxo: 482 483 1. Advertência ou limitação comunitária na `square`: usar a ferramenta da própria `square`; não há comando neste repo. 484 2. Suspensão temporária na `square` sem remover conta Unix: executar na `square`; se necessário, ajustar quota, senha ou chaves com `update_user.py`. 485 3. Banimento permanente com encerramento de conta no servidor: moderar na `square` e depois executar `del-user.py`. 486 487 ## Comandos de inspeção úteis 488 489 Ver quotas: 490 491 ```bash 492 quota -vs USER 493 sudo repquota -s /home 494 ``` 495 496 Ver mounts: 497 498 ```bash 499 mount | grep usrquota 500 findmnt /home 501 ``` 502 503 Ver Apache: 504 505 ```bash 506 sudo apache2ctl configtest 507 sudo systemctl status apache2 508 ``` 509 510 Ver SSH: 511 512 ```bash 513 sudo sshd -t 514 sudo systemctl status ssh 515 ``` 516 517 Ver usuários com sessão: 518 519 ```bash 520 who 521 last 522 ``` 523 524 Ver logs do onboarding: 525 526 ```bash 527 sudo tail -n 200 /var/log/runv/entre.log 528 ``` 529 530 ## Fluxos rápidos 531 532 ### Aprovar pedido e criar conta 533 534 ```bash 535 sudo jq . /var/lib/runv/entre-queue/ID_DO_PEDIDO.json 536 sudo python3 REPO/scripts/admin/create_runv_user.py \ 537 --username USER \ 538 --email EMAIL \ 539 --public-key-file PUBKEY.pub 540 ``` 541 542 ### Corrigir perfil público 543 544 ```bash 545 sudo python3 REPO/site/genlanding.py --sync-public-only \ 546 --document-root /var/www/runv.club/html \ 547 --members-users-json /var/lib/runv/users.json 548 ``` 549 550 ### Reparar artefatos ausentes de um membro 551 552 Se uma home ficou incompleta após um provisionamento interrompido ou após a remoção de jail, use o reparador conservador. Ele cria apenas artefatos ausentes e corrige dono/modo esperados; não sobrescreve páginas existentes. 553 554 ```bash 555 sudo python3 REPO/scripts/admin/repair_user.py --user USER --dry-run --verbose 556 sudo python3 REPO/scripts/admin/repair_user.py --user USER 557 ``` 558 559 Para varrer todos os candidatos em `users.json` e `/home`: 560 561 ```bash 562 sudo python3 REPO/scripts/admin/repair_user.py --all-users --dry-run --verbose 563 sudo python3 REPO/scripts/admin/repair_user.py --all-users 564 ``` 565 566 Procedimento completo: [docs/16-repair-users.md](16-repair-users.md). 567 568 ### Corrigir IRC de todos os usuários 569 570 ```bash 571 sudo python3 REPO/patches/patch_irc.py --all-users --force 572 ``` 573 574 ### Banir tecnicamente uma conta 575 576 ```bash 577 sudo python3 REPO/scripts/admin/del-user.py --username USER -y 578 ``` 579 580 ## Referências rápidas 581 582 - [docs/10-user-provisioning-and-admin-ops.md](/Z:/Códigos/runv-server/docs/10-user-provisioning-and-admin-ops.md) 583 - [docs/11-daily-operations.md](/Z:/Códigos/runv-server/docs/11-daily-operations.md) 584 - [docs/05-tools-and-system-experience.md](/Z:/Códigos/runv-server/docs/05-tools-and-system-experience.md) 585 - [docs/06-site-and-apache.md](/Z:/Códigos/runv-server/docs/06-site-and-apache.md) 586 - [docs/08-email.md](/Z:/Códigos/runv-server/docs/08-email.md) 587 - [docs/09-terminal-entre.md](/Z:/Códigos/runv-server/docs/09-terminal-entre.md)