Konsthol Konsthol's site en-gb 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 a Raspberry Pi 4 with 2GB of RAM for my birthday. It’s hands down the most thoughtful gift I’ve ever received, perfectly matching my hobbies. They were lucky to even find one during the chip shortage! I initially used it as a VPN server with WireGuard and played around with Pi-hole for network-wide ad blocking.

Eventually, I got into cloud computing and started hosting multiple services on a VPS I rent from MVPS. This VPS, with its 4GB of RAM, currently runs several of my daily-use services like Gitea, Searx, NTFY, and more. Although the Raspberry Pi could theoretically handle these services, its 2GB of RAM limited simultaneous operations.

One day, it hit me: why not use the Raspberry Pi for a simpler project like a Wake-On-LAN (WOL) server? It requires minimal resources and just needs to stay on and send WOL packets. The Raspberry Pi is connected via Wi-Fi to the same network as my laptop. Normally, waking up my laptop with WOL would require an Ethernet cable connection to the router, but I connected one end to the Pi and the other to the laptop.

I started with a simple shell script using etherwake, a command-line tool to send WOL packets. After enabling WOL in my laptop’s BIOS and confirming it on the OS using ethtool, I could easily wake my laptop remotely using a Termux shortcut on my phone, which SSHed into the Raspberry Pi to execute the etherwake command.

Though this setup worked perfectly fine, I wanted to make it even better. Initially, the Raspberry Pi only ran SSH and executed a command to wake my laptop. So it wasn’t really a WOL server. After some research, I found Flask and created an actual WOL server. This server had routes, authentication, logging, rate limits, and more to ensure robustness and security.

What makes my Flask-based server so cool is its dynamic nature. I can configure a .env file with multiple device MAC addresses, allowing numerous routes for different devices. For instance, I have LAPTOP_MAC=“itsmac” and DESKTOP_MAC=“itsmac”, enabling me to wake them via HTTP requests at /wol/laptop and /wol/desktop, respectively.

One open-source application that fits my use case is HTTP Shortcuts from F-Droid. After configuring a specific route, I can turn it into a widget on my home screen. This way, I can wake my laptop up with just a tap! Plus, I use dynamic DNS, so my Pi is accessible from anywhere.

The project’s 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 Sat, 25 Feb 2023

DATE: Sat 25 Feb 2023 22:42 By: konsthol@pm.me

WebCall

One of the simplest ways to host a “telephony” service is to use webcall.

Like with emails, you can use any webcall server to communicate with any other webcall server. Meaning that if for example you register a number with https://timur.mobi/ which is the default public server you can still make a call to someone who has registered a number with https://talk.konsthol.eu if you know their number by replacing the server address field in the dialpad icon.

All calls are encrypted and the server does not have access to the content of the calls. That is because the server uses webrtc and tries to make peer to peer connections.

There is also an integrated TURN server which is used if the peers can’t connect directly but if the connection is made though that then no video transmission is possible. I suspect that this is a limitation of the TURN server used in webcall because in jitsi meet which uses coturn instead of pion, it is always possible.

Another differentiation of the two services is that in webcall no more than 2 people can join a conversation, which is more similar to how a regular telephone call behaves.

Also there is currently no functionality to block a number as far as I can see but it should be fairly easy to figure out the public ip address and block it like that.

You should give it a shot and see if it works for you. The source code is at a link over at

https://timur.mobi

..

]]>
wpgtk is just more convenient https://konsthol.eu/log/choose_wpgtk_over_just_pywal-17-08-2022.html Wed, 17 Aug 2022

DATE: Wed 17 Aug 2022 00:09 By: konsthol@pm.me

wpgtk is just more convenient

Pywal is a simple KISS principled python application that extracts colors from an image and creates a color pallete to theme different programs

By default there are some templates that are stored in its .cache directory and there is an option to create new templates in its .config directory.

I found it to be simpler to create every template with wpgtk and store it in its templates folder in .config because there it also utilizes symlinks to its respective files and thus you can have every program’s file to manage in one place.

Moreover wpgtk conveniently stores each created colorscheme in a schemes folder in .config and along with that every wallpaper used as a symlink to the actual wallpaper in a wallpapers folder.

It also has a gui interface but I never really found a use for it as one can easily perform every needed action using just the cli.

After creating a script to be run after every use of the program to theme application that need third party scripts like telegram and qutebrowser the process of switching colorschemes on the fly becomes easy as pie and fast as fuck 🤫

Just give it a shot! Maybe I’ll upload my postWPG script in my gitea instance sometime soon and create an actual tutorial on how to use wpgtk

..

]]>
Awesome file sharing tool https://konsthol.eu/log/easy_file_sharing-12-09-2021.html Sun, 12 Sep 2021

DATE: Sun 12 Sep 2021 00:53 By: konsthol@pm.me

Awesome file sharing tool

Croc is one of the best easy to use file sharing cli tools I came across and only recently discovered how easy it can be to self host your own relay.

Croc as far as I understand needs an intermediary to staple as it says the connection between two computers. If I grasp the concept correctly if two computers can both connect to a third one then a connection between them can be established. The files sent over don’t get first uploaded to the third one and then downloaded to the second but somehow get uploaded and downloaded simultaneously.

I’ll have to further read about that but in short if you have a computer like a server with a static ip that is easily accessible from the internet then because of the great job the author did you can host a relay simply by typing the command

croc relay

which will by default use the ports 9009-9013 but you can specify your own with the –ports arguement like

croc relay –ports 1111,1112

Then if you make that into a systemd service (which I won’t be covering just yet cause I don’t really understand them and only make them by copy pasting basic templates 😐) it’s basically a set and forget kind of thing and you can now send files to anyone in any operating system by using croc by typing

croc –relay “your.domain:9009” send [file]

and the recipient can download it by typing

croc –relay “your.domain:9009” [code]

This is super useful cause there was a time when the public instance was down and I couldn’t send files when it was just so easy to not be dependent on the public instance in the first place.

You should definetely read more about it on Croc’s github page and set up your own relay asap 😎

https://github.com/schollz/croc

..

]]>