Code Monkey home page Code Monkey logo

bonsai's Introduction

Bonsai

Фамильный вики-движок и фотоальбом.

Возможности

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

Скриншоты

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

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

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

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

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

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

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

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

    • Впишите данные для авторизации Facebook в поля Auth__Facebook__AppId и Auth__Facebook__AppSecret
    • Задайте настройку Auth__AllowPasswordAuth=false если хотите отключить менее безопасную авторизацию по паролю
    • Замените заглушку @@YOUR_EMAIL@@ на свой адрес email (для автоматической генерации HTTPS-сертификата LetsEncrypt)
    • Замените заглушку @@DOMAIN@@ на доменное имя (если у вас только IP-адрес, используйте xip.io, например 192.168.1.1.xip.io)
    • Разкомментируйте две строки с Host(`@@DOMAIN@@`)
    • Закомментируйте две строки с PathPrefix(`/`)
  3. Запустите все контейнеры с помощью docker compose:

    docker-compose up -d
    
  4. После старта Bonsai будет доступен на портах 80 и 443.

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

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

  1. Установите NodeJS (10+)

  2. Установите PostgreSQL server (9.6+)

  3. Скачайте shared-сборку ffmpeg для вашей операционной системы и извлеките данные в папку External/ffmpeg в корне проекта (необходимы исполняемые файлы ffmpeg и ffprobe).

  4. Создайте файл appsettings.Development.json, пропишите строку подключения к БД:

    {
      "ConnectionStrings": {
        "Database": "Server=127.0.0.1;Port=5432;Database=bonsai;User Id=<login>;Password=<password>;Persist Security Info=true"
      },
      "Auth": {
        "AllowPasswordAuth": true
      } 
    }
    
  5. Опционально, но рекомендуемо:

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

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

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

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

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

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

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

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

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

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

Существует множество подходов, платных и бесплатных: загрузка в облако, копирование на дополнительные носители и т.д. Выбор наиболее уместного подхода, с учетом вашего бюджета и объема данных, остается за вами.

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

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

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

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

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

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

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

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.