Added
Telegram lifecycle commands
Three new commands plus an enhanced /status, all with partial-name matching like /pin:
/start <name>— start a stopped container/stop <name>— graceful stop, respects each container's ownConfig.StopTimeout(from v1.17.5)/restart <name>— stop + start in one shot with a 30s grace/status <name>— per-container detail: state, health, uptime, image, host port mappings, volumes, restart policy. Comes with inline action buttons that adapt to the current state:
📊 nginx-proxy-manager ✅
State: running (healthy)
⏱ Uptime: 5d 2h
Image: jc21/nginx-proxy-manager:latest
Ports: 80→80, 443→443, 81→81
Volumes: 3
Restart policy: unless-stopped
[🔁 Restart] [🟥 Stop]
For a stopped container, the buttons become [▶️ Start]. One tap, done — no typing /restart nginx-proxy-manager from a mobile keyboard.
Web UI parity
Restart and Stop buttons on the Status page rows. Restart is visible in both Simple and Advanced UI modes (low-risk, reversible). Stop is Advanced-only with a confirm dialog because it leaves the container offline until restarted.
Catch-all for hung containers
This addresses the #11 follow-up — when a container is left in a weird state (the homarr-after-timeout case), you can /start / /stop / /restart directly from Telegram or the Web UI without leaving for Portainer.
Safety
The v1.17.7 _would_kill_self guard is reused for the new commands. /stop docksentry, /restart docksentry, their inline-button equivalents, and the Web UI Stop/Restart buttons on Docksentry's own row are all refused with a clear message pointing to /selfupdate. The lifecycle commands cannot kill the bot by accident through any surface.
Scope
Deliberately not in this release: /remove, /prune, /inspect, /exec, /stats, bulk operations on unhealthy containers. The goal is lifecycle control for containers that already exist, not "Portainer via chat" — those features stay out of scope unless interest emerges in their own issues.
docker pull amayer1983/docksentry:latest
docker compose up -d