Complete Guide: Wake-on-LAN, Jellyfin & WireGuard on Debian

Secure Remote Media Server Setup

Table of Contents


Introduction

In this guide, I will walk you through setting up a secure remote media server using:

  • Wake-on-LAN (WOL) – remotely power on your Debian machine
  • Jellyfin – free, open-source media streaming
  • WireGuard VPN – secure encrypted access to your server

This setup allows you to:

  • Wake up your server from anywhere
  • Access Jellyfin securely from your phone
  • Stream content exactly as if you were on your home network
  • Avoid exposing sensitive services directly to the internet

Requirements

Before you begin, make sure you have:

  • A Debian-based server
  • A home router with NAT/PAT support
  • An Android smartphone
  • Basic terminal knowledge

Wake-on-LAN (WOL)

Step 1 — Enable WOL in the BIOS

Look for options such as:

  • Wake on LAN
  • Power on by PCI-E
  • Resume by LAN

Enable the appropriate setting.


Step 2 — Enable WOL on Debian

Install ethtool:

sudo apt install ethtool

Enable WOL on your network interface:

sudo ethtool -s eth0 wol g

(Replace eth0 with your actual interface using ip link.)


Step 3 — Make WOL Persistent

Create /etc/systemd/system/wol.service:

[Unit]
Description=Wake-on-LAN configuration
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s eth0 wol g

[Install]
WantedBy=multi-user.target

Enable the service:

sudo systemctl enable wol

Step 4 — Configure Router & Mobile App

On your router:

  • Assign a static DHCP lease
  • Forward UDP 9 → port 9 of the server

On Android (app: Wake On LAN – by MR-Webb):

  • Name: any label
  • Group: Bookmarked
  • MAC address: server NIC MAC
  • Broadcast/Host: server LAN IP
  • Public IP: router’s WAN IP
  • Port: 9

Installing and Configuring Jellyfin

Step 1 — Install Jellyfin

curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
sudo systemctl enable jellyfin
sudo systemctl start jellyfin

Step 2 — Access the Web Interface

Navigate to:

http://YOUR_SERVER_IP:8096

Follow the setup steps:

  • Create your account
  • Add media libraries (Movies, Series, Music, etc.)

!!! Warning: Do NOT expose Jellyfin directly to the internet !!!

Always place Jellyfin behind a VPN such as WireGuard.


WireGuard VPN Setup

Step 1 — Install WireGuard

sudo apt install wireguard

Install the official Android app:

WireGuard – WireGuard Development Team


Step 2 — Generate Keys

Server keys:

wg genkey | tee server_private.key | wg pubkey > server_public.key

Phone keys:

wg genkey | tee phone_private.key | wg pubkey > phone_public.key

Display keys:

cat server_private.key
cat server_public.key
cat phone_private.key
cat phone_public.key

Never share private keys.


Step 3 — Configure /etc/wireguard/wg0.conf

Example VPN subnet:

  • VPN network: 10.10.0.0/24
  • Server: 10.10.0.1
  • Phone: 10.10.0.2
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE; ip6tables -A INPUT -p udp --dport 51820 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s31f6 -j MASQUERADE; ip6tables -D INPUT -p udp --dport 51820 -j ACCEPT

SaveConfig = true

[Peer]
PublicKey = <PHONE_PUBLIC_KEY>
AllowedIPs = 10.10.0.2/32

Replace enp0s31f6 with your interface name.


Step 4 — Enable IP Forwarding

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system

Step 5 — Configure Router Port Forwarding

Forward:

  • UDP 51820 → server LAN IP

Step 6 — Start WireGuard

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo wg

Step 7 — Configure WireGuard on Android

[Interface]
PrivateKey = <PHONE_PRIVATE_KEY>
Address = 10.10.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = YOUR_PUBLIC_IP:51820
AllowedIPs = 192.168.1.0/24, 10.10.0.0/24
PersistentKeepalive = 25

Step 8 — Generate QR Code (Optional)

sudo apt install qrencode
qrencode -t ansiutf8 < phone.conf

Scan it directly in the WireGuard app.


Testing the Setup

  1. Send WOL packet from your phone
  2. Wait for the Debian server to boot
  3. Activate WireGuard tunnel on your phone
  4. Open Jellyfin via LAN IP:
http://192.168.1.50:8096

(Replace with your own server IP)


Troubleshooting

Common issues:

  • Incorrect router port forwarding
  • Wrong key pasted in configs
  • Firewall blocking VPN traffic

UFW Firewall Configuration (if applicable)

Allow WireGuard:

sudo ufw allow 51820/udp

Allow VPN subnet:

sudo ufw allow from 10.10.0.0/24

Add NAT rules in /etc/ufw/before.rules before *filter:

# WireGuard NAT masquerading
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.0.0/24 -o enp0s31f6 -j MASQUERADE
COMMIT

Ensure forwarding rules are present:

-A ufw-before-forward -i wg0 -j ACCEPT
-A ufw-before-forward -o wg0 -j ACCEPT

Restart UFW:

sudo ufw disable
sudo ufw enable

#jellyfin #wireguard #debian #wol #media #setup

scp error: path canonicalization failed

If you’re doing scp command, with ‘-r’ recursive option, and stumble upon a strange “path canonicalization failed” out of nowhere:

Starting from SSH 9.0.0 scp is using sFTP to copy files. And in sFTP, target directories must exist.

Simple fix: use -O, legacy mode:

“Use the legacy SCP protocol for file transfers instead of the SFTP protocol. Forcing the use of the SCP protocol may be necessary for servers that do not implement SFTP, for backwards-compatibility for particular filename wildcard patterns and for expanding paths with a `~’ prefix for older SFTP servers”

#SSH #SCP #ERROR

Ultimate HackRF Portapack Mayhem Upgrade Guide

2023-2024 Edition

Introduction

When updating your devices, you may sometimes encounter problems that are directly related to the way you updated and to the changes that have occurred between your version jump.

That guide does not pretend to solve all the problems, some are real issues that have to be opened on the Mayhem GITHUB issues tracker.

On the other hand, if you have followed that guide and still have a problem, your issue have better chances to be solved as it will be possible to set aside common updates related problems.

List of important steps:

  • download all necessary files (it means at least SDCARD apps and firmware bin file !!)
  • have a reliable USB cable
  • ensure that your button battery is not dead, else use ‘PMem to Sdcard’ options in ‘Settings’
  • ensure that your CPLD is up to date (no need to update each time, but be sure at least once)
  • flash the firmware
  • update sdcard content (do not forget to update APPS if you’re manually refreshing !)
  • if you are having strange apps problems, try a factory default reset. It’s important to note that you will loose your settings and will have to set them back if you’re doing that step
  • always go and check the settings after the updates, we may have added things that changed the memory layout of settings thus messing them.

You may search each each steps details in the Mayhem GITHUB Wiki, particularly in the following sections:

#hackrf #portapack #mayhem #update #upgrade #guide

GPT4 analysis by Two Minutes Papers

#GPT4 is so amazing that it is a little bit frightening.

But hey, you can pour it a book and talk… to the book, isn’t it amazing ??

Seriously, the GPTs are incredible and the futur is going to change for sure.

Good or bad, well, wait and see.

PS: I can only encourage you to follow Two Minutes Papers. That channel is just so good, with simple and quick explanations, even when it’s a heavy subject like GPT4

Spotify Linux: fix crash or bad window at startup

If ever at some points Spotify on Linux refuses to start or start with fucked up graphics, there is a high probability that it’s due to hardware acceleration and a pesky update.

Spotify isn’t that much of a GUI CPU hog, so you can start it with hardware acceleration OFF and make it work again, like this:

spotify –disable-gpu

Some users reported that they needed to use –no-zygote too, but it made it instable for me.

Some had to also use –disable-software-rasterizer. I saw no changes when using it.

#spotify #gpu #linux #crash