{"id":37102760,"url":"https://github.com/friddle/gotty-piko","last_synced_at":"2026-01-14T12:26:55.713Z","repository":{"id":301370904,"uuid":"1008892558","full_name":"friddle/gotty-piko","owner":"friddle","description":"一个工具合并gotty+piko服务。主打一个基于termianl的远程协助。避免用各种复杂网络下使用远程对宽带要求太高的痛苦","archived":false,"fork":false,"pushed_at":"2025-09-14T04:34:52.000Z","size":6332,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-14T06:21:10.820Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/friddle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-26T08:54:01.000Z","updated_at":"2025-07-16T08:03:00.000Z","dependencies_parsed_at":"2025-06-26T14:45:07.479Z","dependency_job_id":"23d3f85e-514f-4404-ade5-3d36221dc40a","html_url":"https://github.com/friddle/gotty-piko","commit_stats":null,"previous_names":["friddle/gotty-piko"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/friddle/gotty-piko","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friddle%2Fgotty-piko","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friddle%2Fgotty-piko/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friddle%2Fgotty-piko/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friddle%2Fgotty-piko/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/friddle","download_url":"https://codeload.github.com/friddle/gotty-piko/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friddle%2Fgotty-piko/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28420759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T12:26:54.717Z","updated_at":"2026-01-14T12:26:55.692Z","avatar_url":"https://github.com/friddle.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gotty-piko\n\n[中文文档](README_CN.md) | English\n\nAn efficient terminal-based remote assistance tool that integrates gotty and piko services. Designed for remote assistance in complex network environments, avoiding the high bandwidth dependency of traditional remote desktop solutions while eliminating the need for complex network configurations and public IP addresses.\n\n[gotty](https://github.com/sorenisanerd/gotty)\n[piko](https://github.com/andydunstall/piko)\n\n**Note:**\n1. Windows solution use [goxrdp-piko](https://github.com/friddle/goxrdp-piko)\n2. Default 24-hour auto-exit program\n\n## Features\n\n- 🚀 **Lightweight**: Terminal-based remote assistance with low resource usage\n- 🔧 **Easy Deployment**: One-click Docker deployment with simple configuration\n- 🔒 **Secure \u0026 Reliable**: Based on SSH protocol with user authentication support\n- 📱 **Cross-platform**: Supports Linux, macOS\n- 💻 **Smart Shell**: Automatically selects appropriate shell based on operating system (PowerShell for Windows, Bash for Linux)\n\n## Architecture\n\n```\nClient (gotty-piko client)\n    ↓ Local Shell\ngotty service\n    ↓ HTTP access\nBrowser terminal\n```\n\n## Quick Start\n\n### Server Deployment\n\n1. **Deploy using Docker Compose**\n\n```yaml\n# docker-compose.yaml\nversion: \"3.8\"\nservices:\n  piko:\n    image: ghcr.io/friddle/gotty-piko-server:latest\n    container_name: gotty-piko-server\n    environment:\n      - PIKO_UPSTREAM_PORT=8022\n      - LISTEN_PORT=8088\n    ports:\n      - \"8022:8022\"\n      - \"8088:8088\"\n    restart: unless-stopped\n```\n\nOr using Docker directly:\n\n```bash\ndocker run -ti --network=host --rm --name=piko-server ghcr.io/friddle/gotty-piko-server\n```\n\n\n2. **Start the service**\n\n```bash\ndocker-compose up -d\n```\n\n### Client Usage\n\n#### Linux Client\n\n```bash\n# Download client\nwget https://github.com/friddle/gotty-piko/releases/download/v1.0.1/gottyp-linux-amd64 -O ./gottyp\nchmod +x ./gottyp\n\n./gottyp --name=local --remote=192.168.1.100:8088(ServerIP:PORT)\n./gottyp --name=local --remote=192.168.1.100:8088 --pass=helloworld #http auth as name:pass --auto-exit=false(no auto exit)\n```\n\n#### macOS Client\n\n```bash\n# Download client\ncurl -L -o gottyp https://github.com/friddle/gotty-piko/releases/download/v1.0.1/gottyp-darwin-amd64\nchmod +x ./gottyp\n\n./gottyp --name=local --remote=192.168.1.100:8088(ServerIP:PORT)\n```\n\n![Client Start Screenshot](screenshot/start_cli.png)\n![Web UI Screenshot](screenshot/webui.png)\n\n## Access Methods\n\nAfter starting the client, access the corresponding terminal via:\n```\nhttp://host-server-ip:port/client-name\n```\n\nExample:\n- Server listening address: `192.168.1.100:8088` (server IP and NGINX)\n- Client name: `local`\n- Access URL: `http://192.168.1.100:8088/local`\n\n## Configuration\n\n### Client Parameters\n\n| Parameter | Description | Default | Required |\n|-----------|-------------|---------|----------|\n| `--name` | piko client identifier name | - | ✅ |\n| `--remote` | Remote piko server address (format: host:port) | - | ✅ |\n| `--terminal` | Specify terminal type to use (zsh, bash, sh, powershell, etc.) | Auto-select | ❌ |\n| `--pass` | http auth password | None mean not need auth,auth account is name | ❌ |\n| `--auto-exit` | Set auto exit | Default true, exit after 24 hours | ❌ |\n\n### Server Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `PIKO_UPSTREAM_PORT` | Piko upstream port | 8022 |\n| `LISTEN_PORT` | HTTP listen port | 8088 |\n\n### Shell Selection\n\nThe client automatically selects the appropriate shell based on the operating system:\n- **Linux**: sh\n- **macOS**: bash\n\nYou can also manually specify the terminal type using the `--terminal` parameter or `TERMINAL` environment variable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriddle%2Fgotty-piko","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriddle%2Fgotty-piko","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriddle%2Fgotty-piko/lists"}