{"id":43388424,"url":"https://github.com/my-devices/meta-agent-docker","last_synced_at":"2026-02-02T12:03:06.424Z","repository":{"id":170587147,"uuid":"282012472","full_name":"my-devices/meta-agent-docker","owner":"my-devices","description":"macchina.io REMOTE provides secure remote access via web (HTTP), shell (SSH), remote desktop (VNC, RDP) and other protocols to IoT devices behind routers or firewalls. No port forwarding, scarce public IPv4 addresses, or complex and inflexible VPNs required. This repository contains files to build Docker images for the macchina.io REMOTE Device Agent.","archived":false,"fork":false,"pushed_at":"2025-01-29T07:58:58.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-29T08:37:14.005Z","etag":null,"topics":["docker","edge-computing","edge-device","iot","iot-device","remote-access","virtual-private-connection"],"latest_commit_sha":null,"homepage":"https://macchina.io/remote","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/my-devices.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-07-23T17:16:52.000Z","updated_at":"2025-01-29T07:59:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"dc5cdab8-0990-4167-b5ac-744d66f8bfea","html_url":"https://github.com/my-devices/meta-agent-docker","commit_stats":null,"previous_names":["my-devices/meta-agent-docker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/my-devices/meta-agent-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-devices%2Fmeta-agent-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-devices%2Fmeta-agent-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-devices%2Fmeta-agent-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-devices%2Fmeta-agent-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/my-devices","download_url":"https://codeload.github.com/my-devices/meta-agent-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/my-devices%2Fmeta-agent-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29012208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T10:37:29.253Z","status":"ssl_error","status_checked_at":"2026-02-02T10:37:28.644Z","response_time":58,"last_error":"SSL_read: 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":["docker","edge-computing","edge-device","iot","iot-device","remote-access","virtual-private-connection"],"created_at":"2026-02-02T12:03:05.472Z","updated_at":"2026-02-02T12:03:06.405Z","avatar_url":"https://github.com/my-devices.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The macchina.io REMOTE Device Agent Docker Image\n\n## About macchina.io REMOTE\n\n[macchina.io REMOTE](https://macchina.io/remote) provides secure remote access to connected devices\nvia HTTP or other TCP-based protocols and applications such as secure shell (SSH) or\nVirtual Network Computing (VNC). With macchina.io REMOTE, any network-connected device\nrunning the macchina.io REMOTE Agent software (*WebTunnelAgent*, contained in this SDK)\ncan be securely accessed remotely over the internet from browsers, mobile apps, desktop,\nserver or cloud applications.\n\nThis even works if the device is behind a NAT router, firewall or proxy server.\nThe device becomes just another host on the internet, addressable via its own URL and\nprotected by the macchina.io REMOTE server against unauthorized or malicious access.\nmacchina.io REMOTE is a great solution for secure remote support and maintenance,\nas well as for providing secure remote access to devices for end-users via web or\nmobile apps.\n\nVisit [macchina.io/remote](https://macchina.io/remote) to learn more and to register for a free account.\nSpecifically, see the [Getting Started](https://macchina.io/remote_signup.html) page and the\n[Frequently Asked Questions](https://macchina.io/remote_faq.html) for\ninformation on how to use the macchina.io REMOTE device agent.\n\nThere is also a [blog post](https://macchina.io/blog/?p=257) showing step-by-step instructions to connect a Raspberry Pi.\n\n## About This Docker Image\n\nThis repository contains a [Dockerfile](Dockerfile) and related files for building and running\nthe [WebTunnelAgent](https://github.com/my-devices/sdk/blob/master/WebTunnel/WebTunnelAgent/README.md)\ndevice agent from the\n[macchina.io REMOTE SDK](https://github.com/my-devices/sdk) in a Docker container.\n\nThe image comes with a configuration file ([WebTunnelAgent.properties](WebTunnelAgent.properties)) that allows\nconfiguring the most essential settings via environment variables.\nThe following environment variables are supported:\n\n  - `WEBTUNNEL_DOMAIN`: The domain (UUID) of the device. Must be specified.\n  - `WEBTUNNEL_DEVICE_ID`: The device ID to use. Must be specified.\n  - `WEBTUNNEL_DEVICE_NAME`: The device name shown in the web user interface. Defaults to `Unnamed Device`.\n  - `WEBTUNNEL_HOST`: The target host the agents forwards incoming tunneled connections to. Defaults to `172.17.0.1`, which\n    is the IP address of the host from within a container in Docker's default *bridge* network.\n  - `WEBTUNNEL_HTTP_PORT`: The port number of the device's web server. Defaults to 80. Set to 0 to disable HTTP access.\n  - `WEBTUNNEL_HTTPS_ENABLE`: Set to `true` if device web server requires HTTPS instead of HTTP. Defaults to `false`.\n  - `WEBTUNNEL_SSH_PORT`: The port number of the device's SSH server. Defaults to 0 (disabled).\n  - `WEBTUNNEL_VNC_PORT`: The port number of the device's VNC server. Defaults to 0 (disabled).\n  - `WEBTUNNEL_RDP_PORT`: The port number of the device's RDP server. Defaults to 0 (disabled).\n  - `WEBTUNNEL_VPN_PORT`: The port number of the device's OpenVPN server. Defaults to 0 (disabled).\n  - `WEBTUNNEL_APP_PORT`: The port number of the device's application protocol server. Defaults to 0 (disabled).\n  - `WEBTUNNEL_EXTRA_PORTS`: Additional port numbers (comma-separated) to be allowed. Defaults to empty.\n  - `WEBTUNNEL_REFLECTOR_URI`: The address of the macchina.io REMOTE Server (*reflector*).\n    Default: https://remote.macchina.io\n  - `WEBTUNNEL_PASSWORD`: Optional device password. Defaults to none.\n  - `WEBTUNNEL_CONNECT_TIMEOUT`: The timeout (in seconds) for connecting to the local (forwarded) server socket.\n    Defaults to 10 seconds.\n  - `WEBTUNNEL_LOCAL_TIMEOUT`: The timeout (in seconds) for local (forwarded) socket connections. Defaults to 7200 seconds or 2 hours.\n  - `WEBTUNNEL_REMOTE_TIMEOUT`: The timeout (in seconds) for the WebTunnel connection to the macchina.io REMOTE server (*reflector*).\n    Defaults to 300 seconds or 5 minutes.\n  - `LOGPATH`: Path to the log file (defaults to `/var/log/WebTunnelAgent.log`); can be\n    overridden to log to a different file (e.g. in a volume). Note: `LOGCHANNEL` must\n    be set to `file` for the logfile to be written.\n  - `LOGLEVEL`: Specifies the log level (`debug`, `information`, `notice`, `warning`,\n    `error`, `critical`, `fatal`, `none`). Defaults to `information`.\n  - `LOGCHANNEL`: Specifies where log messages go (`file` or `console`). Defaults to `console`.\n\n## Prerequisites\n\n  - Docker\n\n## Building\n\n```\n$ docker build . -t macchina/device-agent\n```\n\n## Running\n\nThe device agent must be able to connect to the device's web server and/or any other services\nthat are to be forwarded. So when running the container, an appropriate network configuration\nfor the container must be set up. In many cases, just using the default `bridge` network\ncreated by Docker will work. For example, assuming that we want to access a web server\nrunning on host port 8080, and also the host's SSH port:\n\n```\n$ docker run -e WEBTUNNEL_DOMAIN=eac8b99b-1866-4ef4-8f57-76b655949c29 -e WEBTUNNEL_DEVICE_ID=6e26e894-10a2-48bf-80f1-65a48527c80e -e WEBTUNNEL_HTTP_PORT=8080 -e WEBTUNNEL_SSH_PORT=22 macchina/device-agent\n```\n\nYou must replace the values for `WEBTUNNEL_DOMAIN` and `WEBTUNNEL_DEVICE_ID` with your specific values.\n\nGetting the network configuration right can be a bit tricky, as the *WebTunnelAgent* running in\nthe Docker container must be able to connect to network services provided by other containers,\nthe host running Docker, or other hosts in the network (depending on your needs).\n\nThe `WEBTUNNEL_HOST` environment variable must be set according to your Docker network configuration.\nIt defaults to `172.17.0.1`, which is the IP address of the host from within a container in Docker's\ndefault *bridge* network. This will also work for accessing network ports that have been\nexposed to the host by other containers. To access a service not exposed to the host by a container,\nset `WEBTUNNEL_HOST` to the container's IP address and make sure the `macchina/device-agent`\ncontainer can reach the other container's network.\n\nPlease refer to the Docker documentation on [networking](https://docs.docker.com/engine/network/)\nfor more information.\n\n## Running with Docker Compose\n\nA sample [`docker-compose.yml`](docker-compose.yml) file and a sample environment file\n([`sample.env`](sample.env)) are included in the repository. To launch with `docker-compose`,\nupdate the environment file and run:\n\n```\n$ docker compose --env-file=sample.env up -d\n```\n\n\n## Configuration\n\nThe most important configuration settings can be set via environment variables (see above).\nIf you need to change other configuration options, edit [WebTunnelAgent.properties](WebTunnelAgent.properties)\nand rebuild the Docker image.\nFor a description of all available configuration settings, see the\n[WebTunnelAgent README](https://github.com/my-devices/sdk/blob/master/WebTunnel/WebTunnelAgent/README.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmy-devices%2Fmeta-agent-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmy-devices%2Fmeta-agent-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmy-devices%2Fmeta-agent-docker/lists"}