Pitch: lazyovpn - um TUI pra gerenciar OpenVPN no Linux (estilo lazygit/lazydocker)
Toda vez que eu precisava subir uma VPN OpenVPN no Linux era a mesma dança:
sudo openvpn --config algum-arquivo.ovpn, cola a senha, e o terminal fica
preso cuspindo log. Quer trocar de conexão? Ctrl+C, acha o outro arquivo,
repete. Quer saber se subiu mesmo? Lê o log na mão procurando
"Initialization Sequence Completed".
Cansei e fiz um TUI pra isso, no espírito do lazygit/lazydocker: o lazyovpn.
Repo: https://github.com/omartelo/lazyovpn
O que ele faz
- Lista os configs que você já tem (
/etc/openvpn/client,/etc/openvpne
~/.config/lazyovpn/connections). - Conecta/desconecta com uma tecla. Badge de estado mostrando
connecting → connected → disconnected/error, ele detecta o "connected"
de verdade lendo o sinal do próprio openvpn, não pelo processo ter subido. - Log ao vivo por conexão, num painel que dá pra rolar pra trás (
tabpra focar,
ou a rodinha do mouse). - Pergunta usuário/senha nos configs
auth-user-pass. A senha fica mascarada e
nunca vai pra arquivo em texto puro. Se você quiser, dá pra salvar no
keyring do SO (Secret Service/libsecret) pra pular o prompt na próxima, é
opt-in explícito, nunca por padrão. - Importa um
.ovpnnovo pelo seletor de arquivos nativo (zenity/kdialog).
Decisão de design
O TUI roda sem privilégio. Só o openvpn sobe como root, via pkexec
(polkit). O processo da interface nunca escala privilégio, essa fronteira é o
projeto inteiro. Você digita a senha do polkit no prompt gráfico de sempre, e o
processo que fica com root é só o openvpn, não a aplicação.
Senha de VPN segue a mesma régua: enquanto a conexão está de pé, as credenciais
vão pra um arquivo 0600 em tmpfs ($XDG_RUNTIME_DIR), apagado quando a conexão
cai. Em disco durável, em texto puro, nunca. A única persistência possível é o
keyring, e só quando você liga o toggle.
Stack
Go + Cobra (CLI) + Bubble Tea/Lipgloss v2 (TUI). Keyring via
zalando/go-keyring (D-Bus puro, sem cgo).
Requisitos / limitações honestas
- Linux com
openvpnepkexecno PATH. - Uma conexão por vez (por enquanto).
pkexechard-coded, sem fallback prasudo.- Auth é só
auth-user-pass(usuário+senha) — sem passphrase de chave ainda.
Como Instalar
go install github.com/omartelo/lazyovpn@latest
Ou pega um binário pronto em: https://github.com/omartelo/lazyovpn/releases.
É isso. Fiz pra mim, mas se você vive trocando de VPN no Linux talvez te sirva, ou, se você quer ver rodar em Mac e Windows...
Feedback, issue e PR são bem-vindos.