ZacharyZcR 5f5397b924 FIX: Resolve SSH session timeout and disconnection issues
Fixed SSH sessions being automatically removed after a few minutes of
inactivity, causing connection errors when users return to the interface.

## Problems Identified:

### 1. Aggressive Session Timeout
**Issue**: Sessions were cleaned up after only 10 minutes of inactivity
- Too short for typical user workflows
- No warning or graceful handling when timeout occurs
- Users would get connection errors without explanation

### 2. No Session Keepalive Mechanism
**Issue**: No frontend keepalive to maintain active sessions
- Sessions would timeout even if user was actively viewing files
- No periodic communication to extend session lifetime
- No way to detect session expiration proactively

### 3. Server-side SSH Configuration
**Issue**: While SSH had keepalive settings, they weren't sufficient
- keepaliveInterval: 30000ms (30s)
- keepaliveCountMax: 3
- But no application-level session management

## Technical Solution:

### **Extended Session Timeout**
```typescript
// Increased from 10 minutes to 30 minutes
session.timeout = setTimeout(() => {
  fileLogger.info(`Cleaning up inactive SSH session: ${sessionId}`);
  cleanupSession(sessionId);
}, 30 * 60 * 1000); // 30 minutes
```

### **Backend Keepalive Endpoint**
```typescript
// New endpoint: POST /ssh/file_manager/ssh/keepalive
app.post("/ssh/file_manager/ssh/keepalive", (req, res) => {
  const session = sshSessions[sessionId];
  session.lastActive = Date.now();
  scheduleSessionCleanup(sessionId); // Reset timeout
  res.json({ status: "success", connected: true });
});
```

### **Frontend Automatic Keepalive**
```typescript
// Send keepalive every 5 minutes
keepaliveTimerRef.current = setInterval(async () => {
  if (sshSessionId) {
    await keepSSHAlive(sshSessionId);
  }
}, 5 * 60 * 1000);
```

## Session Management Flow:

**Before (Problematic):**
1. User connects → 10-minute countdown starts
2. User leaves browser open but inactive
3. Session times out after 10 minutes
4. User returns → "SSH session not found" error
5. User forced to reconnect manually

**After (Fixed):**
1. User connects → 30-minute countdown starts
2. Frontend sends keepalive every 5 minutes automatically
3. Each keepalive resets the 30-minute timeout
4. Session stays alive as long as browser tab is open
5. Graceful handling if keepalive fails

## Benefits:
 **Extended Session Lifetime**: 30 minutes vs 10 minutes base timeout
 **Automatic Session Maintenance**: Keepalive every 5 minutes
 **Transparent to User**: No manual intervention required
 **Robust Error Handling**: Graceful degradation if keepalive fails
 **Resource Efficient**: Only active sessions consume resources
 **Better User Experience**: No unexpected disconnections

Sessions now persist for the entire duration users have the file
manager open, eliminating frustrating timeout errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 05:03:57 +08:00
2025-09-12 14:42:00 -05:00
2025-09-12 15:17:13 -05:00
2025-08-12 12:04:47 +02:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00
2025-08-07 02:20:27 -05:00
2025-08-07 02:20:27 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 15:18:07 -05:00
2025-09-13 12:13:34 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00
2025-09-12 14:42:00 -05:00

Repo Stats

English English | 中文 中文

GitHub Repo stars GitHub forks GitHub Release Discord

Repo of the Day Achievement
Achieved on September 1st, 2025

Top Technologies

React Badge TypeScript Badge Node.js Badge Vite Badge Tailwind CSS Badge Docker Badge SQLite Badge Radix UI Badge


Termix Banner

If you would like, you can support the project here!
GitHub Sponsor

Overview

Termix Banner

Termix is an open-source, forever-free, self-hosted all-in-one server management platform. It provides a web-based solution for managing your servers and infrastructure through a single, intuitive interface. Termix offers SSH terminal access, SSH tunneling capabilities, and remote file editing, with many more tools to come.

Features

  • SSH Terminal Access - Full-featured terminal with split-screen support (up to 4 panels) and tab system
  • SSH Tunnel Management - Create and manage SSH tunnels with automatic reconnection and health monitoring
  • Remote File Editor - Edit files directly on remote servers with syntax highlighting, file management features ( uploading, removing, renaming, deleting files)
  • SSH Host Manager - Save, organize, and manage your SSH connections with tags and folders
  • Server Stats - View CPU, memory, and HDD usage on any SSH server
  • User Authentication - Secure user management with admin controls and OIDC and 2FA (TOTP) support
  • Modern UI - Clean desktop/mobile friendly (in progress) interface built with React, Tailwind CSS, and Shadcn
  • Languages - Built-in support for English and Chinese
  • Improved Platform Support - Now includes an installable Electron app (in progress) for desktop, with a dedicated mobile app also planned.

Planned Features

See Projects. If you are looking to contribute, see Contributing,

Installation

Visit the Termix Docs for more information on how to install Termix. Otherwise, view a sample docker-compose file here:

services:
  termix:
    image: ghcr.io/lukegus/termix:latest
    container_name: termix
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - termix-data:/app/data
    environment:
      PORT: "8080"

volumes:
  termix-data:
    driver: local

Pre-built binaries are now available for download, including a Windows installer/portable app and a Linux portable app ( built with Electron). See Docs for details. A native iOS/Android app is planned.

Support

If you need help with Termix, you can join the Discord server and visit the support channel. You can also open an issue or open a pull request on the GitHub repo.

Show-off

Termix Demo 1 Termix Demo 2

Termix Demo 3 Termix Demo 4 Termix Demo 5

License

Distributed under the Apache License Version 2.0. See LICENSE for more information.

Description
Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.
Readme 462 MiB
2026-01-01 04:20:12 +00:00
Languages
TypeScript 98.4%
JavaScript 0.8%
CSS 0.3%
Shell 0.3%