From b79aa39f6dc2658b54995786a468fd920562516c Mon Sep 17 00:00:00 2001 From: konsthol Date: Thu, 19 Dec 2024 19:14:43 +0200 Subject: [PATCH] Fixing Greg's bug. --- gophermap | 1 + images/pic-selected-19-12-24_19-10-42.png | Bin 0 -> 48911 bytes index.gmi | 1 + index.html | 10 +- log/the_magic_of_wake_on_lan-19-12-2024.gmi | 19 ++++ log/the_magic_of_wake_on_lan-19-12-2024.html | 93 +++++++++++++++++++ log_archive.gmi | 4 + log_archive.html | 9 +- rss.xml | 61 ++++++++++++ 9 files changed, 191 insertions(+), 7 deletions(-) create mode 100644 images/pic-selected-19-12-24_19-10-42.png create mode 100644 log/the_magic_of_wake_on_lan-19-12-2024.gmi create mode 100644 log/the_magic_of_wake_on_lan-19-12-2024.html diff --git a/gophermap b/gophermap index 38d8026..d406732 100644 --- a/gophermap +++ b/gophermap @@ -58,6 +58,7 @@ i konsthol.eu 70 i konsthol.eu 70 i## Log konsthol.eu 70 i konsthol.eu 70 +119-12-2024 - The magic of Wake-On-LAN gemini://konsthol.eu/log/the_magic_of_wake_on_lan-19-12-2024.gmi konsthol.eu 70 125-02-2023 - WebCall gemini://konsthol.eu/log/webcall-25-02-2023.gmi konsthol.eu 70 117-08-2022 - wpgtk is just more convenient gemini://konsthol.eu/log/choose_wpgtk_over_just_pywal-17-08-2022.gmi konsthol.eu 70 112-09-2021 - Awesome file sharing tool gemini://konsthol.eu/log/easy_file_sharing-12-09-2021.gmi konsthol.eu 70 diff --git a/images/pic-selected-19-12-24_19-10-42.png b/images/pic-selected-19-12-24_19-10-42.png new file mode 100644 index 0000000000000000000000000000000000000000..07b30e683c9d2d979b78f22d0d3878e72143ed25 GIT binary patch literal 48911 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 literal 0 HcmV?d00001 diff --git a/index.gmi b/index.gmi index a204830..5aa6995 100644 --- a/index.gmi +++ b/index.gmi @@ -58,6 +58,7 @@ My Thesis can be found here ## Log +=> /log/the_magic_of_wake_on_lan-19-12-2024.gmi 19-12-2024 - The magic of Wake-On-LAN => /log/webcall-25-02-2023.gmi 25-02-2023 - WebCall => /log/choose_wpgtk_over_just_pywal-17-08-2022.gmi 17-08-2022 - wpgtk is just more convenient => /log/easy_file_sharing-12-09-2021.gmi 12-09-2021 - Awesome file sharing tool diff --git a/index.html b/index.html index 788c936..18f9d17 100644 --- a/index.html +++ b/index.html @@ -77,8 +77,10 @@ href="https://hellanicus.lib.aegean.gr/handle/11610/26621">SecDep

href="/Up/up.html">What time did my laptop wake up today?
Why are the colors like this?

Log

-

25-02-2023 - WebCall
-17-08-2022 - +

19-12-2024 - +The magic of Wake-On-LAN
25-02-2023 - WebCall
17-08-2022 - wpgtk is just more convenient
12-09-2021 - Awesome file sharing tool
I accept donations for any reason

Donate

Daily Unique Visitors

-Thursday 19/12/24 18:12:27 -9 +Thursday 19/12/24 19:13:11 +11

Also on the web 🕸️

http website

diff --git a/log/the_magic_of_wake_on_lan-19-12-2024.gmi b/log/the_magic_of_wake_on_lan-19-12-2024.gmi new file mode 100644 index 0000000..6421dc4 --- /dev/null +++ b/log/the_magic_of_wake_on_lan-19-12-2024.gmi @@ -0,0 +1,19 @@ +> DATE: Thu 19 Dec 2024 18:35 By: konsthol@pm.me + +# The magic of Wake-On-LAN + +Years ago, some good friends of mine gifted me for my birthday, a Raspberry Pi 4 with 2GB of ram. It was and still is the most thoughful gift anyone has ever gotten for me. It aligns perfectly with my hobbies and I used it for a long time as a VPN server using WireGuard and I also played around with Pi-hole for a while as a network-wide ad blocker. + +Eventually I became more interested in cloud computing and started self hosting many services on a VPS that I rent through MVPS. It has 4GB of ram and has currently many of the services I use in a day-to-day basis like my Gitea server, Searx, NTFY and many others. While it was definetely doable for the Raspberry Pi to host these, the 2GB of ram would not allow for every service to be run at the same time. You see, my friends were lucky to even find one because it was in the middle of the chip shortage problems. + +One day as I was thinking about what kind of projects could I utilize a single Raspberry Pi for, it hit me. A simple Wake-On-LAN server. It requires almost no resources as it just needs to stay on and send out wol packages when I need it to. The Raspberry Pi is connected using Wi-Fi to the same network as my laptop. Usually if I wanted to wake my laptop up using Wake-On-LAN I would need to have it plugged with an ethernet cable with the router. However, the Raspberry Pi has an ethernet port and a cable has two ends. Which lead me to try to connect one end to the Pi and another one to the laptop. At first I begun with a simple shell script that used etherwake. A simple command-line tool that sends Wake-On-LAN Magic Packets. It worked like a charm. I had enabled Wake-On-LAN in my laptop's BIOS, it was enabled on the operating system, which I checked using ethtool and it was super easy to remotely wake my laptop up using a Termux shortcut on my phone which used ssh to connect to the Raspberry Pi and from there execute the etherwake command. + +That setup was wonderful but I wanted to make it even better. It wasn't actually a Wake-On-LAN server at this point. The only service that was running on the Pi was SSH and I just used a command to wake just my laptop up. So after some research I came across Flask. With Flask I managed to make an actual server that used routes, authentication, logging rate limits and everything needed to make it robust, secure and functional. The main reason I currently prefer my project over etherwake, even though etherwake is still a great tool that follows the Unix philosophy "Do one thing and do it well", is because of it's dynamic nature. I can configure a .env file with many device's MAC addresses and have as many possible routes as the number of the devices. So for a laptop and a desktop I have LAPTOP_MAC="itsmac" and DESKTOP_MAC="itsmac" and can wake them up using http requests in the route /wol/laptop and /wol/desktop respectively. + +=> /images/pic-selected-19-12-24_19-10-42.png Mascot + +I would suggest anyone to take a look at my project's repo and if they find that it fits their needs, use the setupSingleBinary.sh script to grab the latest executable. The repo is over at + +=> https://git.konsthol.eu/konsthol/WOL-Ly WOL-Ly + +=> .. diff --git a/log/the_magic_of_wake_on_lan-19-12-2024.html b/log/the_magic_of_wake_on_lan-19-12-2024.html new file mode 100644 index 0000000..b625e44 --- /dev/null +++ b/log/the_magic_of_wake_on_lan-19-12-2024.html @@ -0,0 +1,93 @@ + + + + Konsthol + + + + + + + + + +
+
+

DATE: Thu 19 Dec 2024 18:35 By: konsthol@pm.me

+
+

The magic of Wake-On-LAN

+

Years ago, some good friends of mine gifted me for my birthday, a +Raspberry Pi 4 with 2GB of ram. It was and still is the most thoughful +gift anyone has ever gotten for me. It aligns perfectly with my hobbies +and I used it for a long time as a VPN server using WireGuard and I also +played around with Pi-hole for a while as a network-wide ad blocker.

+

Eventually I became more interested in cloud computing and started +self hosting many services on a VPS that I rent through MVPS. It has 4GB +of ram and has currently many of the services I use in a day-to-day +basis like my Gitea server, Searx, NTFY and many others. While it was +definetely doable for the Raspberry Pi to host these, the 2GB of ram +would not allow for every service to be run at the same time. You see, +my friends were lucky to even find one because it was in the middle of +the chip shortage problems.

+

One day as I was thinking about what kind of projects could I utilize +a single Raspberry Pi for, it hit me. A simple Wake-On-LAN server. It +requires almost no resources as it just needs to stay on and send out +wol packages when I need it to. The Raspberry Pi is connected using +Wi-Fi to the same network as my laptop. Usually if I wanted to wake my +laptop up using Wake-On-LAN I would need to have it plugged with an +ethernet cable with the router. However, the Raspberry Pi has an +ethernet port and a cable has two ends. Which lead me to try to connect +one end to the Pi and another one to the laptop. At first I begun with a +simple shell script that used etherwake. A simple command-line tool that +sends Wake-On-LAN Magic Packets. It worked like a charm. I had enabled +Wake-On-LAN in my laptop’s BIOS, it was enabled on the operating system, +which I checked using ethtool and it was super easy to remotely wake my +laptop up using a Termux shortcut on my phone which used ssh to connect +to the Raspberry Pi and from there execute the etherwake command.

+

That setup was wonderful but I wanted to make it even better. It +wasn’t actually a Wake-On-LAN server at this point. The only service +that was running on the Pi was SSH and I just used a command to wake +just my laptop up. So after some research I came across Flask. With +Flask I managed to make an actual server that used routes, +authentication, logging rate limits and everything needed to make it +robust, secure and functional. The main reason I currently prefer my +project over etherwake, even though etherwake is still a great tool that +follows the Unix philosophy “Do one thing and do it well”, is because of +it’s dynamic nature. I can configure a .env file with many device’s MAC +addresses and have as many possible routes as the number of the devices. +So for a laptop and a desktop I have LAPTOP_MAC=“itsmac” and +DESKTOP_MAC=“itsmac” and can wake them up using http requests in the +route /wol/laptop and /wol/desktop respectively.

+

Mascot

+

I would suggest anyone to take a look at my project’s repo and if +they find that it fits their needs, use the setupSingleBinary.sh script +to grab the latest executable. The repo is over at

+

WOL-Ly

+

..

+
+ +
+ +
+ + diff --git a/log_archive.gmi b/log_archive.gmi index 5dcb7c3..88f6f73 100644 --- a/log_archive.gmi +++ b/log_archive.gmi @@ -3,6 +3,10 @@ Previous Log entries are archived here. That's why it's called the LOG ARCHIVE. # Logs +## 2024 + +=> /log/the_magic_of_wake_on_lan-19-12-2024.gmi 19-12-2024 - The magic of Wake-On-LAN + ## 2023 => /log/webcall-25-02-2023.gmi 25-02-2023 - WebCall diff --git a/log_archive.html b/log_archive.html index 5f9dcd1..b7dc853 100644 --- a/log_archive.html +++ b/log_archive.html @@ -34,14 +34,17 @@

Previous Log entries are archived here. That’s why it’s called the LOG ARCHIVE.

Logs

-

2023

+

2024

+

19-12-2024 - +The magic of Wake-On-LAN

+

2023

25-02-2023 - WebCall

-

2022

+

2022

17-08-2022 - wpgtk is just more convenient

-

2021

+

2021

12-09-2021 - Awesome file sharing tool
02-09-2021 - Just a diff --git a/rss.xml b/rss.xml index 11a4e76..bb57b92 100644 --- a/rss.xml +++ b/rss.xml @@ -6,6 +6,67 @@ https://konsthol.eu/rss.xml + +The magic of Wake-On-LAN +https://konsthol.eu/log/the_magic_of_wake_on_lan-19-12-2024.html +Thu, 19 Dec 2024 + +

DATE: Thu 19 Dec 2024 18:35 By: konsthol@pm.me

+ +

The magic of Wake-On-LAN

+

Years ago, some good friends of mine gifted me for my birthday, a +Raspberry Pi 4 with 2GB of ram. It was and still is the most thoughful +gift anyone has ever gotten for me. It aligns perfectly with my hobbies +and I used it for a long time as a VPN server using WireGuard and I also +played around with Pi-hole for a while as a network-wide ad blocker.

+

Eventually I became more interested in cloud computing and started +self hosting many services on a VPS that I rent through MVPS. It has 4GB +of ram and has currently many of the services I use in a day-to-day +basis like my Gitea server, Searx, NTFY and many others. While it was +definetely doable for the Raspberry Pi to host these, the 2GB of ram +would not allow for every service to be run at the same time. You see, +my friends were lucky to even find one because it was in the middle of +the chip shortage problems.

+

One day as I was thinking about what kind of projects could I utilize +a single Raspberry Pi for, it hit me. A simple Wake-On-LAN server. It +requires almost no resources as it just needs to stay on and send out +wol packages when I need it to. The Raspberry Pi is connected using +Wi-Fi to the same network as my laptop. Usually if I wanted to wake my +laptop up using Wake-On-LAN I would need to have it plugged with an +ethernet cable with the router. However, the Raspberry Pi has an +ethernet port and a cable has two ends. Which lead me to try to connect +one end to the Pi and another one to the laptop. At first I begun with a +simple shell script that used etherwake. A simple command-line tool that +sends Wake-On-LAN Magic Packets. It worked like a charm. I had enabled +Wake-On-LAN in my laptop’s BIOS, it was enabled on the operating system, +which I checked using ethtool and it was super easy to remotely wake my +laptop up using a Termux shortcut on my phone which used ssh to connect +to the Raspberry Pi and from there execute the etherwake command.

+

That setup was wonderful but I wanted to make it even better. It +wasn’t actually a Wake-On-LAN server at this point. The only service +that was running on the Pi was SSH and I just used a command to wake +just my laptop up. So after some research I came across Flask. With +Flask I managed to make an actual server that used routes, +authentication, logging rate limits and everything needed to make it +robust, secure and functional. The main reason I currently prefer my +project over etherwake, even though etherwake is still a great tool that +follows the Unix philosophy “Do one thing and do it well”, is because of +it’s dynamic nature. I can configure a .env file with many device’s MAC +addresses and have as many possible routes as the number of the devices. +So for a laptop and a desktop I have LAPTOP_MAC=“itsmac” and +DESKTOP_MAC=“itsmac” and can wake them up using http requests in the +route /wol/laptop and /wol/desktop respectively.

+

Mascot

+

I would suggest anyone to take a look at my project’s repo and if +they find that it fits their needs, use the setupSingleBinary.sh script +to grab the latest executable. The repo is over at

+

WOL-Ly

+

..

]]> + + + WebCall https://konsthol.eu/log/webcall-25-02-2023.html