4b9eb0cb68
remove the quotes which cause "Invalid username or password" https://github.com/silverbulletmd/silverbullet/issues/609
95 lines
4.5 KiB
Markdown
95 lines
4.5 KiB
Markdown
# Introduction
|
||
[Docker](https://www.docker.com/) is a convenient and secure way to install server applications either locally or on a server you control. If you don’t have docker already running on your machine and are macOS user, consider giving [OrbStack](https://orbstack.dev/) a try — it’s a super nice docker experience.
|
||
|
||
Conveniently, SilverBullet is published as a [docker image on docker hub](https://hub.docker.com/r/zefhemel/silverbullet). The image comes in two flavors:
|
||
|
||
* 64-bit Intel
|
||
* 64-bit ARM (e.g. for Raspberry Pis and Apple Silicon macs)
|
||
|
||
There is no 32-bit version of Deno, and therefore we cannot offer a 32-bit version of SilverBullet either. Most people run 64-bit OSes these days, an exception may be Raspberry Pis. Recent (RPI 3 and later) can run 64-bit Linux as well, you may have to re-image, though.
|
||
|
||
A few key things to know about the SilverBullet container image:
|
||
* 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).
|
||
|
||
# Setup
|
||
For your first run, you can run the following:
|
||
|
||
```shell
|
||
# Create a local folder "space" to keep files in
|
||
$ mkdir -p space
|
||
# Run the SilverBullet docker container in the foreground
|
||
$ docker run -it -p 3000:3000 -v ./space:/space zefhemel/silverbullet
|
||
```
|
||
|
||
This will run SilverBullet in the foreground, interactively, so you can see the logs and instructions.
|
||
|
||
If this all works fine, just kill the thing with `Ctrl-c` (don’t worry, it’s ok).
|
||
|
||
Now you probably want to run the container in daemon (background) mode, give it a name, and automatically have it restart after you e.g. reboot your machine:
|
||
|
||
```shell
|
||
$ docker run -d --restart unless-stopped --name silverbullet -p 3000:3000 -v ./space:/space zefhemel/silverbullet
|
||
```
|
||
|
||
There you go!
|
||
|
||
# Versions
|
||
The `zefhemel/silverbullet` image will give you the latest released version. This is equivalent to `zefhemel/silverbullet:latest`. If you prefer, you can also pin to a specific release, e.g. `zefhemel/silverbullet:0.5.5`. If you prefer to live on the bleeding edge, you can use the `zefhemel/silverbullet:edge` image, which is updated on every commit to the `main` brain. This is the YOLO option.
|
||
|
||
## Upgrade
|
||
You can upgrade SilverBullet as follows:
|
||
|
||
```shell
|
||
# Pull the latest version of the image
|
||
$ docker pull zefhemel/silverbullet
|
||
# Kill the running container
|
||
$ docker kill silverbullet
|
||
# Remove the old container
|
||
$ docker rm silverbullet
|
||
# Start a fresh one (same command as before)
|
||
$ docker run -d --restart unless-stopped --name silverbullet -p 3000:3000 -v ./space:/space zefhemel/silverbullet
|
||
```
|
||
|
||
Since this is somewhat burdensome, it is recommended you use a tool like [watchtower](https://github.com/containrrr/watchtower) to automatically update your docker images and restart them. However, if we go there — we may as well use a tool like _docker compose_ to manage your containers, no?
|
||
|
||
# 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’s like Kubernetes, but you know, not insanely complex.
|
||
|
||
Here is a simple `compose.yml` that runs SilverBullet as well as [watchtower](https://github.com/containrrr/watchtower), which will check for new SilverBullet upgrades daily (the default) and upgrade automatically.
|
||
|
||
Instructions:
|
||
* Please replace the password defined in `SB_USER` with something sensible such as `admin:b3stp4ssword3vah`
|
||
* This volume uses the `./space` directory (that presumably exists) in the same directory as the `compose.yml` file as the place where SB will keep its space.
|
||
* Check out [[Install/Configuration]] for more interesting `environment` variables you can set.
|
||
|
||
```yaml
|
||
services:
|
||
silverbullet:
|
||
image: zefhemel/silverbullet
|
||
restart: unless-stopped
|
||
environment:
|
||
- SB_USER=admin:admin
|
||
volumes:
|
||
- ./space:/space
|
||
ports:
|
||
- 3000:3000
|
||
watchtower:
|
||
image: containrrr/watchtower
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
```
|
||
|
||
Boot this up via:
|
||
|
||
```shell
|
||
$ docker-compose up -d
|
||
```
|
||
|
||
And watch for logs with:
|
||
|
||
```shell
|
||
$ docker-compose logs -f
|
||
```
|