Docker is a convenient and secure way to install server applications either locally or on a server you control.
Conveniently, SilverBullet is published as a docker image on GHCR. The image comes in a few flavors:
- 64-bit Intel
- 64-bit ARM (e.g. for Raspberry Pis and Apple Silicon macs)
- 32-bit ARM (ARMv7, e.g. for older Raspberry Pis running 32-bit Linux)
warning Warning To access SilverBullet outside of
localhostyou will need to set up TLS.
Release channels
Every release version of SilverBullet is tagged with its version number, but there are two release channels you can use:
:latestalways points to the latest release:v2always points to the latest edge build (the last commit tomain), use this if you want to live on the bleeding edge.
Container
- The container binds to port
3000, so be sure to port-map that, e.g. via-p 3000:3000(note: the first3000is the external port) - The container uses whatever is volume-mapped to
/spaceas the space root folder. You can connect a docker volume, or a host folder to this, e.g.-v /home/myuser/space:/space - SilverBullet will detect the UNIX owner (UID and GID) of the folder mapped into
/spaceand run the server process with the same UID and GID so that permissions will just magically work. If you’d like to override this UID, set thePUIDandPGIDenvironment variables (see Configuration for details). - The Docker image is based on Alpine. If you’d like to install additional packages into it, see Installing additional packages below.
note Note The same docker images are both available from GHCR and Docker Hub, use whichever you prefer.
Versions
To check the version you’re running, use the ${widgets.commandButton(“Client: Version”)} command. Note that after an upgrade you may have to reload your (browser) client twice, to fully activate the new version.
Docker Compose
Docker compose is a simple tool to manage running of multiple containers on a server you control, it is distributed with (modern) versions of docker. It is the recommended way to manage SilverBullet.
Below is a basic compose.yml that runs SilverBullet, check Configuration for additional configuration options.
Instructions:
- Replace the password defined in
SB_USERwith something sensible such asadmin:b3stp4ssword3vah - This volume uses the
./spacedirectory (will be auto-created if it doesn’t already exist) in the same directory as thecompose.ymlfile as the place where SB will keep its space. You may replace this with whatever location you keep your notes.
services:
silverbullet:
image: ghcr.io/silverbulletmd/silverbullet:latest
restart: unless-stopped
environment:
- SB_USER=admin:password
volumes:
- ./space:/space
ports:
- 3000:3000Boot this up via:
docker compose up -dAnd watch for logs with:
docker compose logs -fUpgrading
To upgrade, change the specific version you point to in your compose.yml file (not necessary when using :latest or :v2) and then:
docker compose pull
docker compose stop
docker compose up -dPlain Docker
If you don’t want to use docker compose, you can run SilverBullet “raw” as follows:
# Create a local folder "space" to keep files in
mkdir -p space
# Run the docker container in the background
docker run -d --restart unless-stopped \
--name silverbullet \
-p 3000:3000 \
-v ./space:/space \
ghcr.io/silverbulletmd/silverbullet:latestThere you go!
Upgrades
To upgrade your version of SilverBullet, first pull the new image:
docker pull ghcr.io/silverbulletmd/silverbullet:latest
# Then stop the current container
docker stop silverbullet
# Remove the existing container
docker rm silverbulletThen start the container again as before.
Installing additional packages
If you would like to install additional packages into your docker container (e.g. to call via shell), you can do so by creating a CONTAINER_BOOT page in your space. Whatever you put in this page, will be run as a bash script upon container boot (hence its name).
In practice, you’ll likely want to put apk add commands install the (Alpine) packages you would like to install.
What next
After your container is running, head over to http://localhost:3000 (or whatever port you have configured) and proceed to Getting Started.