v1.17.4

moghtech/komodov1.17.4Apr 27, 2025by mbecker20

AI Summary

Adds in-app terminal access to servers and docker exec into containers, allowing users to run TUI applications like htop and nvim directly from the Komodo interface.

Key Highlights

  • Added in-app terminal access to servers
  • Added docker exec into containers
  • Supports TUI applications like htop, ncdu, and nvim

New Features

  • Persistent shell terminals on servers
  • Docker exec support
  • Multi-user terminal viewing
  • Shell history persistence

Full Release Notes

# Changelog

## Overview
- **In app terminal access to your servers** re #142
- **docker exec** into containers re #75 
- IMPORTANT: Use `disable_terminals` (`PERIPHERY_DISABLE_TERMINALS`) in periphery config to **disable this functionality** on particular servers.

## Details

- **Server**: Adds the `Terminals` tab, which allows you to connect to and manage **multiple persistent shells** on the server.
  - Uses [portable-pty](https://docs.rs/portable-pty/0.9.0/portable_pty/) for the pseudoterminal on the backend and [xterm.js](https://xtermjs.org/) for the frontend.
  - Networked over websockets.
  - Supports TUI applications like `htop` / `ncdu` / `nvim` (and [runnables-cli](https://crates.io/crates/runnables-cli/1.3.7))
  - Each shell history / active running process is persisted on periphery after the client disconnects, making them suitable for long running tasks (you can run servers from them etc)
  - The shell starts as the same linux user that `periphery` runs as.
     - For `systemctl --user` installs, you login as **your linux user** on the host (complete with any custom prompt).
     - For **root** systemctl installs, you would login as root linux user. You should consider creating a custom `periphery` user with intented permissions, and updating your `periphery.service` systemctl config to use this user instead: [link](https://bbs.archlinux.org/viewtopic.php?id=162297)
     - For container Periphery, you connect to shell inside periphery container. The functionality will be more limited, but you can still communicate with docker socket in there (its mounted in), and `docker exec` into containers
  - The terminals can have **mutliple Komodo users connected at once**, and their view is synced.
  - If Periphery is restarted, the Terminal sessions will be lost, as they are child processes of periphery.
  - User must be admin or have `Write` permission on Server to connect to terminals
  - Use `disable_terminals` (`PERIPHERY_DISABLE_TERMINALS`) in periphery config to **disable this functionality** on particular servers.
  - Easy access to **`docker exec -it`** (container shell access) from Container page, Terminal tab

- **Deployment / Stack**: Adds the Terminal tab to Deployments and Stack services.
  - Configurable shell command inside container, eg `sh` or `bash`.

![Screenshot 2025-04-26 at 12 20 42 AM](https://github.com/user-attachments/assets/5fa56a3e-bf14-44dd-abb6-193cdcbf8b49)
![Screenshot 2025-04-27 at 3 59 41 PM](https://github.com/user-attachments/assets/483e8dd5-0739-4fc3-b63a-aedd7f8e2299)
![Screenshot 2025-04-26 at 12 20 29 AM](https://github.com/user-attachments/assets/8265c420-c829-4114-b2b1-9a784241f983)