- Full file manager. Task and Backup scheduling. Container control. Push alerts to your phone
- Vanilla code. No dependencies. One Python file 350KB. 20MB RAM
Website: deq.rocks · FAQ: deq.rocks/faq · Support: Patreon
- The server.py lives on your server. It offers access to DeQ via your browser. It wraps SSH commands into a user interface.
- The Android companion app connects to that server.py and polls it for stats.
- By using a VPN like Tailscale you can remote control or schedule your machines from anywhere and get reliable notifications by setting alert thresholds.
- Neither the server.py, nor the app ever phone home or collect your data.
- The server.py runs SSH commands as root. Hide it behind a VPN! Do not expose to public internet!
- For controlling other devices in your network you MUST exchange keypairs first. Please exactly follow the instructions when running the install.sh.
- Android Companion app - free app for your smartphone to manage your servers or get notified when things go wrong
- Device Control - Wake-on-LAN, shutdown, suspend, Docker start/stop
- Scheduled Tasks - Automated backups, wake, shutdown, suspend, and scripts
- Scripts - Run shell scripts from the web interface or on a schedule
- File Manager - Dual-pane file browser, copy/move/upload between devices
- System Stats - CPU, RAM, temperature, disk usage
- Quick Links - Bookmarks to your services with custom icons (Lucide or Dashboard Icons)
- Theming - Custom colors, wallpapers, and transparency/blur effects
- PWA Support - Install as web app on any desktop or smartphone
Native companion app with background monitoring and push notifications when devices go offline, containers stop, or backups fail.
DeQ Pro adds custom polling intervals, widgets, live wallpaper, screen saver, Android Auto, and Sleep With Me automation. Your purchase keeps this project alive as a full-time effort.
DeQ runs bare metal, not in Docker.
It's designed for low-power devices that are already online 24/7 - a Pi, a mini PC, even a WRT router. These give you always-on access to your homelab via Tailscale or LAN, without the overhead of a full server.
Docker would negate its own isolation benefits while adding overhead. To provide actual system control, a containerized DeQ would need host networking, Docker socket access, privileged mode, and volume mounts for every path - at that point, you're running a "container" with full host access anyway, just with extra steps.
DeQ stays up when everything else breaks.
When your Docker daemon crashes, when an update borks the container network, when Portainer can't reach its own backend - your containerized tools go down with the ship. DeQ, running as a simple systemd service, is often still reachable when everything else is on fire.
Yes, it runs as root. Here's why that's okay.
The security model is "trusted tool on a trusted network." DeQ assumes you're behind a VPN (Tailscale, WireGuard). The code is auditable - all 350KB of it. A technically competent user can read exactly what DeQ does in an afternoon. Compare that to trusting a 200MB Docker image with layers of abstraction you'll never inspect.
- Never expose DeQ to the public internet
- Use Tailscale, WireGuard, or another VPN for remote access
wget https://github.com/deqrocks/deq/releases/latest/download/deq.zip
unzip deq.zip -d deq && cd deq
sudo ./install.shThe installer asks a few questions (IP, port) and gives you your access URL.
- Open your DeQ URL in a browser (like 192.168.1.1:5050)
- Follow the onboarding wizard to scan your network for devices and containers
- Click the pencil icon to edit existing items or to add devices manually
- Add links and notes - assign icons
- Drag links or devices to reorder them
- Click the eye icon to hide sections you don't need
- Click the palette icon to toggle monochrome icons
- Scroll down to the Theme section to customize colors and wallpaper
The server running DeQ is automatically added as the "Host" device with local stats.
Links and devices support three icon sources:
| Format | Example | Description |
|---|---|---|
| Lucide | server |
Default. See lucide.dev/icons |
| Dashboard Icons | dash:proxmox |
Self-hosted app icons. See dashboardicons.com |
| Custom URL | https://... |
Any image URL |
In edit mode, click the palette icon next to "Links" to toggle monochrome mode for all icons.
Manually
You can manually add devices by activating the edit mode > go to the devices section > click "+". After you added the device you can manually add containers or scan for containers running on that device.
Using the Wizard
You can automatically add devices and containers by using the wizard: activate edit mode > go to the devices section > click "scan". Add your devices and SSH user name. Next step it will scan for Docker containers. Make sure to have ssh keypairs exchanged for that to work.
Each device can have:
| Feature | What it does |
|---|---|
| Wake-on-LAN | Power on the device remotely |
| Quick Connect | Buttons for RDP, VNC, or web interfaces |
| Docker | Scan for containers or add manually, start/stop, optional RDP/VNC/Web buttons |
| SSH | Enables stats and shutdown for remote devices |
DeQ uses different IPs for different purposes:
-
Local IP (device settings): Always your LAN IP (192.168.x.x). Used by the DeQ server for Wake-on-LAN, SSH connections, and ping checks.
-
Quick Connect / Docker IPs: These are for your browser/phone to connect. Use LAN IPs when at home, or Tailscale IPs when accessing remotely.
Example with Tailscale:
- Device Local IP:
192.168.1.100(for WOL/SSH) - Docker VNC:
100.x.x.x:8006(Tailscale IP, so VNC works from anywhere)
To see stats or shutdown remote devices, DeQ needs SSH access. This is optional - devices without SSH still work for Wake-on-LAN and links.
Quick setup:
# Generate a key (skip if you already have one)
ssh-keygen -t ed25519
# Copy it to your device
ssh-copy-id user@device-ip
# DeQ runs as root, so copy the key there too
sudo cp ~/.ssh/id_ed25519* /root/.ssh/
sudo chmod 600 /root/.ssh/id_ed25519
# Test it
sudo ssh user@device-ip 'echo OK'Enable passwordless sudo (if needed on target devices):
DeQ uses sudo for power control and SMART disk monitoring. If your SSH user isn't root, run this on the target device:
echo "$USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl poweroff, /usr/bin/systemctl suspend, /usr/sbin/smartctl" | sudo tee /etc/sudoers.d/deq
sudo chmod 440 /etc/sudoers.d/deqThis grants access only to power commands and disk health monitoring, nothing else.
For secure remote access, use Tailscale or another VPN. Access DeQ via your Tailscale IP.
Protect DeQ with a password:
# Set or change password
sudo ./install.sh --set-password
# Remove password (disable auth)
sudo ./install.sh --remove-passwordWhen set, a login screen appears before accessing DeQ. Sessions persist until logout or password change.
DeQ can run tasks automatically:
- Power On - Wake a device (WoL) or start a Docker container
- Power Off - Shutdown a device (SSH) or stop a Docker container
- Suspend - Put a device to sleep (devices only)
- Backup - Sync files between devices using rsync
- Script - Run a shell script from
/opt/deq/scripts/
Example workflow: Wake your NAS at 3 AM, run a backup from your main server, shut it down when done.
Run shell scripts directly from the web interface. Place executable scripts in /opt/deq/scripts/ and they appear in the Scripts section.
# Example: Create a simple script
sudo mkdir -p /opt/deq/scripts
sudo nano /opt/deq/scripts/docker-prune.sh#!/bin/bash
docker system prune -afsudo chmod +x /opt/deq/scripts/docker-prune.shIn edit mode, click the scan button in the Scripts section to discover new scripts. Scripts can also be scheduled as tasks.
Click the folder icon (top right) to open the dual-pane file manager. Browse files on any device with SSH configured. File Manager will also work on your smartphone. BE CAREFUL with what you're doing in the root folder!
Features:
- Copy and move files between devices
- Upload files (button or drag & drop)
- Delete files
- Create new Folders
- Create zip archives (or tar.gz as fallback)
- Download individual files
- Progress indicator with speed and ETA
- Preflight checks (verifies free space before transfer)
- Remembers your last folder per device
Navigation:
- Click to select (single pane only)
- Double-click to open folders
- Drag files from your desktop to upload
How transfers work:
| Transfer type | How it works |
|---|---|
| Host ↔ Remote | Direct rsync over SSH |
| Same device | Direct copy on that device (no network transfer) |
| Remote ↔ Remote | Routes through host (download then upload). Preflight checks free space on host. |
In edit mode, scroll down to the Theme section to customize the look:
| Setting | Description |
|---|---|
| Colors | Background, cards, borders, text, accent color |
| Transparency | Transparency effect for cards (0-100%) |
| Blur | Background blur amount (0-30px) |
| Wallpaper | Background image URL (https://...) |
Click "Reset to Defaults" to restore the original dark theme.
Get notified when something goes wrong - even when you're not home. The app monitors your homelab in the background and alerts you when devices go offline, containers stop, or backups fail.
Native Android apps for DeQ - faster startup, background notifications, no browser needed.
Compatible with Android 8+ - Perfect for repurposing old phones or tablets as wall-mounted status displays.
Download: Google Play · APK on GitHub · Pro on Google Play
| Feature | DeQ (Free) | DeQ Pro (€6.99) |
|---|---|---|
| WebView Interface | ✓ | ✓ |
| Background Polling | 30 min | custom |
| Push Notifications | ✓ | ✓ |
| Home Screen Widgets | ✗ | ✓ |
| Lock Screen Widgets | ✗ | ✓ |
| Live Wallpaper | ✗ | ✓ |
| Screen Saver (Daydream) | ✗ | ✓ |
| Android Auto | ✗ | ✓ |
| Sleep With Me | ✗ | ✓ |
Why a paid version?
Unlike Patreon tiers with "exclusive updates" or "Discord access", the paid app offers real features that take real work to build:
- Custom Polling: Set your own interval - from seconds to hours
- Android Auto: Check your homelab status from your car's dashboard
- Home Screen Widgets: 5 different widget styles - from minimal dots to detailed lists
- Lock Screen Widgets: Same widgets on your lock screen (Android 16+)
- Live Wallpaper: Animated status display as your home screen background
- Screen Saver: Ambient display with BCD clock when charging - perfect for a wall-mounted status display
- Sleep With Me: Automate your homelab based on your phone's charging state - sleep when you sleep, wake when you wake
Your support keeps this project alive as a full-time effort.
DeQ Pro includes 5 widget styles:
| Widget | Description |
|---|---|
| DeQ Less | Minimal colored dots - green/gray for online/offline |
| DeQ List | Scrollable list with device names and stats |
| DeQ Ultra | Q-symbols: rotated = online, normal = offline |
| DeQ Mega | Green squares for online devices only |
| DeQ Containers | Green circles for running containers only |
All widgets support custom background color, transparency, and corner radius.
Turn an old phone into a wall-mounted status display:
- DeQ Live: Animated wallpaper showing device squares and container circles
- DeQ Ambient: Screen saver (Daydream) with BCD binary clock, breathing animations, and drift movement for OLED burn-in protection
Color coding:
- Offline devices: Gray (#666666) - neutral, non-alarming
- Online devices: Color indicates CPU load - green (idle) → orange → red (100% load)
- Stopped containers: Gray circle
- Running containers: Green circle
Both feature pure black backgrounds (#000000) for OLED efficiency and auto-scaling for any number of devices.
Automatically put your homelab to sleep when you go to bed, wake it up when you get up - triggered by your phone's charging state.
How it works:
- Plug in at night → Selected devices suspend/shutdown, containers stop
- Unplug in morning → Selected devices wake up, containers start
Configuration:
| Setting | Description |
|---|---|
| Active Window | Time range when feature is active (e.g., 22:00 - 08:00) |
| Delay | Minutes to wait before executing (time to unplug if needed) |
| Plug tab | Select containers to stop, devices to suspend or shutdown |
| Unplug tab | Select containers to start, devices to wake |
The feature checks at window start - even if you plug in before bedtime, devices won't sleep until the window begins.
Requirements: SSH access for remote devices, Wake-on-LAN for devices you want to wake, battery optimization disabled for DeQ.
Install DeQ as a PWA: Safari → Share → Add to Home Screen. Works like a native app. Native iOS app planned when funding allows.
Install DeQ as a desktop app - no more hunting through browser tabs. One click in your dock or taskbar, and you're in.
Why install as an app?
- Clean window without browser UI
- Lives in your dock/taskbar - always one click away
- No tabs to dig through
- Same interface, instant access
How to install:
| Platform | Steps |
|---|---|
| macOS (Safari) | File → Add to Dock |
| macOS (Chrome) | Menu (⋮) → "Cast, save, and share" → "Install page as app..." |
| Windows (Edge) | Menu (···) → Apps → "Install this site as an app" |
| Windows (Chrome) | Menu (⋮) → "Cast, save, and share" → "Install page as app..." |
| Linux | Chrome → Menu (⋮) → "Cast, save, and share" → "Install page as app..." |
Once installed, DeQ opens in its own window and lives in your dock.
sudo systemctl status deq # Check status
sudo systemctl restart deq # Restart
sudo journalctl -u deq -f # View logsAll data is stored in /opt/deq/config.json. To backup: just copy config.json. To restore: copy it back and restart.
To update DeQ, download the latest release and run the installer again:
wget https://github.com/deqrocks/deq/releases/latest/download/deq.zip
unzip deq.zip -d deq && cd deq
sudo ./install.shYour config.json is preserved - the installer only overwrites server.py.
sudo systemctl stop deq
sudo systemctl disable deq
sudo rm /etc/systemd/system/deq.service
sudo rm -rf /opt/deq
sudo systemctl daemon-reloadOr as single command
sudo systemctl stop deq && sudo systemctl disable deq && sudo rm /etc/systemd/system/deq.service && sudo rm -rf /opt/deq && sudo systemctl daemon-reloadClean up remote devices (optional):
If you configured passwordless sudo on target devices, you can remove it:
sudo rm /etc/sudoers.d/deqDeQ is provided "as is" without warranty. The authors are not liable for any damages resulting from its use. By installing DeQ, you accept full responsibility for securing your system. See LICENSE for details.
CC BY-NC 4.0 - Free for personal use, no commercial use without permission. See LICENSE.







