{"id":16321217,"url":"https://github.com/beeb/remote-wol-rs","last_synced_at":"2025-10-25T19:31:17.758Z","repository":{"id":65383199,"uuid":"588195903","full_name":"beeb/remote-wol-rs","owner":"beeb","description":"A self-contained, single-binary Rust and Leptos application for remote Wake-on-LAN","archived":false,"fork":false,"pushed_at":"2023-06-29T09:25:37.000Z","size":942,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-06-29T12:27:02.487Z","etag":null,"topics":["leptos","rust","wol"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beeb.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}},"created_at":"2023-01-12T14:54:47.000Z","updated_at":"2023-06-27T17:34:21.000Z","dependencies_parsed_at":"2023-02-12T17:00:17.015Z","dependency_job_id":null,"html_url":"https://github.com/beeb/remote-wol-rs","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeb%2Fremote-wol-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeb%2Fremote-wol-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeb%2Fremote-wol-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeb%2Fremote-wol-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beeb","download_url":"https://codeload.github.com/beeb/remote-wol-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219865158,"owners_count":16555931,"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":["leptos","rust","wol"],"created_at":"2024-10-10T22:47:02.694Z","updated_at":"2025-10-25T19:31:17.388Z","avatar_url":"https://github.com/beeb.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Remote Wake-on-LAN with Rust and Leptos\n\n[![Build](https://github.com/beeb/remote-wol-rs/actions/workflows/build.yml/badge.svg)](https://github.com/beeb/remote-wol-rs/actions/workflows/build.yml)\n[![Docker](https://github.com/beeb/remote-wol-rs/actions/workflows/docker.yml/badge.svg)](https://github.com/beeb/remote-wol-rs/actions/workflows/docker.yml)\n\nA self-contained, single-binary Rust and [Leptos](https://github.com/leptos-rs/leptos) application serving a web\ninterface to wake another device on the network through its ethernet adapter using Wake-on-LAN magic packets.\n\n![a screenshot of the web-app](screenshot.png)\n\n```\nA utility to wake up a local computer remotely using a web interface.\n\nUsage: remote_wol [OPTIONS]\n\nOptions:\n  -m, --mac \u003cMAC_ADDRESS\u003e  The MAC address of the device to wake up\n  -i, --ip \u003cIP_ADDRESS\u003e    The IP of the device to wake up (for monitoring)\n  -p, --pass \u003cPASSPHRASE\u003e  The passphrase to use to wake up the device\n      --port \u003cPORT\u003e        The local port used to serve the web app [default: 3000]\n      --host               Expose the web app to the local network\n  -h, --help               Print help\n  -V, --version            Print version\n```\n\n## Quick start\n\nThe binary expects at least 2 arguments:\n\n- the MAC address of the device to wake up\n- the passphrase that will protect this interface from unauthorized use\n- (optional) the local IP address of the device to wake up, for monitoring its upstate.\n- (optional) the port where the web interface will be served (default: 3000)\n- (optional) whether to run the interface on `0.0.0.0` (accessible on the local network) or\n  `127.0.0.1` (only on the loopback interface)\n\n```bash\nremote_wol -m 01:02:03:04:05:06 -p your_l0ng_but_easy_to_remember_passphrase -i 192.168.0.123 --host\n```\n\nAlternatively, those parameters can be provided with environment variables,\neven using a `.env` file in the same directory:\n\n- `WOL_MAC_ADDRESS`\n- `WOL_PASSPHRASE`\n- `WOL_IP_ADDRESS`\n- `WOL_PORT`\n- `WOL_HOST`: e.g. `0.0.0.0` (expose to local network) or `127.0.0.1` (only on the loopback interface)\n\n### About permissions\n\nIn order for this binary to ping the target device, special permissions are required on linux and macOS.\n\nFor linux, you can add (once) the `cap_net_raw` capability flag to the binary (requires root) and then use it later in\nuser space.\n\n```bash\nsudo setcap 'cap_net_raw+epi' ./remote_wol\n# new session, can be used as user\n./remote_wol [OPTIONS]\n```\n\nFor macOS, you probably need to run the binary as root to enable the ping to work:\n\n```bash\nsudo ./remote_wol [OPTIONS]\n```\n\nOn Windows, ping should work out of the box.\n\n## Using Docker\n\nThe application is available as a [docker image](https://hub.docker.com/r/vbersier/remote-wol-rs).\n\n```bash\ndocker run --network=\"host\" -d vbersier/remote-wol-rs:latest -m 01:02:03:04:05:06 \\\n-p your_l0ng_but_easy_to_remember_passphrase -i 192.168.0.123 --host\n```\n\n### Example using docker-compose\n\n```yaml\nservices:\n  wol:\n    image: vbersier/remote-wol-rs:latest\n    restart: unless-stopped\n    # host mode is needed for UDP broadcast\n    network_mode: host\n    environment:\n      WOL_IP_ADDRESS: '192.168.0.123'\n      WOL_MAC_ADDRESS: 01:02:03:04:05:06\n      WOL_PASSPHRASE: your_l0ng_but_easy_to_remember_passphrase\n      WOL_HOST: '0.0.0.0'\n```\n\n## Accessing from the internet\n\nThis web interface is not automatically accessible through the internet. You could, for instance, forward port `3000` in\nyour firewall to the device running `remote-wol-rs`, and then accessing it through its public IP.\n\nYou could also use a dynDNS service to have a domain name always pointing to your device's public IP.\n\nFinally, you could use something like [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/)\nto setup a permanent tunnel to your local webserver through a custom domain. In this case, omitting the `--host`\nparameter is advised since the tunnel takes care of forwarding requests locally.\n\n## Building from source\n\nTo build your own executable, you need to install the rust `nightly` toolchain and `wasm32-unknown-unknown` target:\n\n```bash\nrustup toolchain install nightly\nrustup +nightly target add wasm32-unknown-unknown\n```\n\nAs a pre-build step, you need to compile the CSS using [`tailwindcss`](https://tailwindcss.com/docs/installation):\n\n```bash\ntailwindcss -i style/input.css -o style/output.css --minify\n```\n\nThen, you probably should use the `cargo-leptos` utility:\n\n```bash\ncargo install cargo-leptos\ncargo leptos build --release\n```\n\nFinally, in order for the resulting self-contained binary (`target/server/release/remote_wol`) to be able to send\nping requests, you need to either run it as root, or if you system supports capabilitity flags, to add the `cap_net_raw`\ncapability like below:\n\n```bash\nsudo setcap 'cap_net_raw+epi' ./target/server/release/remote_wol\n```\n\n## Credits\n\nThis application relies heavily on [`wol-rs`](https://github.com/fengyc/wol-rs) and\n[`Leptos`](https://github.com/leptos-rs/leptos) for its core functionality. Thank you to their respective authors and\nmaintainers!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeb%2Fremote-wol-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeeb%2Fremote-wol-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeb%2Fremote-wol-rs/lists"}