{"id":17398226,"url":"https://github.com/codeman99/tunnel-manager","last_synced_at":"2025-03-27T22:16:01.732Z","repository":{"id":76814049,"uuid":"597465937","full_name":"CodeMan99/tunnel-manager","owner":"CodeMan99","description":"A web UI for ssh tunnel management.","archived":false,"fork":false,"pushed_at":"2024-05-16T14:50:08.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-02T00:31:37.055Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodeMan99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2023-02-04T16:34:41.000Z","updated_at":"2024-05-16T14:50:12.000Z","dependencies_parsed_at":"2024-05-16T15:56:47.718Z","dependency_job_id":"b643c66b-a864-43e6-91f2-182a8153798d","html_url":"https://github.com/CodeMan99/tunnel-manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeMan99%2Ftunnel-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeMan99%2Ftunnel-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeMan99%2Ftunnel-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeMan99%2Ftunnel-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeMan99","download_url":"https://codeload.github.com/CodeMan99/tunnel-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245931897,"owners_count":20695964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-10-16T14:42:28.230Z","updated_at":"2025-03-27T22:16:01.619Z","avatar_url":"https://github.com/CodeMan99.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tunnel Manager\n\nA docker compose application to manage ssh tunnels.\n\n## Work in Progress\n\nThis is not yet complete. Very happy to accept pull requests or feedback!\n\n## Application Design\n\nThere are three parts to this application. All sub-applications are in a container.\n\n### Browser UI\n\n**Location**: `src/web`\n\nUser interface to create, stop, and get the status of ssh tunnels.\n\nThis is not finished. The intention is to use nginx for serving static content.\n\nThe nginx container will also serve as the proxy server to other parts of the application.\n\n### HTTP API\n\n**Location**: `src/app`\n\nAn Express implemention. Simple HTTP routes only.\n\n* `GET /tunnels` - a list of currently open tunnels.\n* `PUT /tunnels/:remoteName` - start a ssh tunnel connection.\n* `GET /tunnels/:remoteName` - check status of ssh session.\n* `DELETE /tunnels/:remoteName` - request exit of ssh session.\n\n### Tunnel Server\n\n**Location**: `src/tunnel`\n\nA bash script that uses `nc` as an interface to call `ssh` commands.\n\nThis is the ssh tunnel _persistence_ layer. In this container you will need to configure your ssh client with a volume mounted at `/home/tunnel/.ssh`. Currently, the user is static, with `uid=1000; gid=1000`.\n\n### Logging\n\n**Location**: `docker-compose.yml`\n\nA [datalust/seq](https://datalust.co) container is configured for logging. All other containers can send structured logs here. The `src/web` container will also proxy the admin UI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeman99%2Ftunnel-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeman99%2Ftunnel-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeman99%2Ftunnel-manager/lists"}