SilverBullet — инструмент для ведения заметок и управления знаниями. Он хранит данные в локальной директории и использует формат Markdown, что делает файлы совместимыми с любыми редакторами. Веб-интерфейс SilverBullet напоминает упрощённый IDE. Он поддерживает автодополнение, быстрый поиск, плагины и шаблоны. Благодаря открытой архитектуре SilverBullet подходит как для личных заметок, так и для небольшой команды.
В статье разберём, как установить SilverBullet на виртуальный выделенный сервер, работающий под управлением Ubuntu или Debian.
Как установить SilverBullet на Ubuntu и Debian
Сначала обновите списки пакетов в системе и установите утилиты, необходимые для дальнейшей  установки SilverBullet. А именно, для загрузки и инсталляции сервиса будут нужны wget — консольная утилита для скачивания файлов, и unzip — утилита для распаковки ZIP-архивов.
$ sudo apt update
$ sudo apt install wget unzipДистрибутив SilverBullet представляет собой ZIP-архив, содержащий бинарный файл, скомпилированный под определённую платформу. Чтобы загрузить его, перейдите на GitHub-страницу SilverBullet и скопируйте ссылку на архив дистрибутива актуальной версии для Linux-систем.

Затем перейдите в свой домашний каталог и при помощи утилиты wget и скопированной ссылки загрузите архив:
$ cd ~
$ wget https://github.com/silverbulletmd/silverbullet/releases/download/2.0.0/silverbullet-server-linux-x86_64.zipПо окончании загрузки распакуйте полученный архив:
$ unzip silverbullet-server-linux-x86_64.zipДалее, создайте два каталога для SilverBullet: каталог для бинарного файла и каталог для рабочих данных:
$ sudo mkdir /opt/silverbullet/
$ sudo mkdir /var/lib/silverbullet/В каталог /opt/silverbullet/ переместите бинарный файл SilverBullet:
$ sudo mv silverbullet /opt/silverbullet/Далее создайте специального пользователя для сервиса SilverBullet. Он будет запускать процесс, но не сможет подключаться к системе и не будет иметь домашней директории. В нашем примере таким пользователем будет учётная запись с именем silverbullet-user:
$ sudo useradd --system --no-create-home --shell /usr/sbin/nologin silverbullet-userЗатем измените владельца и группу каталогов и всех файлов внутри них на пользователя и группу silverbullet-user. Это необходимо для того, чтобы процесс SilverBullet, который работает от имени пользователя silverbullet-user, имел полный доступ к этим директориям.
$ sudo chown -R silverbullet-user:silverbullet-user /opt/silverbullet/
$ sudo chown -R silverbullet-user:silverbullet-user /var/lib/silverbullet/Запуск SilverBullet в качестве системного сервиса
Чтобы SilverBullet мог автоматически стартовать при включении сервера, перезапускаться при сбое, работать от отдельного пользователя для безопасности, вести журналы событий в journalctl и управляться централизованно с помощью команд systemctl, необходимо настроить его работу в качестве системного сервиса. Другими словами, нужно превратить бинарный файл в надёжный и удобный для администрирования серверный процесс.
Для этого создайте юнит-файл, в котором будет описано, как запускать, останавливать и управлять новым сервисом:
$ sudo nano /etc/systemd/system/silverbullet.serviceСкопируйте в него следующее содержимое:
[Unit]
Description=SilverBullet Download Manager
After=network.target
[Service]
ExecStart=/opt/silverbullet/silverbullet -L 0.0.0.0 -p 3000 /var/lib/silverbullet
WorkingDirectory=/opt/silverbullet
Restart=always
User=silverbullet-user
[Install]
WantedBy=multi-user.targetЗакройте файл с сохранением изменений и обновите конфигурацию systemd:
$ sudo systemctl daemon-reloadПосле чего запустите созданную службу silverbullet:
$ sudo systemctl start silverbulletУстановите службу в автозагрузку:
$ sudo systemctl enable silverbulletПроверьте работоспособность службы при помощи команды, которая выводит её текущее состояние:
$ systemctl status silverbulletВывод команды не должен содержать сообщений об ошибках.

Поскольку веб-интерфейс SilverBullet по умолчанию доступен на TCP-порту 3000, добавьте разрешающее правило для данного порта в брандмауэр UFW:
$ sudo ufw allow 3000/tcpПосле чего откройте браузер и перейдите на http://X.X.X.X:3000, где замените X.X.X.X на IP-адрес вашего виртуального сервера.

