* v1.7.2 (#364) * Feature request: Add delete confirmation dialog to file manager (#344) * Feature request: Add delete confirmation dialog to file manager - Added confirmation dialog before deleting files/folders - Users must confirm deletion with a warning message - Works for both Delete key and right-click delete - Shows different messages for single file, folder, or multiple items - Includes permanent deletion warning - Follows existing design patterns using confirmWithToast * Adds confirmation for deletion of items including folders Updates the file deletion confirmation logic to distinguish between deleting multiple items with or without folders. Introduces a new translation string for a clearer user prompt when folders and their contents are included in the deletion. Improves clarity and reduces user error when performing bulk deletions. * feat: Add Chinese translations for delete confirmation messages * Adds camelCase support for encrypted field mappings (#342) Extends encrypted field mappings to include camelCase variants to support consistency and compatibility with different naming conventions. Updates reverse mappings for Drizzle ORM to allow conversion between camelCase and snake_case field names. Improves integration with systems using mixed naming styles. * Run code cleanup, add sidebar persistence, fix OIDC credentials, force SSH password. * Fix snake case mismatching * Add real client IP * Fix OIDC credential persistence issue The issue was that OIDC users were getting a new random Data Encryption Key (DEK) on every login, which made previously encrypted credentials inaccessible. Changes: - Modified setupOIDCUserEncryption() to persist the DEK encrypted with a system-derived key - Updated authenticateOIDCUser() to properly retrieve and use the persisted DEK - Ensured OIDC users now have the same encryption persistence as password-based users This fix ensures that credentials created by OIDC users remain accessible across multiple login sessions. * Fix race condition and remove redundant kekSalt for OIDC users Critical fixes: 1. Race Condition Mitigation: - Added read-after-write verification in setupOIDCUserEncryption() - Ensures session uses the DEK that's actually in the database - Prevents data loss when concurrent logins occur for new OIDC users - If race is detected, discards generated DEK and uses stored one 2. Remove Redundant kekSalt Logic: - Removed unnecessary kekSalt generation and checks for OIDC users - kekSalt is not used in OIDC key derivation (uses userId as salt) - Reduces database operations from 4 to 2 per authentication - Simplifies code and removes potential confusion 3. Improved Error Handling: - systemKey cleanup moved to finally block - Ensures sensitive key material is always cleared from memory These changes ensure data consistency and prevent potential data loss in high-concurrency scenarios. * Cleanup OIDC pr and run prettier --------- Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com> * Fix typos and improve wording in README.md Corrected grammar and punctuation in README. * Image 7.png * Rename 3gi3b3os5psf1.png to Image 7.png * Add video demonstration to README Added a video demonstration to the README. * Delete repo-images/Image 7.png * Add files via upload * Delete repo-images/Image 7.png * Add files via upload * Initial German translation * German translation (#281) * German translation (#281) * Implementation of German language support (#281) * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Update src/locales/de/translation.json Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com> Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
137 lines
6.2 KiB
Markdown
137 lines
6.2 KiB
Markdown
# Repo Stats
|
|
|
|
<p align="center">
|
|
<img src="https://flagcdn.com/us.svg" alt="English" width="24" height="16"> English |
|
|
<a href="README-CN.md"><img src="https://flagcdn.com/cn.svg" alt="中文" width="24" height="16"> 中文</a>
|
|
</p>
|
|
|
|

|
|

|
|

|
|
<a href="https://discord.gg/jVQGdvHDrf"><img alt="Discord" src="https://img.shields.io/discord/1347374268253470720"></a>
|
|
|
|
<p align="center">
|
|
<img src="./repo-images/RepoOfTheDay.png" alt="Repo of the Day Achievement" style="width: 300px; height: auto;">
|
|
<br>
|
|
<small style="color: #666;">Achieved on September 1st, 2025</small>
|
|
</p>
|
|
|
|
#### Top Technologies
|
|
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
[](#)
|
|
|
|
<br />
|
|
<p align="center">
|
|
<a href="https://github.com/LukeGus/Termix">
|
|
<img alt="Termix Banner" src=./repo-images/HeaderImage.png style="width: auto; height: auto;"> </a>
|
|
</p>
|
|
|
|
If you would like, you can support the project here!\
|
|
[](https://github.com/sponsors/LukeGus)
|
|
|
|
# Overview
|
|
|
|
<p align="center">
|
|
<a href="https://github.com/LukeGus/Termix">
|
|
<img alt="Termix Banner" src=./public/icon.svg style="width: 250px; height: 250px;"> </a>
|
|
</p>
|
|
|
|
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 management, 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 Manager** - Manage files directly on remote servers with support for viewing and editing code, images, audio, and video. Upload, download, rename, delete, and move files seamlessly.
|
|
- **SSH Host Manager** - Save, organize, and manage your SSH connections with tags and folders, and easily save reusable login info while being able to automate the deployment of SSH keys
|
|
- **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
|
|
- **Database Encryption** - SQLite database files encrypted at rest with automatic encryption/decryption
|
|
- **Data Export/Import** - Export and import SSH hosts, credentials, and file manager data with incremental sync
|
|
- **Automatic SSL Setup** - Built-in SSL certificate generation and management with HTTPS redirects
|
|
- **Modern UI** - Clean desktop/mobile-friendly interface built with React, Tailwind CSS, and Shadcn
|
|
- **Languages** - Built-in support for English and Chinese
|
|
- **Platform Support** - Available as a web app, desktop application (Windows & Linux), and dedicated mobile app for iOS and Android. macOS and iPadOS support is planned.
|
|
|
|
# Planned Features
|
|
|
|
See [Projects](https://github.com/users/LukeGus/projects/3) for all planned features. If you are looking to contribute, see [Contributing](https://github.com/LukeGus/Termix/blob/main/CONTRIBUTING.md).
|
|
|
|
# Installation
|
|
|
|
Supported Devices:
|
|
|
|
- Website (any modern browser like Google, Safari, and Firefox)
|
|
- Windows (app)
|
|
- Linux (app)
|
|
- iOS (app)
|
|
- Android (app)
|
|
- iPadOS and macOS are in progress
|
|
|
|
Visit the Termix [Docs](https://docs.termix.site/install) for more information on how to install Termix on all platforms. Otherwise, view
|
|
a sample Docker Compose file here:
|
|
|
|
```yaml
|
|
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
|
|
```
|
|
|
|
# Support
|
|
|
|
If you need help with Termix, you can join the [Discord](https://discord.gg/jVQGdvHDrf) server and visit the support
|
|
channel. You can also open an issue or open a pull request on the [GitHub](https://github.com/LukeGus/Termix/issues)
|
|
repo.
|
|
|
|
# Show-off
|
|
|
|
<p align="center">
|
|
<img src="./repo-images/Image 1.png" width="400" alt="Termix Demo 1"/>
|
|
<img src="./repo-images/Image 2.png" width="400" alt="Termix Demo 2"/>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="./repo-images/Image 3.png" width="400" alt="Termix Demo 3"/>
|
|
<img src="./repo-images/Image 4.png" width="400" alt="Termix Demo 4"/>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="./repo-images/Image 5.png" width="400" alt="Termix Demo 5"/>
|
|
<img src="./repo-images/Image 6.png" width="400" alt="Termix Demo 6"/>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="./repo-images/Image 7.png" width="400" alt="Termix Demo 7"/>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<video src="https://github.com/user-attachments/assets/88936e0d-2399-4122-8eee-c255c25da48c" width="800" controls>
|
|
Your browser does not support the video tag.
|
|
</video>
|
|
</p>
|
|
|
|
# License
|
|
|
|
Distributed under the Apache License Version 2.0. See LICENSE for more information.
|