incidents / INC-0001
NAS file share "wrong password" that wasn't
My dashboard said the NAS credentials were wrong. They weren't. The SMB client library couldn't do NTLM on a modern OpenSSL.
- ticket
- INC-0001
- type
- incident
- priority
- P3
- status
- resolved
- opened
- 2026-08-28
- detected by
- User report (me), dashboard error
- time to resolve
- ~2h
Symptom
The file browser in my self-hosted dashboard refused to connect to a NAS share and reported an authentication failure. Same username, same password, same share as always.
Triage
- Checked the boring things first: the NAS was reachable and port 445 was open.
- Tested the exact same credentials from a Linux box with
smbclient, and it connected fine. So the password was not the problem. - Production logs showed the real error:
error:0308010C:digital envelope routines::unsupported, thrown from the app’s pure-JavaScript SMB library during NTLM authentication.
Root cause
NTLM uses old hash algorithms (MD4/DES). OpenSSL 3, which ships with current Node, disables them by default. The library caught that crypto failure and passed it up as “bad credentials”, which sent me looking in the wrong place.
Fix
- Added error classification, so crypto, network and auth failures show up as three different messages instead of one misleading one.
- Replaced the JavaScript SMB library with the system
smbclient, which handles modern and legacy auth properly. Credentials go into a temporary file with0600permissions and never into command-line arguments or browser state. - I added 15-second timeouts and socket cleanup so a dead share can’t hang the app.
Verification
Health check OK after deploy, smoke tests passing, and the share reports connected: true from production.
Lesson
An error message is a claim, not a fact. Reproduce with a second, independent tool before believing it.
Hiring for this
The resume has the formal version.
See resume →