目前已实现的功能:
> SSH 终端访问 – 功能完整的终端,支持分屏(最多 4 个面板)和标签系统
>
> SSH 隧道管理 – 创建和管理 SSH 隧道,支持自动重连和健康监控
>
> 远程文件编辑器 – 直接在远程服务器编辑文件,支持语法高亮和文件管理功能(上传、删除、重命名等)
>
> SSH 主机管理器 – 保存、组织和管理 SSH 连接,支持标签和文件夹
>
> 服务器统计 – 查看任意 SSH 服务器的 CPU、内存和硬盘使用情况
>
> 用户认证 – 安全的用户管理,支持管理员控制、OIDC 和双因素认证(TOTP)
>
> 现代化界面 – 使用 React、Tailwind CSS 和 Shadcn 构建的简洁界面
>
> 语言支持 – 内置中英文支持
计划功能:
> 增强管理员控制 – 提供更精细的用户和管理员权限控制、共享主机等功能
>
> 主题定制 – 修改所有工具的主题风格
>
> 增强终端支持 – 添加更多终端协议,如 VNC 和 RDP(有类似 Apache Guacamole 的 RDP 集成经验者请通过创建 issue 联系我)
>
> 移动端支持 – 支持移动应用或 Termix 网站移动版,让你在手机上管理服务器
安装Docker和NGINX:
apt -y update
apt -y install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh创建目录/compose文件:
mkdir /opt/termix && cd /opt/termix写入如下配置:
services:
termix:
image: ghcr.io/lukegus/termix:latest
container_name: termix
restart: unless-stopped
environment:
PORT: "8080"
ports:
- "127.0.0.1:8080:8080"
volumes:
- termix-data:/app/data
volumes:
termix-data:
driver: local启动:
docker compose up -d配置NGINX反向代理:
nano /etc/nginx/sites-available/termix写入如下配置:
upstream termix {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name termix.example.com;
client_max_body_size 0;
access_log /var/log/nginx/termix_access.log;
error_log /var/log/nginx/termix_error.log;
location / {
proxy_pass http://termix;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}启用站点:
ln -s /etc/nginx/sites-available/termix /etc/nginx/sites-enabled/termix签发SSL证书:
certbot --nginx --email example@lala.im --agree-tos --no-eff-email目前的版本有个问题,Termix在容器里面也是用的NGINX,但是容器里面的这个NGINX没有配置接收客户端的X-Forwarded-For标头,这会导致Termix获取不到客户端的真实IP,不过这问题下个版本应该就修了。
访问termix.example.com创建管理员账号,登录进去后,如果你是自用的话建议把这个用户注册的功能关闭掉:

效果:

这个文件管理的功能非常牛逼,可以预览图片、听音乐,还能播放视频:

这个文件管理目前有个问题,上传大文件的时候会提示上传失败,控制台会报一个超时错误,不知道什么时候能够修复=-=我在反代的NGINX配置了下面的内容也不行:
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;好像是程序硬编码超时时间为30秒了。。但最终文件还是上传成功了就是。。