refactor: remove restic timers, add scripts/configs, update docs

- resticprofile: remove all schedules (manual backups via backup-menu)
- resticprofile: fix hardcoded /home/ada paths → ~/
- proj(): find git repos by .git presence up to depth 4
- bootstrap.sh: add fzf, fd, bat, ripgrep, kitty, htop to packages
- README.md: rewrite for chezmoi (remove stow references)
- add: htoprc, betterbird_up.sh, kitty_up.sh, tg_up.sh
This commit is contained in:
Dmitry
2026-05-13 19:47:46 +03:00
parent babe53d929
commit 02b0ca610d
8 changed files with 157 additions and 139 deletions
+62 -127
View File
@@ -1,156 +1,91 @@
# Dotfiles
Мой репозиторий конфигурационных файлов.
Мой репозиторий конфигурационных файлов. Управляется **chezmoi**.
## Быстрый старт
## Установка ssh-ключей через bitwarden-cli
```bash
git clone <repository-url> ~/dotfiles
~/.config/chezmoi/key.txt # восстановить age-ключ из Bitwarden (см. ниже)
cd ~/dotfiles && ./bootstrap.sh
```
`bootstrap.sh` устанавливает зависимости и запускает `chezmoi apply`.
## Age-ключ (шифрование секретов)
Ключ хранится в Bitwarden (`pass.ada-dev.ru`):
```bash
bw config server https://pass.ada-dev.ru
bw login
bw get item <название ключа> | jq -r '.sshKey.privateKey' > ~/.ssh/id_ed25519
bw get item "chezmoi-age-key" | jq -r '.notes' > ~/.config/chezmoi/key.txt
chmod 600 ~/.config/chezmoi/key.txt
```
## Установка
Без ключа chezmoi не расшифрует SSH-ключи и пароль restic.
## SSH-ключи
Хранятся зашифрованными в репо (`private_dot_ssh/encrypted_private_*.age`).
chezmoi расшифровывает их при `apply`. Дополнительных действий не нужно.
Если нужно добавить ключ вручную из Bitwarden:
```bash
git clone <repository-url> ~/.dotfiles
cd ~/.dotfiles
mkdir -p ~/.ssh/sockets
stow -t ~ */
bw get item <название> | jq -r '.sshKey.privateKey' > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
```
## Resticprofile: Резервные копии
Конфигурация автоматического резервного копирования данных на Яндекс.Диск через rclone.
### На уже настроенной машине
После синхронизации dotfiles резервные копии начнут создаваться автоматически по расписанию. Возможные команды:
**Статус и информация:**
## Управление dotfiles
```bash
resticprofile status # список всех профилей и их статуса
resticprofile profiles # показать все доступные профили
resticprofile show [profile] # подробно о профиле
chezmoi apply # применить изменения из репо
chezmoi diff # посмотреть что изменится
chezmoi status # краткий статус
chezmoi re-add # синхронизировать после ручных правок в ~
chezmoi add ~/.some/file # начать отслеживать новый файл
```
**Создание резервной копии вручную:**
## Резервные копии (restic)
Бэкапы запускаются вручную через `backup-menu` (алиас `bm`).
Хранилище — Яндекс.Диск через rclone remote `yadisk`, зеркало — `cloud-pc`.
| Профиль | Источник |
|---|---|
| `dotfiles` | `~/.dotfiles`, `~/.config`, `~/.ssh` |
| `projects` | `~/Documents/Projects` |
| `vaults` | `~/Documents/Vaults` |
| `files` | `~/Documents/Files` |
| `pictures` | `~/Pictures` |
```bash
resticprofile backup # backup для всей группы 'all'
resticprofile -n dotfiles backup # backup определённого профиля (напр. dotfiles)
resticprofile -n projects backup # backup проектов
bm # интерактивное меню
resticprofile -n dotfiles backup # вручную
resticprofile -n dotfiles snapshots # просмотр снапшотов
resticprofile -n dotfiles restore latest /tmp/restore
```
**Просмотр снимков:**
На новой машине нужно настроить rclone один раз:
```bash
resticprofile snapshots # список всех снимков
resticprofile -n dotfiles snapshots # снимки конкретного профиля
rclone config # добавить remote 'yadisk' и 'cloud-pc'
```
**Очистка старых снимков:**
## Структура репо
```bash
resticprofile forget # удалить старые снимки согласно политике
resticprofile -n dotfiles forget # очистить конкретный профиль
```
**Восстановление данных:**
```bash
resticprofile -n dotfiles restore latest /tmp/restore # восстановить в /tmp/restore
resticprofile -n dotfiles restore <snapshot-id> /path # конкретный снимок
dot_config/ → ~/.config/
zsh/ → zsh конфиг (модульный, загружается из .zshrc)
nvim/ → LazyVim
kitty/ → основной терминал
alacritty/ → запасной терминал
resticprofile/ → конфиг бэкапов
...
private_dot_ssh/ → ~/.ssh/ (права 700/600, ключи зашифрованы)
dot_local/bin/ → ~/.local/bin/ (пользовательские скрипты)
dot_gitconfig → ~/.gitconfig
dot_tmux.conf.local → ~/.tmux.conf.local (кастомизация oh-my-tmux)
configs/ → служебные конфиги вне chezmoi (danted, awg, telemt)
```
**Проверка целостности:**
```bash
resticprofile -n dotfiles check # проверить репозиторий
```
### На новой машине
1. **Клонизация dotfiles:**
```bash
git clone <repository-url> ~/.dotfiles
cd ~/.dotfiles
mkdir -p ~/.ssh/sockets
```
2. **Развёртывание конфигов (stow):**
```bash
stow -t ~ */
```
Это разместит конфиги из `restic/.config/resticprofile/` в `~/.config/resticprofile/`
3. **Установка rclone и resticprofile** (если нет):
```bash
# rclone (для работы с облаком)
curl https://rclone.org/install.sh | sudo bash
# resticprofile (управление бэкапами)
# или через пакетный менеджер вашей системы
```
t
4. **Настройка rclone** (нужно один раз):
```bash
rclone config
# Добавить remote 'yadisk' для Яндекс.Диска
# Использовать OAuth или AppPassword для авторизации
```
5. **Установка пароля для репозитория restic:**
Убедитесь, что файл `~/.config/resticprofile/pass.txt` содержит пароль для шифрования бэкапов (он же, что на основной машине).
6. **Проверка подключения к существующему репозиторию:**
```bash
resticprofile -n dotfiles snapshots # проверить доступ к репозиторию
```
Если вывод показывает список снимков — подключение работает.
7. **Восстановление данных из последних бэкапов:**
```bash
# Восстановить kritical данные (dotfiles, конфиги, SSH)
resticprofile -n dotfiles restore latest /
# Или выборочно в временную папку для проверки
resticprofile -n dotfiles restore latest /tmp/restore
```
8. **Включение в systemd** (опционально, для автозапуска):
```bash
resticprofile install
resticprofile schedule
```
### Структура профилей
| Профиль | Источник | Частота | Назначение |
| ------------------ | ------------------------------ | ---------------------------------------------- | -------------------------------------------------------------- |
| **dotfiles** | ~/.dotfiles, ~/.config, ~/.ssh | Каждые 6 часов | Критичные конфигурационные файлы |
| **projects** | ~/Documents/Projects | Каждый час | Код и проекты (меняются часто) |
| **vaults** | ~/Documents/Vaults | Каждый час | Важные данные и пароли |
| **files** | ~/Documents/Files | Ежедневно в 02:15 | Документы |
| **pictures** | ~/Pictures, ~/Videos | По групповому расписанию | Фотографии и видео |
**Политика хранения:**
- Последние 10 снимков (общая)
- Ежедневные (7 дней)
- Еженедельные (4 недели)
- Ежемесячные (6 месяцев)
- Профиль `dotfiles`: более агрессивная политика (28 часов, 30 дней, 12 месяцев)
### Полезные параметры конфига
- `check-before: false` — не проверять целостность перед бэкапом (для скорости)
- `use-fs-snapshot: false` — не использовать снимки файловой системы
- `.resticignore` — исключает тяжёлые зависимости (node_modules, venv, target и т.д.)