Empacotando o Tesseras para Debian
-2026-02-16
-O Tesseras agora inclui um pacote .deb para Debian e Ubuntu. Este post explica
-como compilar e instalar o pacote a partir do código-fonte usando cargo-deb.
Pré-requisitos
-Você precisa de uma toolchain Rust funcional e das bibliotecas de sistema -necessárias:
-sudo apt install build-essential pkg-config libsqlite3-dev
-rustup toolchain install stable
-cargo install cargo-deb
-
-Compilando
-Clone o repositório e execute a recipe just deb:
git clone https://git.sr.ht/~ijanc/tesseras
-cd tesseras
-just deb
-
-Essa recipe faz três coisas:
--
-
- Compila
tesd(o daemon) etes(o CLI) em modo release com -cargo build --release
- - Gera completions de shell para bash, zsh e fish a partir do binário
tes
- - Empacota tudo em um arquivo
.debcom -cargo deb -p tesseras-daemon --no-build
-
O resultado é um arquivo .deb em target/debian/.
Instalando
-sudo dpkg -i target/debian/tesseras-daemon_*.deb
-
-Se houver dependências faltando, corrija com:
-sudo apt install -f
-
-Configuração pós-instalação
-O script postinst cria automaticamente um usuário de sistema tesseras e o
-diretório de dados /var/lib/tesseras. Para usar o CLI sem sudo, adicione seu
-usuário ao grupo:
sudo usermod -aG tesseras $USER
-
-Faça logout e login novamente, depois inicie o daemon:
-sudo systemctl enable --now tesd
-
-O que o pacote inclui
-| Caminho | Descrição |
|---|---|
/usr/bin/tesd | Daemon do nó completo |
/usr/bin/tes | Cliente CLI |
/etc/tesseras/config.toml | Configuração padrão (marcado como conffile) |
/lib/systemd/system/tesd.service | Unit systemd com hardening de segurança |
| Completions de shell | bash, zsh e fish |
Como o cargo-deb funciona
-Os metadados de empacotamento ficam em crates/tesseras-daemon/Cargo.toml na
-seção [package.metadata.deb]. Essa seção define:
-
-
- depends — dependências em tempo de execução:
libc6elibsqlite3-0
- - assets — arquivos incluídos no pacote (binários, config, unit systemd, -completions de shell) -
- conf-files — arquivos tratados como configuração (preservados na -atualização) -
- maintainer-scripts — scripts
postinstepostrmem -packaging/debian/scripts/
- - systemd-units — integração automática com systemd -
O script postinst cria o usuário de sistema tesseras e o diretório de dados
-na instalação. O script postrm remove o usuário, grupo e diretório de dados
-apenas no purge (não na remoção simples).
Hardening do systemd
-A unit tesd.service inclui diretivas de hardening de segurança:
NoNewPrivileges=true
-ProtectSystem=strict
-ProtectHome=true
-ReadWritePaths=/var/lib/tesseras
-PrivateTmp=true
-PrivateDevices=true
-ProtectKernelTunables=true
-ProtectControlGroups=true
-RestrictSUIDSGID=true
-MemoryDenyWriteExecute=true
-
-O daemon roda como o usuário não-privilegiado tesseras e só pode escrever em
-/var/lib/tesseras.
Deploy para um servidor remoto
-O justfile inclui uma recipe deploy para enviar o .deb a um host remoto:
just deploy bootstrap1.tesseras.net
-
-Isso compila o .deb, copia via scp, instala com dpkg -i e reinicia o
-serviço tesd.
Atualizando
-Depois de baixar novas mudanças, basta rodar just deb novamente e reinstalar:
git pull
-just deb
-sudo dpkg -i target/debian/tesseras-daemon_*.deb
-
-
-