summarylogtreecommitdiffstats
path: root/chowdy.install
blob: 1bb9c6058dec4a8cfddaa79bce1e8f41675eadd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
## chowdy.install — pacman hooks.
##
## DESIGN.md §9 says chowdyd never runs as root: we create a system user
## `chowdy` with supplementary group `video` (for /dev/video2 access).

_chowdy_user() {
    getent group chowdy >/dev/null \
        || groupadd --system chowdy
    getent passwd chowdy >/dev/null \
        || useradd --system --gid chowdy --groups video \
                   --home-dir /var/lib/chowdy --no-create-home \
                   --shell /usr/bin/nologin chowdy
    # Add chowdy to `video` group if it pre-existed without it.
    if ! id -nG chowdy | grep -qw video; then
        usermod -aG video chowdy
    fi
}

_chowdy_dirs() {
    install -d -o root     -g chowdy -m 0750 /var/lib/chowdy
    install -d -o root     -g chowdy -m 0750 /var/lib/chowdy/models
    install -d -o chowdy -g chowdy -m 0700 /var/lib/chowdy/users
}

post_install() {
    _chowdy_user
    _chowdy_dirs
    systemd-tmpfiles --create chowdy.conf 2>/dev/null || true
    systemctl daemon-reload 2>/dev/null || true

    cat <<MSG

  chowdy установлен. Что нужно сделать ВРУЧНУЮ:

    1. Скачать ONNX модели в /var/lib/chowdy/models/
       (см. /usr/share/doc/chowdy/MODELS.md)
         sudo install -m 0640 -o root -g chowdy path/to/scrfd_500m_bnkps.onnx \\
                              /var/lib/chowdy/models/detector.onnx
         sudo install -m 0640 -o root -g chowdy path/to/w600k_mbf.onnx \\
                              /var/lib/chowdy/models/embedder.onnx

    2. Включить и запустить демон (через socket activation):
         sudo systemctl enable --now chowdyd.socket
         systemctl status chowdyd

    3. Энроллмент своего лица (sudo обязателен — добавление лица
       это добавление учётного фактора):
         sudo chowdy-cli enroll --label main

    4. Проверка:
         chowdy-cli auth-test

    5. Только когда CLI auth работает — настроить PAM для sudo по
       чек-листу из /usr/share/doc/chowdy/PAM-INSTALL.md. ОБЯЗАТЕЛЬНО
       открой второй TTY с root до правки /etc/pam.d/*.

  Config: /etc/chowdy/config.toml (помечен как backup — твои правки
  переживут upgrade пакета).

MSG
}

post_upgrade() {
    _chowdy_user
    _chowdy_dirs
    systemd-tmpfiles --create chowdy.conf 2>/dev/null || true
    systemctl daemon-reload 2>/dev/null || true

    echo
    echo "  chowdy обновлён. Перезапусти демон:"
    echo "    sudo systemctl restart chowdyd"
    echo
    echo "  Если апдейт включал новую модель — energy все .enc файлы пользователей"
    echo "  получат embedder_id mismatch при auth, нужен пере-enroll."
    echo
}

pre_remove() {
    systemctl --no-reload disable --now chowdyd.socket 2>/dev/null || true
    systemctl --no-reload disable --now chowdyd.service 2>/dev/null || true
}

post_remove() {
    systemctl daemon-reload 2>/dev/null || true

    echo
    echo "  chowdy удалён. Дополнительно ВРУЧНУЮ:"
    echo "    sudo userdel chowdy"
    echo "    sudo groupdel chowdy"
    echo "    sudo rm -rf /var/lib/chowdy   # удалит модели и энроллменты"
    echo "    проверь /etc/pam.d/* — убери строки pam_chowdy.so"
    echo
}