I went on a bit of a wild journey trying, over several hours today, to install and use SilverBullet. First, I searched for the "install" link on the home page. I understood that the website was styled as a sort of knowledgebase, much like Obsidian's manner of doing things. Great, showing off what the application is before it's even installed. Then, I found the install page to be basically empty, devoid of anything useful.
First sections says that to install it in a manner hosting it as localhost, there's two steps. First, you can install the binary and either run it like that or in a Docker instance. Second, you can access it!
Great! ....But how? Where are the actual instructions? I'm on the install page, it should have install instructions, not vague "you could do this" single-sentence suggestions about general approach. In any case, it's not the method that I'm looking for, so I moved on.
Second section says you can self-host it for remote access. That is the method I am interested in. However, this section seems even more useless than the first. All it appears to have are suggestions that you should go install one of four third-party services. Okay... but how about how to install the application itself, once you have one of those running? Nope, the section really seems to be only about those third party services. Nothing to imply those links actually lead anywhere else than the official website of those services.
None of the other sections on the install page (cloud, and file systems) were relevant to me, but then I figured, if the self-hosting section is actually trying to assume you have SB running already, maybe I really do need to get that binary. The text mentions releases on github. Maybe using it is simple and self-explanatory! So that's when I clicked the link for "Binary" it lead to another page with, on that next page, a link to the github page. Okay, we're getting somewhere.
I download the latest release from github, unzip it on my Pi, and realize there was no installation. Weird, considering how this sb executable doesn't match the silverbullet commands seen on the website. I double-check. I'm looking for how to actually use the application, so I check the main page, looking at the section right after Install (which comes after a general introduction pitching the app). What comes after Install? Architecture, of course! It would be so silly to expect "How To Use" or anything like that. The video tour doesn't show installation, nor initial setup of spaces. It's just already set up. Not helpful to me just beginning. After the useless Architecture setting, it just talks about the history of the project.
So I search the blue links on the main page wondering if I missed it, and finally find a page called Space. Maybe we're onto something!
Nope. It's just talking about how spaces fit into the program broadly.
Figuring I should just bash my head against the previous places I saw the commands before, I head back to the Install page. To the Spaces page. Quick Start? Manual? I genuinely have no idea where it is. It takes forever for me to realize that it was exclusively in the Binary page whose link is found in the Install page... That's right, the instructions for making a space are only found where you would go to fetch the zip to download. The logic is devastatingly bad. My hope is being sucked out with every passing second. Genuinely rotting.
Anyway, here's what the commands say!: ./silverbullet -p3000 space
And here's what happens when I enter that (ignoring that it's actually called "sb"):
Error: unknown shorthand flag: 'p' in -p3000
Usage:
sb space [command]
Weird... It's acting like "space" is a subcommand, not the name of the directory I'm specifying. What happens if I use it like that?
./sb space gets me a help prompt that suggests the add command. So no, I can't do anything like ./silverbullet -p3000 space -- instead it's ./sb space add followed by an interactive prompt. There's only one problem with this. If I want help with this app that's completely different from what is discussed on the website, I'm entirely out of luck.
Wouldn't you know it, I have multiple issues. Firstly, when it asks for a URL to serve from and suggests localhost, and I enter localhost just for testing, it says the server at that URL can't be reached. Localhost, which is the local device and is therefore always reachable -- can't be reached. Next issue. It asks what auth type I'd like to use (yes, it just lets me go through even though the URL is unusable). I figure I'm the one creating a new user, authenticated to the SB space I'm making. Brand new, so I'm offering a new username and password. Nope! When I finish entering them (the password is in plaintext for some reason, by the way -- not secure), it says "authentication failed". Why would it ask me if I want to create an authenticated user then tell me my authentication failed? It looks more like it has an existing user? But there was no mention of a default user coming with the installation on the website. How can this be??
I realized having this system with zero documentation about it was going to be a problem.
So I moved onto the next method. Install page, under "Self-Hosted". I investigated those links that looked like they just belonged to the third-party services, and noticed the line saying they were community guides, just a little sentence in there. So I sighed and followed the one for Tailscale, since I already have it running.
Then, I followed the instructions to install it through that page, which was shocking. It looked like light at the end of the tunnel! It all worked out!
But then... I found myself wanting to configure it. I'm not a Docker user. It's new to me. But I had to use the Docker installation, and it worked quickly, so I shouldn't complain. Except the other method also worked fast to install. It was the next step that was the problem. I noticed the login page, and wondered why I was being asked to log in when I never created a user. Eventually, I found the line in the docker command. Great! Now how do I change the user? How do I redo this, remove the user, add a new one? I crawled through the nightmare of a website yet again, and found nothing. Later on I would find a subsection of Install/Configuration called Authentication, and then later a page specifically called Authentication waiting for me... I couldn't tell you where the link to "Authentication" is since I lost it in the mess of a website. Plus, in a weird twist, it was literally a page just for the Docker version of the app, with no external indication of it belonging there, like being underneath a Docker/Authentication or something. I also wanted to know how to manage multiple spaces, another thing I'd have to abandon.
Another fun encounter was caused by the fact that I followed the forum guide for installing alongside Tailscale and completely missed out on how useful the "Docker" page of the main website was because that post didn't mention it at all. Am I the stupid one, or is it the fragmented approach to data?
Anyway, with two options dead and useless, I went searching the forum for any other ways. Let's keep this one short. I found a post about using Deno to install SB, and after getting through that one excrutiatingly slowly (not the fault of the webpages this time, it was because this guy insisted on Cargo for installation and that was way too heavy for my Raspberry Pi 2 W), I found out it only distributed version 0.10.4, with the update command not finding anything else. Then by googling I found a "jsr" page which I could presumably use to replace the package with newer releases found there. Except, they stop at 2.5, while current version is 2.8.1. Eugh. All methods, completely useless.
It's only while I was refreshing myself on my issues that I found multiple of the above pages, particularly the Docker one, and in the end I pissed away an entire day. I went to college for both IT and programming (mercifully pre-ChatGPT), and this is what happened. What a nightmare.
So, in short. Update the documentation to have the commands reflect the actual application you deliver in the binaries (who updates their entire application interface and then doesn't talk about the current way in the docs?). Link section titles to group ideas hierarchically together and make them easier to follow. Have a section on the main page between Install and Architecture leading to links for how to actually use the dang thing. And make it obvious which pages are for binary related stuff, and which are for Docker related stuff. I'm probably forgetting something! Absolute insanity.
You'll notice my emotions are firing a bit, but maybe when someone replies I'll be more amicable. If there was a Discord server I could have much more easily asked questions about my small-scale confusions that aren't worth a whole forum ticket quickly, to a knowledgeable audience, and move on easier to the actual issues. But instead it was a slogging mess of going back and forth and believing I must be insane because I swear I saw some thing on some page under some link but I have no idea where it was.
I'll be cool tomorrow, but I'm posting this ticket as-is. I bet the software is cool when it's running right!