Repository navigation
Remote Access
Since 20260811 the dashboard machine can run either interface — the terminal dashboard over SSH (
--dasht), or the desktop window (EDCARS, the default, or--dashg) if it has a display. The setup below is unchanged either way; only the launch flag differs.For a phone or tablet rather than a second computer, use server mode and the EDAM app instead — nothing to mount, and it works away from home. See SERVER.md.
This guide explains how to run EDLD's dashboard on a secondary machine (e.g. a laptop) while the game runs on your main machine. The game machine handles all monitoring, Discord notifications, and session control logic. The secondary machine connects as a read-only dashboard front-end.
- Game machine — runs EDLD with your normal profile. Discord webhooks, kill tracking, and all alerts operate as usual.
-
Secondary machine — mounts the game machine's journal directory over SSH,
then runs a local EDLD instance (the dashboard) using the
[REMOTE]profile. Discord is disabled on this instance to avoid duplicate notifications.
Both instances read the same journal files simultaneously. EDLD never writes to journals, so two readers on the same files is safe.
On both machines:
- EDLD installed and working
- Python 3.11+
- SSH client (
openssh)
On the secondary machine only:
-
sshfs— for mounting the remote journal directory
Install sshfs if needed:
# Arch
sudo pacman -S sshfs
# Debian / Ubuntu
sudo apt install sshfs
# Fedora
sudo dnf install fuse-sshfsYou need to be able to SSH from your secondary machine to your game machine without a password prompt. If you already have this working, skip to Step 2.
On the secondary machine, generate an SSH key if you don't have one:
ssh-keygen -t ed25519 -C "edld-remote"
# Accept the default path (~/.ssh/id_ed25519)
# Leave the passphrase empty for passwordless operationCopy the public key to the game machine:
ssh-copy-id username@gamestationTest it:
ssh username@gamestation echo "OK"
# Should print OK with no password promptIf you want to connect from outside your local network, you need a stable hostname that points to your game machine's public IP. DuckDNS provides this for free.
Create a DuckDNS account and subdomain:
- Go to duckdns.org and sign in
- Create a subdomain — e.g.
gamestation.duckdns.org - Note your token from the account page
Install the auto-update client on the game machine so DuckDNS always has
your current IP. Create a script at ~/duckdns/duck.sh:
mkdir -p ~/duckdns
cat > ~/duckdns/duck.sh << 'EOF'
echo url="https://www.duckdns.org/update?domains=YOURSUBDOMAIN&token=YOURTOKEN&ip=" \
| curl -k -o ~/duckdns/duck.log -K -
EOF
chmod +x ~/duckdns/duck.shRun it on a schedule with a systemd timer or cron:
# Cron — update every 5 minutes
crontab -e
# Add:
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1Forward SSH port on your router: Your router needs to forward port 22 (or a custom port) to your game machine's local IP. This varies by router — consult your router's manual. Once done, test:
ssh username@gamestation.duckdns.org echo "OK"Optional — use a custom port for WAN SSH (recommended for security):
Add to ~/.ssh/config on the secondary machine:
Host gamestation.duckdns.org
Port 2222
User username
On the game machine, ensure your normal profile ([EDP1] or similar) is set
up in config.toml with your journal folder and Discord webhook.
On both machines, add the [REMOTE] profile to config.toml. Since both
machines share the same config file (e.g. via sync), this only needs to be done
once. The [REMOTE] profile is already included in example.config.toml as a
starting point.
The key line to set is the journal mount point on the secondary machine:
[REMOTE]
Settings.JournalFolder = "/home/username/mnt/ed-journals"Replace username with your actual username. Leave everything else as-is — the
profile disables Discord, sets all log levels to local-only, and sets
Settings.PrimaryInstance = false, which stops this instance repeating the game
machine's EDDN, EDSM, EDAstro and Inara uploads and keeps the overlay off. If you
write the profile yourself, include that line.
config.toml lives in the EDLD user data directory:
~/.local/share/EDLD/config.toml
~/.config/EDLD is a symlink to the same directory.
scripts/edld_launch.sh, in the EDLD folder, detects which machine it is
running on, handles the sshfs mount, starts EDLD on the game machine if needed,
and launches the correct local instance automatically. Copy it somewhere on
your path on both machines.
Configure the script — edit the variables at the top:
DESKTOP_SHORT="gamestation" # short hostname of the game machine
LAPTOP_SHORT="laptop" # short hostname of the secondary machine
DESKTOP_LAN="gamestation.local.net" # LAN hostname / IP for game machine
DESKTOP_WAN="gamestation.duckdns.org" # WAN hostname (DuckDNS or similar)
JOURNAL_REMOTE="${HOME}/games/ED-Logs/EDP1" # journal path on game machine
MOUNT_LOCAL="${HOME}/mnt/ed-journals" # where to mount it locally
EDLD_DIR="$HOME/.local/bin/EDLD" # path to your EDLD installation
GAME_PROFILE="EDP1" # your normal profile, on the game machine
REMOTE_PROFILE="REMOTE" # the dashboard profile, on this machine
REMOTE_INTERFACE="--dasht" # --dasht (terminal), --edcars or --dashg (needs a display)config.toml does not need to be referenced in the script — EDLD finds it
automatically in ~/.local/share/EDLD/config.toml on both machines (since your
home directory is synced, both machines share the same config file).
Set DESKTOP_SHORT and LAPTOP_SHORT to match what hostname -s returns on
each machine. If you are not using WAN access, you can set DESKTOP_WAN to the
same value as DESKTOP_LAN — the script will simply try the same host twice,
which is harmless.
Make it executable and create the mount point:
chmod +x edld_launch.sh
mkdir -p ~/mnt/ed-journalsRun it:
./edld_launch.shThe script will:
- Detect which machine it is on by hostname
- Game machine — launch EDLD using your normal profile
-
Secondary machine:
- Probe LAN first, fall back to WAN if unreachable
- Mount the journal directory via sshfs, read-only, if not already mounted
- Start EDLD on the game machine with no interface (
--headless) if it is not already running - Launch the local dashboard using the
[REMOTE]profile
LAN test (both machines on the same network):
# On the secondary machine
ssh gamestation.local.net echo "SSH OK"
sshfs gamestation.local.net:/home/username/games/ED-Logs/EDP1 ~/mnt/ed-journals
ls ~/mnt/ed-journals # should show journal files
fusermount -u ~/mnt/ed-journalsWAN test (secondary machine on a different network — use a phone hotspot):
ssh gamestation.duckdns.org echo "SSH OK"Full launch test:
./edld_launch.sh
# Watch the output — it will report each stephostname -s returns something unexpected
Check with hostname -s on each machine and update DESKTOP_SHORT /
LAPTOP_SHORT in the script to match exactly.
sshfs mount succeeds but journal files are not visible
Check JOURNAL_REMOTE in the script — it must be the absolute path to the
journal directory on the game machine. Verify with:
ssh gamestation ls ~/games/ED-Logs/EDP1Stale mount after network drop If the mount becomes unresponsive after a reconnect, unmount and remount:
fusermount -u ~/mnt/ed-journals
./edld_launch.shThe -o reconnect sshfs option handles brief drops automatically, but a
prolonged disconnection may require a manual remount.
EDLD starts on the secondary machine but shows no events
Confirm the [REMOTE] profile's JournalFolder matches the mount point
exactly, and that journal files are visible at that path:
ls /home/username/mnt/ed-journalsDiscord notifications firing twice
The [REMOTE] profile sets Discord.WebhookURL = "" which disables Discord
on the secondary instance. If you are seeing duplicates, check that the
secondary machine is using -p REMOTE and not your normal profile.
- The
edld_launch.shscript is safe to run repeatedly — the sshfs mount is idempotent and the remote EDLD check will skip startup if it is already running. - The
~/mnt/ed-journalsdirectory is outside your home sync scope by default. If your home directory is synced between machines, ensure the mount point path is excluded from your sync configuration. - The
[REMOTE]profile's log levels are all set to1(local only). You can set any to0to suppress specific event types from the dashboard entirely.
Getting Started
Guides
Reference
- Automation
- Building
- Configuration
- Dossier
- Edcars
- Exploration Exobiology Plan
- Licensing
- Mission Bootstrap
- Privacy
- Roadmap
- Server
- Signing
- Startup
- Streamer Stats Overlay
- Surface Survey
- Terminal Output
- Theming
Releases