Plan the server image in TODO

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
das
2026-10-19 17:03:34 +03:00
co-authored by Claude Opus 5.5
parent 5d478822ac
commit 6d53240b75
+17 -4
View File
@@ -1,20 +1,33 @@
# Das OS — що зробити далі
Стан на 2026-10-19: версія 0.2.0, етапи 1–4 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs).
Стан на 2026-10-19: версія 0.2.0, етапи 1–4 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs). Далі: етап 5, потім серверний образ (етап 6).
## Етап 5. Go-утиліти
- [ ] `das-update`: значок у треї, знімок snapper перед оновленням (`snapper create -t pre/post`), потім `xbps-install -Su` через pkexec; підказка про відкат, якщо щось зламалося.
- [ ] `das-update` одразу з консольним режимом (`das-update --cli`, без треї): він потрібен серверному образу.
- [ ] `das-welcome`: вікно першого входу (мова, оновлення, профіль розробника, посилання на довідку).
- [ ] У `das-welcome` виправити назви тек у домашньому каталозі: xdg-user-dirs 0.20 створює `Desktop`, `Documents`… англійською навіть з `LANG=uk_UA` (переклади є, але не застосовуються). З'ясувати причину або перейменовувати теки самим.
- [ ] Тести `go test ./...` для утиліт.
## Етап 6. Профіль розробника
## Етап 6. Серверний образ
Live ISO без графіки з консольним інсталятором: `dasos-server-<версія>-x86_64.iso`.
- [ ] Профіль `server/` поруч із `live/` (`packages.x86_64`, `services`, `include/`); параметризувати `scripts/container/build-iso.sh` профілем; ціль `make iso-server`. Kernel cmdline з `console=tty0 console=ttyS0` для серійної консолі.
- [ ] Метапакет `das-server`: openssh, chrony, dhcpcd (NetworkManager/nmtui на вибір), das-snapshots, docker (без podman), nftables, fail2ban, python3, lazydocker, lazygit, mc, tmux, htop, socklog-void.
- [ ] Налаштування в `das-server`: nftables «закрито все, крім SSH», jail sshd для fail2ban, sshd без входу root за паролем.
- [ ] `das-sv`: керування службами runit замість systemctl (`list`, `enable`, `disable`, `start`, `stop`, `restart`, `status`, `logs`): посилання `/etc/sv/X` → `/var/service`, логи через socklog/svlogd. Знадобиться й на десктопі.
- [ ] `das-server-install`: TUI-інсталятор на `dialog` (диск, ім'я хоста, користувач, SSH-ключ, часовий пояс, розкладка). Розмітка GPT: ESP + Btrfs з тими ж підтомами, що й у Calamares (`@`, `@snapshots`…); копіювання з `live-base` (перевикористати `mount-source`); GRUB для UEFI і BIOS.
- [ ] Винести спільну частину `postinstall` (локалі, `/tmp`, гостьові інструменти VM, `das-snapper-setup`, переписування ядер) в окремий скрипт для обох інсталяторів.
- [ ] `scripts/run-qemu.sh --serial` (`-nographic`) для перевірки серверного ISO.
- [ ] Перевірка: встановлення в QEMU, вхід по SSH, `docker run hello-world`, знімок snapper перед `das-update --cli`.
- [ ] Наостанок — розмір ISO: виміряти обидва образи, знайти, що займає найбільше (розміри пакетів через `xbps-query`, прошивки `linux-firmware-*`, локалі, документація, `-devel`-пакети, гостьові інструменти VM, компресія squashfs `xz`/`zstd`), і вирішити, що й як зменшити.
## Етап 7. Профіль розробника
- [ ] Метапакет `das-dev`: go, git, docker, podman, vscode.
- [ ] Android Studio та JetBrains на вимогу через Flatpak.
- [ ] Вибір профілю в інсталяторі (модуль packagechooser) або в `das-welcome`.
## Етап 7. CI
- [ ] Збирання пакетів і ISO в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions).
## Етап 8. CI
- [ ] Збирання пакетів і обох ISO (десктоп і сервер) в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions).
## Репозиторій пакетів
- [ ] Підпис через `xbps-rindex --sign`, ключ поза репозиторієм.