115 lines
4.7 KiB
Markdown
115 lines
4.7 KiB
Markdown
---
|
||
tags: getting-started
|
||
references:
|
||
- Dockerfile
|
||
- docker-entrypoint.sh
|
||
---
|
||
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](https://github.com/silverbulletmd/silverbullet/pkgs/container/silverbullet). 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 `localhost` you 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:
|
||
|
||
* `:latest` always points to the latest _release_
|
||
* `:v2` always points to the latest _edge build_ (the last commit to `main`), 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 first `3000` is the external port)
|
||
* The container uses whatever is volume-mapped to `/space` as 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 `/space` and 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 the `PUID` and `PGID` environment variables (see [[Install/Configuration]] for details).
|
||
* The Docker image is based on [Alpine](https://alpinelinux.org/). 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](https://github.com/silverbulletmd/silverbullet/pkgs/container/silverbullet) and [Docker Hub](https://hub.docker.com/r/zefhemel/silverbullet), 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](https://docs.docker.com/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 [[Install/Configuration]] for additional configuration options.
|
||
|
||
Instructions:
|
||
* Replace the password defined in `SB_USER` with something sensible such as `admin:b3stp4ssword3vah`
|
||
* This volume uses the `./space` directory (will be auto-created if it doesn’t already exist) in the same directory as the `compose.yml` file as the place where SB will keep its space. You may replace this with whatever location you keep your notes.
|
||
|
||
```yaml
|
||
services:
|
||
silverbullet:
|
||
image: ghcr.io/silverbulletmd/silverbullet:latest
|
||
restart: unless-stopped
|
||
environment:
|
||
- SB_USER=admin:password
|
||
volumes:
|
||
- ./space:/space
|
||
ports:
|
||
- 3000:3000
|
||
```
|
||
|
||
Boot this up via:
|
||
|
||
```shell
|
||
docker compose up -d
|
||
```
|
||
|
||
And watch for logs with:
|
||
|
||
```shell
|
||
docker compose logs -f
|
||
```
|
||
|
||
## Upgrading
|
||
To upgrade, change the specific version you point to in your `compose.yml` file (not necessary when using `:latest` or `:v2`) and then:
|
||
|
||
```shell
|
||
docker compose pull
|
||
docker compose stop
|
||
docker compose up -d
|
||
```
|
||
|
||
# Plain Docker
|
||
If you don’t want to use docker compose, you can run SilverBullet “raw” as follows:
|
||
|
||
```shell
|
||
# 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:latest
|
||
```
|
||
|
||
There you go!
|
||
|
||
## Upgrades
|
||
To upgrade your version of SilverBullet, first pull the new image:
|
||
|
||
```shell
|
||
docker pull ghcr.io/silverbulletmd/silverbullet:latest
|
||
# Then stop the current container
|
||
docker stop silverbullet
|
||
# Remove the existing container
|
||
docker rm silverbullet
|
||
```
|
||
|
||
Then 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 [[API/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]].
|