GithubHelp home page GithubHelp logo

markciliavincenti / bonsai Goto Github PK

View Code? Open in Web Editor NEW

This project forked from impworks/bonsai

1.0 0.0 0.0 3.99 MB

Self-hosted family wiki engine / photoalbum

License: MIT License

JavaScript 13.16% C# 64.69% HTML 17.73% Batchfile 0.03% Dockerfile 0.15% SCSS 4.23%

bonsai's Introduction

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

bonsai's People

Contributors

impworks avatar diverofdark avatar s0oft avatar jeydim avatar

Stargazers

Oleksander avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.