{"id":15043407,"url":"https://github.com/elmodo7/wakeonlan-web-api","last_synced_at":"2025-04-14T20:56:55.445Z","repository":{"id":257622581,"uuid":"858743767","full_name":"elModo7/WakeOnLAN-Web-API","owner":"elModo7","description":"A web panel + REST API for monitoring and powering on and off devices from in and outside of your local network. Better used in conjunction with a VPN or my Tunnel Manager app.","archived":false,"fork":false,"pushed_at":"2024-12-04T11:32:31.000Z","size":3116,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T09:11:15.105Z","etag":null,"topics":["api","api-rest","java","rest-api","spring","spring-boot","wake-on-lan","wake-on-wan","wakeonwan","web","wol"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/pulse/wake-lan-steroids-your-homelab-v%C3%ADctor-santiago-mart%C3%ADnez-picardo-s8qje/","language":"Java","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/elModo7.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":"2024-09-17T13:10:34.000Z","updated_at":"2025-01-26T11:30:10.000Z","dependencies_parsed_at":"2024-09-17T20:13:59.466Z","dependency_job_id":"efb60085-4d32-4626-b77a-3c7d39dd448d","html_url":"https://github.com/elModo7/WakeOnLAN-Web-API","commit_stats":null,"previous_names":["elmodo7/wakeonlan-web-api"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elModo7%2FWakeOnLAN-Web-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elModo7%2FWakeOnLAN-Web-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elModo7%2FWakeOnLAN-Web-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elModo7%2FWakeOnLAN-Web-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elModo7","download_url":"https://codeload.github.com/elModo7/WakeOnLAN-Web-API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961186,"owners_count":21189991,"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":["api","api-rest","java","rest-api","spring","spring-boot","wake-on-lan","wake-on-wan","wakeonwan","web","wol"],"created_at":"2024-09-24T20:48:58.636Z","updated_at":"2025-04-14T20:56:55.425Z","avatar_url":"https://github.com/elModo7.png","language":"Java","readme":"\n  \n# Wake on LAN on steroids for your HomeLab\nThis tool will allow you to deploy your own **Web Panel + REST API** for managing your **devices's power status**.\nYou can expose it using _port-forwarding, VPN_ or _tunneling_ to allow for **Wake on Wan** capabilities.\n\n\u003e If you found this to be useful for you, a ⭐**STAR** to the repo would be awesome.\n\n### Remote Shutdown\nFrom version *0.0.8* onwards, this API is compatible with this project **[Remote Shutdown API Service](https://github.com/elModo7/Remote-Shutdown-API)**.\n\nThis tool will allow you to deploy a **REST API** for **remotely shutting down your devices**.\n\n## A bit of context\n\nToday, we are creating an _interactive web panel_ for **waking up your devices** but with a grain of salt.\n\nWhile we always talk about _WoL_, we normally don't talk about what happens when you are **outside your network**.\n\nThe so-called \"**Wake on Wan**\" is something I have been doing for quite some while now via different methods like _SSH snippets and Amazon Alexa_.\n\n![image](https://github.com/user-attachments/assets/04debbfd-25a7-426a-bbb1-f3b4da26321c)\n\nI have built a **desktop app** similar to **electron based** GUIs. I have no repo for it, but if someone is interested in it *just ask me about it*.\n\n----------\n\n### Alternatives\n\n\u003e While [_Amazon Alexa's WoL tool_](https://www.amazon.com/Oscar-Penelo-Wake-Lan-WoL/dp/B07PGKK416) is quite convenient, it's a **paid option** _once you reach a specific amount of devices or for some extra functions._\n\nI have it and still plan to use it from time to time, but adding new devices is a _bit of a hassle_, it requires **two third-party services** to be up and let's be honest, for the \"I control my devices\" kind of user, it's not a viable option at all.\n\n_JuiceSSH_ is also a very convenient way of executing a \"**wol.sh**\" script, but again, snippets are a _paid feature_.\n\nWhile **cloud** is getting more and more common, having solutions for us that we have our own **on-premise HomeLab** is always a pro, since we really \"**own**\" our infrastructure.\n\n  \n\n----------\n\n## Deploying our Application\n\n\u003e In this section, we are going to **expose** a **Spring Boot application** written in **Java 1.8** (for _legacy support_), deploy, containerize and secure its access.\n\n  \n\n### What we need\n\n-   **~~Linux\\*~~** Any computer capable of running Java (I am using an [ODROID-XU4](https://wiki.odroid.com/odroid-xu4/odroid-xu4))\n\n-   [Java JDK/JRE 1.8 or above](https://www.oracle.com/es/java/technologies/javase/javase8u211-later-archive-downloads.html)\n\n\u003e \\* Since version 0.1.2 a *Windows* computer should also be able to send WoL packets using this tool.\n\n    \n\n  \n\n### Recommended but not mandatory\n\n-   [IntelliJ IDEA](https://www.jetbrains.com/idea/)\n\n-   **Wakeonlan** packet installed *(optional since 0.1.2)*\n  \n-   **Sreeen**, **NoHup** or **Tmux** packet installed\n    \n-   Ability to **port-forward** and open up ports\n    \n-   Ability to **VPN or Tunnel** your connection\n    \n-   **Docker**\n    \n-   **Certificate or OpenSSL Self-Signed Certificate**\n-  **Maven**\n    \n\n  \n\n### Let's start with a basic setup (we will secure, dockerize... later)\n\nWe are going to first **build** our project and generate our jar file using **maven**.\nMake sure to have **maven in your PATH**.\nWe will possition ourselves at the **root of our project** and run:\n\n    \u003e mvn clean install -DskipTests\n\nThen we will copy our generated \"**wol.jar\"** file to a folder in our Linux box and switch to that folder\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQGSZ3uBdJobKg/article-inline_image-shrink_400_744/article-inline_image-shrink_400_744/0/1726571623901?e=1732147200\u0026v=beta\u0026t=7EBZgbBgvYvj5J9ga7Slj2cH7-ZJuKTxwYi_Z2-Xkow)\n\nWinSSH File Transfer\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQEkSV7th8jrIg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726570508467?e=1732147200\u0026v=beta\u0026t=A3o4PDFL-IOLdzYkEqq7pPJGhMiKBwRrvUa7tCsAlgA)\n\n  \n\nLet's make sure that we are running a **compatible Java VM** and that we have it added to _PATH_:\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQFTj4Nhld4kdw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726570454382?e=1732147200\u0026v=beta\u0026t=eFtbp4zzUu4pNcoYpjt5L-dt6EJpkwP-_7PoFlSlnhc)\n\n  \n\nLet's start a **background process** with our Spring Boot application, since I'm running SSH, I need the app to _stay deployed once the SSH session is terminated_. I will use **screen** package for this.\n\nSo we run \"**screen\"** command and skip the documentation by pressing **Enter** or **Space**.\n\nOnce _inside a screen session_ we run our ***.jar** file:\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQF94map9Ghwdg/article-inline_image-shrink_400_744/article-inline_image-shrink_400_744/0/1726571263123?e=1732147200\u0026v=beta\u0026t=Cz3FD8TXMfYN3C8QUaBpocWV7fjxGAkShkE_q24YH7A)\n\n\u003e sudo java -jar wol.jar\n\nBy accessing our **device's ip** using **port 7800** (_default_) using our favourite web browser, we will be presented with this landing login page:\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQH6-0LQ8Se0EQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726571882500?e=1732147200\u0026v=beta\u0026t=6loJYVU6Cv43-4jJBii-SUH9sci_ci580zuRemskFt4)\n\n  \n\nConfiguration for this login page can be located in our **application.properties:**\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQFdZPyEYv2hcg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726572017555?e=1732147200\u0026v=beta\u0026t=AGpRoIos6_7RT4tJGwOApmay36SYmGc31Vu2921OmEY)\n\n  \n\nOnce we successfully log in, we will see our configured machines and their online status:\n\n![Shutdown Enabled](https://github.com/user-attachments/assets/fe450184-f923-455e-b830-9ed1f77e7e4b)\n\n\nWe can then turn on our devices by clicking on the power button of each machine, we will be prompted before turning them on to prevent accidentally powering on a device.\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQGLniESHr0kIw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726572339824?e=1732147200\u0026v=beta\u0026t=a2b-q_Zkwb3xRSstsSFwKLPlRB5IQ3DrmXCTJEqLfTc)\n\n  \n\n\u003e Once our device **turns on** and is **visible network-wise** to our web server, we will see that the **icon will automatically change to a green-bar signal icon.**\n\n### Adding new devices\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQHCTnIlFNgfeQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726572679395?e=1732147200\u0026v=beta\u0026t=WKxvsYZLVdLs4NO5WFA5AUJa9kRBoJNfD100RAEd84A)\n\n  \n\nThere is a file in resources called \"**_devices.json_**\" where you can _add, edit or delete devices_.\n\nThe file follows this structure, we can omit the _status_ value but I am adding it for coherence:\n\n```\n[ {\n    \"description\": \"ARM Linux Server\",\n    \"id\": 3,\n    \"ip\": \"192.168.12.140\",\n    \"mac\": \"00:1e:06:32:1b:9e\",\n    \"name\": \"ODROID-XU4\",\n    \"status\": false\n} ]\n```\n\n\u003e We are **all done** here, we learned how to _deploy, change user/password, manage devices_ and have our service _running in the background_.\n\n  \n\n----------\n\n## Some Extras\n\n----------\n\n### Port-Forwarding\n\n\u003e In order to access our device from outside our network, which is the main attractive of our webapp, we will need to expose this port to the internet.\n\n\u003e No worries as those tech savvy will be able to implement a tunnel to their internal network so as to not expose this web panel unless you tunnel in!\n\nThe first step here is to get the **local IP** of the device running our **WoL Web Service**:\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQGv2n0IQPXR3w/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726573482244?e=1732147200\u0026v=beta\u0026t=b5FKYFHjmI-_RXnNKFL3jsGPxRy_wNxubzyo_Ltb3AI)\n\n  \n\nWe have to **add a rule on our router** targeting our **internal device's IP** address:\n\n![](https://media.licdn.com/dms/image/v2/D4E12AQEijWWCzca9xA/article-inline_image-shrink_400_744/article-inline_image-shrink_400_744/0/1726573691776?e=1732147200\u0026v=beta\u0026t=YpNAtpxLbBSAs-DZRWMen8Gz5TXUzdz8MA6KS7e4lvY)\n\n  \n\n\u003e Then, if everything went well and the _service is up_, by using our **external IP** address we should be able to **_access our Wake on Lan (Wan), web panel_**.\n\n----------\n\n### VPN / Tunneling the Connection\n\nOne of the ways we can secure our connection is by using a **VPN client** or an **SSH Tunnel**.\n\nIn this example I am going to be using **_yet another one of my tools_, SSH Tunnel Manager**.\n\nI have a user set up **only for proxying** on my **ODROID-XU4**, I will be showing an example on _how to do it with my current setup_, but since this is a bit more complex **_it's a bit out of scope for this article_**. You can _find more info_ on the **project's GitHub** pinned here or on my **web portfolio's** _personal project's section_:\n\n[https://elmodo7.github.io/](https://elmodo7.github.io/)\n\nSo, since I have a connection already configured to the same device I am deploying this tool to, I can just create a **local tunnel** with this _simple configuration_:\n![enter image description here](https://media.licdn.com/dms/image/v2/D4E12AQEBMXtbWk0HEA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726576749914?e=1732147200\u0026v=beta\u0026t=Uf9AIbtRgLvM1BFTdc1jXgFQLVmawqdEp7DDO4VQqDQ)\n\n![enter image description here](https://media.licdn.com/dms/image/v2/D4E12AQGQnkl1yvIRWQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726576686635?e=1732147200\u0026v=beta\u0026t=UFr-WcVB3Y270kKTjHO0L5TNgGCV-Z7OUuxwBeCaboQ)\nI will just click on  **Run Tunnel**  to establish a tunnel that  **secures the connection**  towards the WoL Web Panel:\n![enter image description here](https://media.licdn.com/dms/image/v2/D4E12AQGiaxP14nGn0w/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1726576674745?e=1732147200\u0026v=beta\u0026t=yTXBwhiUqH1f1v4CVRz6fzAKavRZ6B6gHJ1qbvXkFa8)\n\n  \n\nNow, by accessing [localhost](http://localhost/), via the **port 8888** we are actually accessing our device's **internal IP** at **port 7800**. So we are essentially **redirecting** our traffic **securely via SSH.**\n\n\u003e Notice, that the URL doesn't say HTTP, but **HTTPS**. In the next steps we will be learning how to add self-signed certificates to our Spring Boot application to further encrypt our transfered data.\n\n----------\n\n### Adding HTTPS to your Spring Boot Web app via OPENSSL's Self-Signed Certificate\n\nWe won't get too much into the details here on **creating a self-signed certificate** since that is _not the scope of this article_, but you can follow [this _great guide_ on **_how to create your own self-signed certificate_**](https://www.baeldung.com/openssl-self-signed-cert).\n\nIn order to **_add our newly created certificate to our Spring Boot application_** we will add this configuration to our [**application.properties**](http://application.properties/):\n\n\u003e Yes, it really was that _simple_ to **add HTTPS** to our **Web Panel**.\n\n----------\n\n### Dockerizing our Spring Boot Application\n\nIn order to **containerize and deploy** this tool, with *docker engine installed* you can **create this two files**:\n\n**File**: dockerfile\n\n    FROM openjdk:17-jdk-slim\n    ARG JAR_FILE=target/*.jar\n    COPY ${JAR_FILE} wol.jar\n    ENTRYPOINT [\"java\",\"-jar\",\"/wol.jar\"]\n\n**File**: deploy.sh\n\n    docker build -t \"wol_api\" .\n    docker run -d --name \"WoL_API\" -p 7800:7800/tcp \"wol_api\"\n\nCreate a *new folder* called **target**, and put inside your generated **wol.jar**.\n\nYou should have a structure similar to this one:\n\n![imagen](https://github.com/user-attachments/assets/c1096623-9eb1-4ce9-b2bb-4727730c8b3a)\n\n\nAdd **permission** to deploy.sh to run it:\n\n    sudo chmod 755 deploy.sh\n\nThen just **run** the deploy script:\n\n    . deploy.sh\n    \n![imagen](https://github.com/user-attachments/assets/9b983397-fbfa-4aef-9d5d-f7f190d79da9)\n\nYou should now have a *running container* called **WoL_API** and endpoint **https://0.0.0.0:7800/** should now be accessible.\n\n## Remote Shutdown API Service\nFrom version *0.0.8* onwards, this API is compatible with this project **[Remote Shutdown API Service](https://github.com/elModo7/Remote-Shutdown-API)**.\nThis tool will allow you to deploy a **REST API** for **remotely shutting down your devices**.\n\u003e You can run this **remote shutdown** service on your devices for allowing the web panel to shut down other devices on your network.\n\nIt is compatible with theese hosts:\n\n - Windows\n - Unix\n - MacOS\n - Solaris\n\n## Code diagram\n```mermaid\nflowchart TD\n    %% Top Level: Client\n    B[\"Browser (Web Panel)\"]:::client\n\n    %% Web Client Layer Subgraph\n    subgraph \"Web Client Layer\"\n        HT[\"HTML Templates\"]:::client\n        SR[\"Static Resources\"]:::client\n    end\n\n    %% Application Server Container Node\n    SBA[\"Spring Boot Application (Container)\"]:::backend\n\n    %% Backend Layers Subgraph\n    subgraph \"Controller Layer\"\n        HC[\"HomeController\"]:::controller\n        LC[\"LoginController\"]:::controller\n        DC[\"DevicesController\"]:::controller\n    end\n\n    subgraph \"Service Layer\"\n        WS[\"WakeService\"]:::service\n        WSI[\"WakeServiceImpl\"]:::service\n        PS[\"PingService\"]:::service\n    end\n\n    subgraph \"Configuration Components\"\n        AC[\"AppConfiguration\"]:::config\n        HC2[\"HttpsConfig\"]:::config\n        WC[\"WebConfig\"]:::config\n    end\n\n    %% Data/Configuration Storage Subgraph\n    subgraph \"Data \u0026 Configuration Storage\"\n        AP[\"Application Properties\"]:::data\n        DEV[\"Devices Configuration\"]:::data\n    end\n\n    %% External Integration Components Subgraph\n    subgraph \"External Integration\"\n        RD[\"Remote Shutdown API Service\"]:::external\n        RU[\"RestUtils\"]:::external\n    end\n\n    %% Deployment Artifacts Subgraph\n    subgraph \"Deployment Artifacts\"\n        MB[\"Maven Build File\"]:::deployment\n        LS[\"Linux Service Template\"]:::deployment\n    end\n\n    %% Data Flow Arrows\n    B --\u003e|\"HTTP/HTTPS\"| LC\n    B --\u003e|\"HTTP/HTTPS\"| DC\n    HT --- B\n    SR --- B\n\n    %% Controllers delegating to Service Layer\n    LC --\u003e|\"delegate\"| WS\n    DC --\u003e|\"delegate\"| WS\n    HC --\u003e|\"render view\"| HT\n\n    %% Service Layer relationships\n    WS --\u003e|\"uses\"| WSI\n    WSI --\u003e|\"reads\"| AP\n    WSI --\u003e|\"reads\"| DEV\n    WS --\u003e|\"triggers\"| RD\n    RD --\u003e RU\n\n    %% Controllers \u0026 Service access Configuration Components\n    HC2 --- WS\n    AC --- WS\n    WC --- LC\n\n    %% Deployment arrow from Spring Boot App Container\n    SBA --- MB\n    SBA --- LS\n\n    %% Link the Backend Container with its internal layers\n    SBA --- HC\n    SBA --- LC\n    SBA --- DC\n    SBA --- WS\n    SBA --- WSI\n    SBA --- PS\n    SBA --- AC\n    SBA --- HC2\n    SBA --- WC\n\n    %% Styles\n    classDef client fill:#f9e79f,stroke:#000,stroke-width:2px;\n    classDef controller fill:#aed6f1,stroke:#000,stroke-width:2px;\n    classDef service fill:#d5f5e3,stroke:#000,stroke-width:2px;\n    classDef config fill:#f5b7b1,stroke:#000,stroke-width:2px;\n    classDef data fill:#d6eaf8,stroke:#000,stroke-width:2px;\n    classDef external fill:#f0b27a,stroke:#000,stroke-width:2px;\n    classDef deployment fill:#e8daef,stroke:#000,stroke-width:2px;\n    classDef backend fill:#fad7a0,stroke:#000,stroke-width:2px;\n\n    %% Click Events for Web Client Layer\n    click HT \"https://github.com/elmodo7/wakeonlan-web-api/tree/main/src/main/resources/templates\"\n    click SR \"https://github.com/elmodo7/wakeonlan-web-api/tree/main/src/main/resources/static\"\n\n    %% Click Events for Controller Layer\n    click HC \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/controller/HomeController.java\"\n    click LC \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/controller/LoginController.java\"\n    click DC \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/controller/devices/DevicesController.java\"\n\n    %% Click Events for Service Layer\n    click WS \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/service/WakeService.java\"\n    click WSI \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/service/WakeServiceImpl.java\"\n    click PS \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/service/PingService.java\"\n\n    %% Click Events for Configuration Components\n    click AC \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/config/AppConfiguration.java\"\n    click HC2 \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/config/HttpsConfig.java\"\n    click WC \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/config/WebConfig.java\"\n\n    %% Click Events for Data/Configuration Storage\n    click AP \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/resources/application.properties\"\n    click DEV \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/resources/devices.json\"\n\n    %% Click Event for External Integration Component\n    click RU \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/src/main/java/com/em7/wol/util/RestUtils.java\"\n\n    %% Click Events for Deployment Artifacts\n    click MB \"https://github.com/elmodo7/wakeonlan-web-api/blob/main/pom.xml\"\n    click LS \"https://github.com/elmodo7/wakeonlan-web-api/tree/main/wolapi_linux_service_template\"\n```\n\n## Add WoL_API as startup service for Unix\n\nPosition yourself at the **init.d** folder:\n\n    cd /etc/init.d/\n\nPaste the contents of the file in this repo named **wolapi_linux_service_template** into a file named **wolapi**.\n\nExecute the following commands as **root**:\n\n    chmod +x wolapi\n    chown root wolapi\n    chgrp root wolapi\n    update-rc.d wolapi defaults\n    systemctl daemon-reload\n\nYou should now have a service called **wolapi** running that will start on boot.\n\n\n## Final Thoughts\n\n\u003e There are may be **many ways** to power on your devices when you are not at home, but we developed **our own solution** for this task that just works and **_provides a high security while having full control over it_**.\n\n## Sources \u0026 Inspirations\n\nNative Java WoL packets *(0.1.2)* based on: https://github.com/Cyecize/Remote-Wake-On-Lan-Web\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felmodo7%2Fwakeonlan-web-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felmodo7%2Fwakeonlan-web-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felmodo7%2Fwakeonlan-web-api/lists"}