I use SilverBullet on Alpine Linux using an untrusted LXC container. When I attempt to execute SilverBullet using the 2.x binary releases, they exit with “No such file or directory.”
On using silverbullet using arguments version or -h,
/usr/local/bin # /usr/local/bin/silverbullet-2.3.0-bin -h
sh: /usr/local/bin/silverbullet-2.3.0-bin: not found
Yet, it obviously exists.
/usr/local/bin # ls -l /usr/local/bin/silverbullet-2.3.0-bin
-rwxr-xr-x 1 root root 22913622 Nov 24 09:48 /usr/local/bin/silverbullet-2.3.0-bin
and
/usr/local/bin # stat /usr/local/bin/silverbullet-2.3.0-bin
File: /usr/local/bin/silverbullet-2.3.0-bin
Size: 22913622 Blocks: 28945 IO Block: 131072 regular file
Device: 2eh/46d Inode: 73762 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-11-24 19:23:26.311504847 +0000
Modify: 2025-11-24 09:48:49.000000000 +0000
Change: 2025-11-24 19:23:11.935400241 +0000
I am perplexed to say the least. Any thoughts?
Keeping below for completeness but the test is flawed seeing how I cannot even silverbullet -h without error.
Testing
Operating system
I use Alpine Linux edge due to compile requirements.
/usr/local/bin # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.23.0_alpha20251016
PRETTY_NAME="Alpine Linux edge"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
User account
I do not use root, typically, but for testing its root.
/usr/local/bin # whoami
root
New space directory
/usr/local/bin # stat /tmp/sbtest00
File: /tmp/sbtest00
Size: 2 Blocks: 1 IO Block: 131072 directory
Device: 2eh/46d Inode: 73755 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-11-24 17:20:46.490442126 +0000
Modify: 2025-11-24 17:20:46.490442126 +0000
Change: 2025-11-24 17:20:46.490442126 +0000
Release binary execution
Downloading the current linux-x86_64 binary release and executing results with:
/usr/local/bin # strace -o /tmp/sb-bin.log /usr/local/bin/silverbullet-2.3.0-bin /tmp/sbtest00
strace: exec: No such file or directory
and the strace log:
/usr/local/bin # tail /tmp/sb-bin.log
execve("/usr/local/bin/silverbullet-2.3.0-bin", ["/usr/local/bin/silverbullet-2.3."..., "/tmp/sbtest00"], 0x7ffdec8474f8 /* 10 vars */) = -1 ENOENT (No such file or directory)
+++ exited with 1 +++
Compiled binary execution
In contrast, using the compiled binary results with:
/usr/local/bin # strace -o /tmp/sb-bin.log /usr/local/bin/silverbullet-2.3.0 /tmp/sbtest00
2025/11/24 17:59:33 SilverBullet will only be available locally, to allow outside connections, pass -L0.0.0.0 as a flag, and put a TLS terminator on top.
2025/11/24 17:59:33 Local shell command execution enabled for ALL commands.
2025/11/24 17:59:33 Index page index.md does not yet exist, creating...
2025/11/24 17:59:33 Config page CONFIG.md does not yet exist, creating...
2025/11/24 17:59:33 SilverBullet is now running: http://localhost:3000
This has been consistent challenge when executing the 2.1.9, 2.2.1, and 2.3.0 linux x86_64 binary releases.