Skip to content

Commit

Permalink
Merge branch 'main' of github.com:silverbulletmd/silverbullet
Browse files Browse the repository at this point in the history
  • Loading branch information
zefhemel committed Nov 28, 2023
2 parents 5a022ae + 6922bde commit bc6e839
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 66 deletions.
6 changes: 3 additions & 3 deletions website/Attributes.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Attribute syntax can contribute additional [[Metadata]] to various [[Objects]] including:
Attribute syntax can contribute additional [[Metadata]] to various [[Objects]], including:

* Pages
* Items
Expand All @@ -13,7 +13,7 @@ The syntax is as follows:

For Obsidian/LogSeq compatibility, you can also double the colon like this: `[attributeName:: value]`

Attribute names need to be alpha numeric. Values are interpreted as [[YAML]] values. So here are some examples of valid attribute definitions:
Attribute names need to be alpha-numeric. Values are interpreted as [[YAML]] values. So here are some examples of valid attribute definitions:

* string: [attribute1: sup]
* number: [attribute2: 10]
Expand All @@ -28,7 +28,7 @@ Depending on where these attributes appear, they attach to different things. For

[pageAttribute: hello]

However, usually [[Frontmatter]] is be used for this purpose instead.
However, usually, [[Frontmatter]] is used for this purpose instead.

Example query:

Expand Down
2 changes: 1 addition & 1 deletion website/Authelia.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
How to setup SilverBullet with Authelia

In order for SilverBullet to work as intended, some files will need to be excluded from your authentication method of choice. These files need to always be accessible, for example for offline or [[PWA]] support.
For SilverBullet to work as intended, some files will need to be excluded from your authentication method of choice. These files always need to be accessible, for example for offline or [[PWA]] support.

The files are the following:
- The web manifest
Expand Down
6 changes: 3 additions & 3 deletions website/Authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ silverbullet --user pete:1234 .
Will let `pete` authenticate with password `1234`.

## Multiple users
Although multi-user support is still rudimentary, it is possible to have multiple users authenticate. These users can be configured using an JSON authentication file that SB can generate for you. It is usually named `.auth.json`.
Although multi-user support is still rudimentary, it is possible to have multiple users authenticate. These users can be configured using a JSON authentication file that SB can generate for you. It is usually named `.auth.json`.

You can enable authentication as follows:

```shell
silverbullet --auth /path/to/.auth.json
```

To create and manage an `.auth.json` file you can use the following commands:
To create and manage an `.auth.json` file, you can use the following commands:

* `silverbullet user:add --auth /path/to/.auth.json [username]` to add a user
* `silverbullet user:delete --auth /path/to/.auth.json [username]` to delete a user
Expand All @@ -31,7 +31,7 @@ If the `.auth.json` file does not yet exist, it will be created.
When SB is run with a `--auth` flag, this fill will automatically be reloaded upon change.

### Group management
While this functionality is not yet used, users can also be added to groups, which can be arbitrarily named. Likely the `admin` group will have special meaning down the line.
While this functionality is not yet used, users can also be added to groups which can be arbitrarily named. The `admin` group will likely have a special meaning down the line.

When adding a user, you can add one more `-G` or `--group` flags:

Expand Down
8 changes: 4 additions & 4 deletions website/Client Modes.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ SilverBullet currently supports two modes for its client (the part of SilverBull

You can toggle between these two modes by toggling the 🔄 button in the top bar.

You can switch modes any time, and use different modes on different devices.
You can switch modes any time and use different modes on different devices.

**Note:** It is technically possible to _switch off online mode_ (and allow synced mode only) by running the SilverBullet server with the `--sync-only` flag (or setting the `SB_SYNC_ONLY` environment variable to something). With this flag on, the sync button will not appear in the UI.

Expand All @@ -14,11 +14,11 @@ In online mode, all content in your space is kept on the server, and a lot of th

Advantages:
* **Keeps content on the server**: this mode does not synchronize all your content to your client (browser), making this a better fit for large spaces or for cases where you only need to quickly login to SilverBullet to check something, e.g. on a device you don’t usually use. This use case is the reason why this is the default mode.
* **Lighter-weight** in terms of memory and CPU use of the client.
* **Lighter weight** in terms of memory and CPU use of the client.

Disadvantages:
* **Requires a working network connection** to the server. You can not load pages, nor successfully persist changes without it.
* **Higher latency**, since more interactions require calls to the server, this may be notable e.g., when completing page names.
* **Requires a working network connection** to the server. You can not load pages nor successfully persist changes without it.
* **Higher latency** since more interactions require calls to the server, this may be notable e.g., when completing page names.

## Synced mode
In this mode, all content is synchronized to the client, and all processing happens there. The server effectively acts as a “dumb data store.” All SilverBullet functionality is available even when there is no network connection available.
Expand Down
4 changes: 2 additions & 2 deletions website/Frontmatter.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Frontmatter is a common format to attach additional metadata (data about data) to markdown documents.

In SilverBullet there are multiple ways to attach [[Metadata]] to a page, frontmatter is one of them.
In SilverBullet, there are multiple ways to attach [[Metadata]] to a page; frontmatter is one of them.

You create it by starting your markdown document with `---` followed by [[YAML]] encoded attributes and then ending with `---` again. Followed by the regular body of your document.

Expand All @@ -18,6 +18,6 @@ Here is an example:
SilverBullet allows arbitrary metadata to be added to pages this way, with two exceptions:

* `name` is an attribute used for page names, so don’t attempt to override it in frontmatter
* `tags` can be specified (as in the example) and are in effect another way of adding tags to your page, you can achieve the same result by simply adding hashtags in the body of your document, e.g. `#tag1 #tag2`.
* `tags` can be specified (as in the example) and are, in effect, another way of adding tags to your page. You can achieve the same result by simply adding hashtags in the body of your document, e.g. `#tag1 #tag2`.

SilverBullet also has the _convention_ of using attributes starting with a `$` for internal use. For instance, the sharing capability uses the `$share` attribute, and `$disableDirectives: true` has the special meaning of disabling [[🔌 Directive]] processing on a page.
50 changes: 25 additions & 25 deletions website/Guide/Deployment/Cloudflare and Portainer.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
In this guide we will show you how to deploy silverbullet and cloudflare in containers, making them "talk/communicate" in the same private network just for them.

This guide assumes that you have already deployed Portainer, if not, see [this official guide](https://docs.portainer.io/start/install-ce/server/docker/linux) from Portainer to deploy it on Linux.
This guide assumes that you have already deployed Portainer. If not, see [this official guide](https://docs.portainer.io/start/install-ce/server/docker/linux) from Portainer to deploy it on Linux.

### Brief

This guide will be divided into three parts, in the first we'll set up Silverbullet with Cloudflare. In the second, we will set up Cloudflare from the beginning to access Silverbullet from outside our LAN using [Tunnels](https://www.cloudflare.com/products/tunnel/). And in the third step, we protect our Silverbullet instance with [Access Zero Trust](https://www.cloudflare.com/products/zero-trust/access/) for authentication.

# 1 - Deploy Silverbullet and Clouflare in Portainer
# 1 - Deploy Silverbullet and Cloudflare in Portainer

## Prepare the Template
We will prepare a template in Portainer where we will add the configuration of a ==docker-compose.yaml== that will run our containers and we will be able to move the stack to another server/host if necessary using the same configuration.
We will prepare a template in Portainer where we will add the configuration of a ==docker-compose.yaml== that will run our containers, and we will be able to move the stack to another server/host if necessary using the same configuration.

First go to **Home** > (Your environment name, default is **local**) > **App Templates** > **Custom Templates** and click on the blue button in the right corner > "**Add Custom Template**".
First, go to **Home** > (Your environment name, default is **local**) > **App Templates** > **Custom Templates** and click on the blue button in the right corner > "**Add Custom Template**".
![](Guide/Deployment/Cloudflare%20and%20Portainer/create-custom-template.png)

### Name
Expand All @@ -20,7 +20,7 @@ Choose a name for the silverbullet stack, we chose "**silverbullet-docker**", ve

### Description

Fill the description with your own words, this is up to you because is optional.
Fill the description with your own words; this is up to you because it is optional.

### Icon Url

Expand All @@ -36,7 +36,7 @@ Standalone

### Build Method

As for the Build method choose “**Web Editor**” and copy paste this ==docker-compose.yaml== configuraiton:
As for the Build method choose “**Web Editor**” and copy-paste this ==docker-compose.yaml== configuration:

```yaml
version: '3.9'
Expand Down Expand Up @@ -102,7 +102,7 @@ You can leave all the other options by default or change them to suit your netwo
Click **Create Network** at the bottom of the page.
![](Guide/Deployment/Cloudflare%20and%20Portainer/create-network-4.png)
## Depolying the Stack
## Deploying the Stack
Go to **Home** > **Local** > **App Templates** > **Custom Templates**.
Expand All @@ -112,29 +112,29 @@ Click on **Deploy the stack**.
![](Guide/Deployment/Cloudflare%20and%20Portainer/deploy-stack-2.png)
Give it a few seconds and you will get a notification that both containers are running. 😇
Only silverbullet cointaer should be working properly by this point, as we haven't finished with cloudflare yet.
Only the silverbullet container should be working properly by this point, as we haven't finished with Cloudflare yet.
![](Guide/Deployment/Cloudflare%20and%20Portainer/view-containers-1.png)
## Verification
In a Web Browser in your Local Network (if your server is in your LAN) write the ip address of your server and add the port 3000 at the end, like this:
In a web browser in your local network (if your server is in your LAN) write the IP address of your server and add the port 3000 at the end, like this:
``http://your-ip-address:3000 ``
Right now the conecttion to silverbullet is **HTTP** and PWA([Progressive Web Apps](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)) an offline mode will not work yet, don’t worry we will get into that later, but for now it should be working correctly, try to type something and sync it to your server.
Right now the connection to silverbullet is **HTTP** and PWA([Progressive Web Apps](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)) and offline mode will not work yet. Don’t worry we will get into that later, but for now, it should be working correctly. Try to type something and sync it to your server.
---
# 2 - Setup Cloudflare with Tunnels.
# 2 - Set up Cloudflare with Tunnels.
Now we are going to use Cloudflare to be able to connect to SilverBullet from outside our network and have a valid SSL certificate without opening any ports or needing a static ipv4 address from our ISP or changing our router configuration.
Now we are going to use Cloudflare to be able to connect to SilverBullet from outside our network and have a valid SSL certificate without opening any ports or needing a static IPv4 address from our ISP or changing our router configuration.
You will need three things:
* An account with Cloudflare ☁️.
* A debit/credit card 💳.
* A domain name (you can buy it on [Njalla](https://njal.la/) 😉, your real name will not be shown if someone uses whois tools).
* A domain name (you can buy it on [Njalla](https://njal.la/) 😉. Your real name will not be shown if someone uses whois tools).
We assume you've already [signed up to Cloudflare](https://www.cloudflare.com/), if not you can go and do it now, it's free but you'll need to add a real debit/credit card to have access to the tunnels and zero access. If you don't want to do that, you can use **alternatives** like [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy) or [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) for reverse proxy and [Authelia](https://www.authelia.com/) or you can use the [basic authentication built-in](https://silverbullet.md/Authentication) for authentication.
We assume you've already [signed up to Cloudflare](https://www.cloudflare.com/), if not you can go and do it now. It's free but you'll need to add a real debit/credit card to have access to the tunnels and zero access. If you don't want to do that, you can use **alternatives** like [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy) or [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) for reverse proxy and [Authelia](https://www.authelia.com/) or you can use the [basic authentication built-in](https://silverbullet.md/Authentication) for authentication.
## Add your Site/Domain Name to Cloudflare
Expand All @@ -151,15 +151,15 @@ Click on **Zero Trust** once you have added your site/domain name.
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnel-1.png)
Click on **Create Tunnel**.
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnels-2.png)
Choose a name for your tunnel, I chose "myhome", very imaginative again 😛. And click on **Save Tunnel**.
Choose a name for your tunnel, I chose "myhome", very imaginative again 😛. And then click on **Save Tunnel**.
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnels-3.png)
Since we have already set up a container of cloudflare, just copy the token you are given. And be careful, if someone gets your token will be able to make a tunnel connection to your server.
Since we have already set up a container of Cloudflare, just copy the token you are given. And be careful, if someone gets your token they will be able to make a tunnel connection to your server.
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnels-4_2.png)
Now that you have the token value of your tunnel, it's time to configure the cloudflare container in Portainer. Let's go there.
Go to **App Tempaltes** > **Custom Templates** > **Edit**.
Go to **App Templates** > **Custom Templates** > **Edit**.
![](Guide/Deployment/Cloudflare%20and%20Portainer/deploy-stack-3.png)
Replace “your-token-value-here!” with your token value.
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnels-6.png)
Expand All @@ -184,7 +184,7 @@ Fill in the **subdomain** field with the name you want to use to access silverbu
![](Guide/Deployment/Cloudflare%20and%20Portainer/setup-tunnels-11.png)
Check now with **silberbullet.your-domain-name.com**. You should be able to access it.
# 3 - Setup Cloudflare Zero Access Trust (Auth).
# 3 - Set up Cloudflare Zero Access Trust (Auth).
We assume you've already [signed up to Cloudflare](https://www.cloudflare.com/), if not you can go and do it now, it's free but you'll need to add a real debit/credit card to have access to the tunnels and zero access. If you don't want to do that, you can use **alternatives** like [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy) or [Nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) for reverse proxy and [Authelia](https://www.authelia.com/) or you can use the [BasicAuth build-in](https://silverbullet.md/Authentication) for authentication.
Expand All @@ -199,21 +199,21 @@ Leave the rest of the page as default and click **Next** at the bottom of the pa
Now it's time to select the name of the policy, the action and the duration of the session.
Select a descriptive **Name** for future troubleshooting, select **Allow** for the **Action** and leave the session duration by default.
Select a descriptive **Name** for future troubleshooting, select **Allow** for the **Action** and leave the session duration at its default.
In the **Configure rules** section, select **Emails** if you want to use emails (or you can use range of IPs, specific countries...) for verification, and enter the emails you want to allow access to Silverbullet.
In the **Configure rules** section, select **Emails** if you want to use emails (or you can use a range of IPs, specific countries...) for verification, and enter the emails you want to allow access to Silverbullet.
![](Guide/Deployment/Cloudflare%20and%20Portainer/add-application-clodflare-5.png)
Leave the rest of the page as default and click **Next** at the bottom of the page.
On the next page, leave everything as default and click on **Add Application** at the bottom of the page.
Go to **silberbullet.your-domain-name.com** and you should see a page like this:
Go to **silverbullet.your-domain-name.com** and you should see a page like this:
![](Guide/Deployment/Cloudflare%20and%20Portainer/add-application-clodflare-6.png)
Going back to the Zero Trust overview, we are now going to create some special rules to allow some specific files from silverbullet without authentication. The same thing happens with other auth applications such as [Authelia](https://silverbullet.md/Authelia).
Create a new self-hosted application in Cloudflare, we suggest the name **silverbullet bypass**.
And add the followings **pahts**:
And add the following **paths**:
```
.client/manifest.json
Expand All @@ -223,16 +223,16 @@ service_worker.js

Leave the rest as default and click **Next** at the bottom of the page.
![](Guide/Deployment/Cloudflare%20and%20Portainer/add-application-clodflare-7.png)
For the policy name we suggest **silverbullet bypass paths**, as for the **Action** you need to select **Bypass** and in the Configure Rules **Select** **Everyone** or you can exclude a range of IP's or countries if required.
For the policy name we suggest **silverbullet bypass paths**, as for the **Action** you need to select **Bypass**, and in the Configure Rules **Select** **Everyone** or you can exclude a range of IP's or countries if required.

Leave the rest as default and click **Next** at the bottom of the page.
![](Guide/Deployment/Cloudflare%20and%20Portainer/add-application-clodflare-8.png)
These rules only take affect on the specific paths, you can read more about [Policy inheritance on Cloudflare.](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)
These rules only take effect on the specific paths, you can read more about [Policy inheritance on Cloudflare.](https://developers.cloudflare.com/cloudflare-one/policies/access/app-paths/)

On the next page, leave everything as default and click on **Add Application** at the bottom of the page.

Go and check your **silberbullet.your-domain-name.com** everything should be working correctly.

Right now the conecttion to silverbullet is **HTTPS** and PWA ([Progressive Web Apps](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)) an offline mode will work now.
Now the connection to silverbullet is **HTTPS** and PWA ([Progressive Web Apps](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)) and offline mode will work.

I hope this guide has been helpful.
Loading

0 comments on commit bc6e839

Please sign in to comment.