FreeBSD support

Love the idea, though haven’t read anywhere if this should work on FreeBSD.

There’s a port of deno for FreeBSD - FreshPorts -- www/deno: Secure JavaScript and TypeScript runtime

Should I run into any issues trying to get it up and running?

I’ll give it a go when I have some time and report back.

I’m not sure anybody has tried this, but it should work fine except that it requires Deno 1.40 and this port only seems up to 1.39. Not sure if it’s hard to bump that?

You could also try to host it using docker

Docker does not support FreeBSD

That’s interesting. Doing some search I can find results on how to run docker in FreeBSD

deno run -A --unstable-kv https://get.silverbullet.md/ /your/wiki/path

add any of the SB_ env variables you want and that should work. If you want the edge version use https://edge.silverbullet.md/silverbullet.js

Run it as the user you want too with su for security. Now you don’t need docker.

Have had it running for a while in a jail (FreeBSD container) on FreeBSD 13.2p9.

I installed deno-1.39, found I needed to edit the launch script to exec deno run --allow-all --unstable --no-config 'https://get.silverbullet.md/' "$@"

Then created this startup script at /usr/local/etc/rc.d/silverbullet

#!/bin/sh
#
# PROVIDE: silverbullet
# REQUIRE: nginx
# KEYWORD:

. /etc/rc.subr

name="silverbullet"
rcvar="${name}_enable"
command="/usr/home/silverbullet/.deno/bin/silverbullet"
procname="deno"

start_cmd="${name}_start"

load_rc_config $name
: ${silverbullet_enable:=no}

silverbullet_start()
{
        /usr/sbin/daemon -f -u silverbullet "$command" /usr/home/silverbullet/notes
}

Don’t forget to enable the service echo silverbullet_enable="YES" >> /etc/rc.conf
Realised I needed encryption and authentication. So nginx to the rescue.

Installed nginx, set it up with the following basic authentication and TLS (with certbot):

/usr/local/etc/nginx/nginx.conf

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    gzip  on;

    ssl_session_cache   shared:SSL:1m;
    ssl_session_timeout 10m;


    server {
        listen              443 ssl;
        server_name         mydomain;
        ssl_certificate     mydomain.crt;
        ssl_certificate_key mydomain.key;
        ssl_protocols       TLSv1.3;
        ssl_ciphers         HIGH:!aNULL:!MD5;

        auth_basic           "some text here";
        auth_basic_user_file .htpasswd; # put your user/password in here

        location / {
            proxy_pass http://127.0.0.1:3000;
        }
}

Any idea why it needs 1.40? 1.39 seems to work fine

1.40 introduced some API changes, specifically around file system that SilverBullet is now using, so even if it may boot with 1.39, likely the moment you load or save a file you’ll see errors.

I have been using it a few weeks, I have about a dozen notes. The server has been rebooted a few times, I notice no issues. Glad it works though, just not seeing any issues

Curious. But happy it works :+1: