Skip to content

impworks/bonsai

Repository files navigation

Bonsai

Фамильный вики-движок и фотоальбом на нескольких языках.

Возможности

  • Страницы с разметкой Markdown
  • Медиа-файлы: фото, видео, планируется поддержка документов PDF
  • Отметки людей на фото
  • Родственные связи (с проверками и автоматическим выводом)
  • Факты (дата рождения, пол, группа крови, владение языками, хобби, и так далее)
  • Контроль доступа по ролям: администратор, редактор, читатель, гость
  • История правок: для любой страницы или медиа-файла хранится история с diff'ами и возможностью отката к предыдущей версии

Скриншоты

Публичные страницы:

Панель администратора:

Установка с помощью Docker

  1. Скачайте файл docker-compose.lite.yml.

  2. Опционально:

    Настройте доступ по HTTPS для дополнительной безопасности.

    Вы можете использовать любые доступные сервисы, например Cloudflare Tunnel (бесплатно, несложно, нужен домен), Synology DDNS (бесплатно, просто, нужен Synology NAS), или другие.

    Это трудоемкий шаг, поэтому если вы просто хотите попробовать Bonsai своими руками локально - его и следующий можно пропустить или отложить.

  3. Опционально:

    Создайте приложение авторизации Google (или Yandex, Вконтакте).

    Отредактируйте файл docker-compose.lite.yml:

    • Впишите данные для авторизации Google в поля Auth__Google__ClientId и Auth__Google__ClientSecret
    • Задайте настройку Auth__AllowPasswordAuth=false, если хотите отключить менее безопасную авторизацию по паролю
  4. Опционально:

    Если вы хотите запустить Bonsai на языке, отличном от русского, поменяйте локаль в docker-compose.lite.yml: Вместо Locale=ru-RU можно использовать en-US.

  5. Запустите все контейнеры с помощью docker compose:

    docker-compose -f docker-compose.lite.yml up -d
    
  6. После старта Bonsai будет доступен на порту 8080.

Разработка (на Windows)

Для участия в разработке понадобится:

  • .NET 9: основной рантайм для Bonsai
  1. Установите NodeJS 14
  2. Скачайте shared-сборку ffmpeg для вашей операционной системы и извлеките данные в папку External/ffmpeg в корне проекта (необходимы исполняемые файлы ffmpeg и ffprobe).
  3. Создайте файл appsettings.Development.json, пропишите строку подключения к БД:
  {
    "ConnectionStrings": {
      "EmbeddedDatabase": "Data Source=App_Data/bonsai.db",
      "UseEmbeddedDatabase": true
    },
    "Auth": {
      "AllowPasswordAuth": true
    } 
  }
  1. Опционально, но рекомендуемо:

    Создайте приложение авторизации Google (или Yandex, Вконтакте).

    Впишите данные для авторизации в файл appsettings.Development.json и установите свойство AllowPasswordAuth в значение false:

    {
      "Auth": {
        "AllowPasswordAuth": false,
        "Google": {
          "ClientId": "<...>",
          "ClientSecret": "<...>" 
        },
        "Yandex": {
          "ClientId": "<...>",
          "ClientSecret": "<...>" 
        },
        "Vkontakte": {
          "ClientId": "<...>",
          "ClientSecret": "<...>" 
        }
      }
    }
    
  2. Создайте базу данных:

    dotnet ef database update
    
  3. Запустите сборку стилей и скриптов:

    npm install
    npm run build
    
  4. Запустите приложение (из Visual Studio или через dotnet run).

Безопасность

Резервные копии данных

Если вам ценна информация, которую вы заносите в Bonsai, обязательно НАСТРОЙТЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ.

Копировать необходимо следующие данные:

  • Базу данных (десятки мегабайт)
  • Загруженные медиа-файлы в папке wwwroot/media (могут быть гигабайты)

В комплектации по-умолчанию вам достаточно скопировать две папки, используя любые доступные средства (копирование на дополнительные носители, загрузка в облако, и так далее). При использовании БД PostgreSQL потребуются дополнительные действия по выгрузке содержимого БД. Выбор наиболее уместного подхода, с учетом вашего бюджета и объема данных, остается за вами.

Способы авторизации

Bonsai поддерживает 2 метода авторизации: OAuth с использованием внешних сайтов и авторизация по паролю.

OAuth является предпочтительным: он проще для пользователей, более безопасный и универсальный. Если можете, используйте его! Для этого вам потребуется создать приложение авторизации на сайте Google, ВКонтакте или в Яндексе, как написано в инструкции. Можно подключить несколько авторизационных приложений одновременно - пользователи смогут выбирать из них то, которое им больше по душе.

Также вы можете создать учетную запись с авторизацией по логину и паролю. Она пригодится в двух случаях:

  • Быстро попробовать Bonsai в действии (установка без создания приложений значительно быстрее)
  • Дать доступ родственникам, которые не зарегистрированы в соцсетях

Несколько фактов об авторизации, которые стоит иметь в виду:

  • У одной учетной записи может быть только один способ авторизации: или пароль, или Google, или Вконтакте, и т.д.
  • После создания учетной записи поменять тип авторизации нельзя.
  • Учетные записи с авторизацией по паролю автоматически блокируются, если пароль был введен неверно слишком много раз подряд.
  • Пароль может сменить только администратор вручную. Если у вас только одна учетная запись администратора и вы забыли от нее пароль - восстановить доступ можно только с помощью манипуляций с базой данных!