Installation

Hello, I’m new to self hosting and getting better, for all that matters. I’m following the instructions and having issues using docker run on my ARM system.

Error response from daemon: create ./space: "./space" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

I’m guessing there’s a space somewhere it shouldn’t be. I copied from the installation page:

# Create a local folder "space" to keep files in
mkdir -p space
# Run the SilverBullet docker container in the foreground
sudo docker run -it -p 3000:3000 -v ./space:/space ghcr.io/silverbulletmd/silverbullet

I’ve been looking for a good useful notation app and this looks like everything I’ve been looking for and more. Any and all help is appreciated.

Update: I removed the ‘:/space’ after ./space and received a long string of characters with no confirmations. For now I will continue the instructions, and report back when I find a new error or confirmed everything working.

The -v flag tells docker to mount your local system folder (Windows) in the container where silverbullet runs. The part before : is folder path on host (windows) and the part after is the folder path on the container.

Now your particular problem is that docker in windows doesn’t support paths like ./space so you need to specify the full path with drive and all.

So it would look something like -v c:/foo/space:/space.

1 Like

Thank you for your explanation, I really do appreciate it. I assume I did something wrong since I don’t have any thing other than this string of seemingly random characters on my terminal. Does the path need to start from " /home/$user/space "? I’m still troubleshooting between other “Tickets” lol so I’m just making updates with each attempt.

Also, A note, I’m not using windows for this setup which is where my follow question derives. This is Debian ARM system, so I’m not sure I have the right conditions for the path.

Hmm wait. I just noticed the sudo so you are not using Windows. Then it should work normally as you showed.

Try with the full path though. Yes it must start from / as you showed.

1 Like

So it looks like the random string was the confirmation that this are setup properly. When I re ran with the absolute path I’m told:
Error response from daemon: Conflict. The container name "/silverbullet" is already in use
I’ve also noticed nothing is showing in the ~/space folder so I am a little skeptical, but until further notice, I’m continuing with the install, with updates.

update:
After the ctrl+c and entering the next line of code with the full path to the /space folder and my original successful string I’m now getting the message:
Error response from daemon: Conflict. The container name "/silverbullet" is already in use by container "fd4f6655cd679293b5fca7e83fd5d3e92d3a5bf91d90f9638f7742bbc1e6ffa2". You have to remove (or rename) that container to be able to reuse that name.
I’m not exactly sure what my next steps are from here. Thanks in advance.

This error means that you already have a container running :slight_smile:

You need to turn it off but I don’t have time rn to help you with it.

I can check it out in few hours. You may also want to try AI assisted solution. Go to claude.ai, log in and paste the errors there. It should explain to you the problem and suggest solutions.

If there is any command you don’t understand you can open another chat with AI and ask what it does. It’s great for learning.

Yeah, I guess you are already running a container, you’d probably want to stop it and remove it beforing starting a new one. I can only recommend using docker compose, because it handles all that, but it is not a necessity.
Does your full path to your space contain any of the symbols not allowed? Or are you using a docker version below 23, because they don’t allow relative paths.

1 Like

The easiest way to do this is to stop the container from running:

sudo docker container stop fd4f6655cd679293b5fca7e83fd5d3e92d3a5bf91d90f9638f7742bbc1e6ffa2

The long string of characters and numbers is the container address/name.

Then remove the container:

sudo docker container rm fd4f6655cd679293b5fca7e83fd5d3e92d3a5bf91d90f9638f7742bbc1e6ffa2

Then run that long docker comand that creates a new container with the name you want to use:
Something is this:

docker run -it -d --restart unless-stopped --name silverbullet -p 3000:3000 -v /home/$USER/space:/space

I hope this helps.

FYI.. here is a good series on docker if you’re interested:
Learn Linux TV docker series

This helped me a lot.

2 Likes

I think your run command might be missing the image name, shouldn’t it be like this?

sudo docker run -p 3000:3000 -d --name silverbullet -v /home/$USER/space:/space ghcr.io/silverbulletmd/silverbullet

Explanation for @Djay1809 :
The -d flag instructs docker to detach from the container, meaning the command will return while the container keeps running in the background.
--name just specifies the local container name, this can be anything you choose. This name will appear when running sudo docker ps or similar.
-v /home/$USER/space:/space tells docker to map the folder at ~/space to /space inside the container, $USER gets replaced with your current username. (Even though MrMugame is right, if you’re running the newest docker version, relative paths like ./space should’nt be an issue)

Removing the :/space from the command worked, because by doing that you told docker to create a hidden folder managed by docker and map that folder to the ./space path inside the container. The result would have been something like this:

Hidden folder: /var/lib/docker/volumes/4923749328.../_data

Folder in container: /home/<yourusername>/space

2 Likes

First, I did say “something like”. I’m well aware that I was missing the reference to the source URL. This was due to my inability to make it appear as a URL. As for the rest of the command, it is the one that I use on my Silverbullet system. I included it as a reference so that @Djay1809 would know what command I was referring to. It was not intended for @Djay1809 to use.

BTW…Nice explanation of the rest of the command. :grinning_face:

MrMugame Im still figuring out Docker, but my docker version shows Client version 20.10.24 , and engine version is the same, So I’ll try an update. Thank you

dmick1954 Thank you for the guide. I left off looking up classes on udemy for docker so after getting this working I’ll be spending some time adding to my skillset with your series. I will report back once I’ve attempted your method.

22rw Looks like I did something accidentally correct. Just to clarify, when the command worked without the :/space and created a hidden folder, shouldn’t that show up when I run ls -lA as .space?, or .Random string of numbers? I only have the space folder and nothing in it. I’ll e reporting back after I attempt to update docker and follow MrMugame’s guide. Thank you as well, and for the explanation, of the arguments. I was getting stuck trying to make sure I wasn’t hexing my system somehow.

update:
I realized what [quote=“22rw, post:9, topic:2117, username:22rw”]
Hidden folder: /var/lib/docker/volumes/4923749328.../_data

Folder in container: /home/<yourusername>/space
[/quote]
means now, I’ll just have to re configure this from scratch.

A slight sidebar, What is the creatures name in your avatar? I listen to an entire podcast episode about it, and almost immediately forgot how to say it so I couldn’t look it up. It’s in the salamander family if I remember correct and I keep wanting to say aristole with a y in there, or some variation of that.

1 Like

It‘s an axolotl

2 Likes

Hello all, I have news. First thank you @dmick1954 for the link to the docker series, that helped more than you know. @MrMugame I don’t know why I thought there was a y in it’s name, but I’m glad I can scratch that itch. This was the podcast I listened to about it, now that I could find it.

YouTube Music

Now to the good stuff, I restarted the installation process, and this time I typed out the full path in the # run in foreground command. This time I’m seeing indexing complete, full space index complete. I killed the process with, ctrl+c. Continuing I tried to run the container in Deamon mode and was told the container is already in use. I used docker rm to end the process, then docker ps -a to confirm it was ended. Followed up with running as deamon with all the arguments, and confirmed the process was active with docker ps -a again. So if I’m understanding this correctly using the ports 3000:3000 means I’ll be able to access this over the network? I’m currently testing this out with my limited networking knowledge now. Thank you all for your help and instruction so far.

Update:
I’m able to access the index page, with the IP of the server and port. I’m not sure how to make this accessible without the IP, or if it will be available outside my LAN, but I’m content with the progress so far. Also, I’m not sure that it matters yet since I’m still reading through, but there’s still nothing in the space folder. I assume this is where my notes will be stored as I start, but I want to make sure it’s necessary so I don’t remove it trying to keep my home folder neat, and it it is, how can I move it to another folder? Thank you in advance.

1 Like

Hey, good job so far! ;D
Digging through the whole docker setup was definitely the most time consuming part on my side when setting up silverbullet. Regarding the space folder:
After a clean install, the following files should be in the folder:

-a---          05.04.2025    00:20           4096 .silverbullet.db
-a---          05.04.2025    00:20              3 .silverbullet.db-shm
-a---          05.04.2025    00:20        3361952 .silverbullet.db-wal
-a---          05.04.2025    00:20            366 index.md
-a---          05.04.2025    00:20            358 SETTINGS.md

If yours is still empty, there is probably still something wrong with the path mapping. Have a look at the output of

sudo docker inspect silverbullet | grep -A8 Mounts

with “silverbullet” being the name of your container.
Assuming your space folder is placed directly in your home folder, the output should look something like this:

        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/<yourUsername>/space",
                "Destination": "/space",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },

I’ll check for replies tomorrow!

PS: For a way to access your instance from outside your LAN, check out Install SilverBullet on a 64-bit Debian/Ubuntu/RaspianOS, Internet accessible via Tailscale with the tailscale serve command.

2 Likes

Good morrow all, When I run the Docker inspect command, I have the following:

        "Mounts": [
            {
                "Type": "volume",
                "Name": "1b522be9d993764a600c3a61bb0325095428860e27593f2d7f36029e2080f520",
                "Source": "/var/lib/docker/volumes/1b522be9d993764a600c3a61bb0325095428860e27593f2d7f36029e2080f520/_data",
                "Destination": "/home/$USER/space",
                "Driver": "local",
                "Mode": "",
                "RW": true,

And when I run ls -lA in the space folder I have:
total 0
I haven’t tried everything I intent to yet, I’m still learning markdown formatting. I have however, played around with the sync and online mode, I did watch the video, but I’m not sure where my index file is syncing to. I’ve executed docker ps -a and I’m showing:

5a123fa0345   ghcr.io/silverbulletmd/silverbullet   "/tini -- /docker-en…"   28 hours ago   Up 28 hours                 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   silverbullet
fd24daba5d02   ghcr.io/silverbulletmd/silverbullet   "/tini -- /docker-en…"   29 hours ago   Exited (130) 29 hours ago                                               thirsty_lalande

The bottom line, it looks as thought things are working, and I have minimal idea how, but I’m going to start testing tonight by manually importing files and try to confirm I’m able to link them with some lessons in markdown I’ll be investing in.

I think you ran into the same issue that occured with the first command. What you have right now is this mapping:
On host machine:
/var/lib/docker/volumes/1b522be9d993764a600c3a61bb0325095428860e27593f2d7f36029e2080f520/_data

Inside container:
/home/$USER/space

Meaning any file you put into the /var/lib/docker/volumes/[...]/_data folder on your host will appear in the /home/$USER/space folder (and vice versa), but not the /space folder.
This probably happened because your docker run command was missing the target path when setting the -v flag, i.e.

sudo docker run -v /home/$USER/space -p 3000:3000 ...

:/space’ missing here --------------------- ^


To fix that, stop & delete your current container with
sudo docker stop silverbullet & sudo docker rm silverbullet
and then re-run the run command with -v /home/$USER/space:/space.
So the full command looks like this:

sudo docker run -p 3000:3000 -d --name silverbullet -v /home/$USER/space:/space ghcr.io/silverbulletmd/silverbullet

Let me know if this helps ;D

1 Like

Hello gentlemates, apoligies about the delays this week. I’m planning to finish this today, to help with some weekend plans. Thank you @22rw I will get to this right away and report the update with any logs here. Also, seeing how all of you helped I’m not sure I can mark everyone’s input as a solution, I would, when able buy you all a coffee, or a beer assuming your all of responsibility age.

Update: in trying to understand what I have following @22rw running docker ps -a shows the following:

35a123fa0345   ghcr.io/silverbulletmd/silverbullet   "/tini -- /docker-en…"   5 days ago   Up 5 days                 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   silverbullet
fd24daba5d02   ghcr.io/silverbulletmd/silverbullet   "/tini -- /docker-en…"   5 days ago   Exited (130) 5 days ago                                               thirsty_lalande

and running ls -lA /var/lib/docker/volumes/[…]/_data
shows the following:
total 0
and running ls -lA /home/$USER/space reveals:
total 0
So I will be removing the container and starting from scratch to hopefully complete this properly and then begin migrating files correctly, will report back sooner than later.

update: I ran your code @22rw and it looks as though everything is in place. I’m testing things out now, mostly to understand the difference between sync and online mode. After that I just need to link the directory to my notes for easy access and I should be good to go. Much thanks.

2 Likes