Skip to content

Latest commit

 

History

History
181 lines (125 loc) · 7.02 KB

README.md

File metadata and controls

181 lines (125 loc) · 7.02 KB

RelationS

Family genealogy research application

Features

  • Pages with Markdown text
  • Media files: photos, videos (PDF documents will be supported later)
  • Person tags on photos
  • Relations: validation, inferrence
  • Fact storage (birthday, gender, blood type, languages, hobbies, etc.)
  • Access control: editor, reader and guest roles
  • Changesets: browse changes to any page/media, see diffs, easily revert if necessary

Screenshots

Front-end:

Admin panel:

Installation via Docker

  1. Download the docker-compose.lite.yml.

  2. Optional:

    Configure your Bonsai instance to use HTTPS for better security.

    You can use any vendor-specific options: e.g. Cloudflare Tunnel (free, fairly easy to configure, but requires a domain), Synology DDNS (free, very easy, requires a Synology NAS device), etc.

    This requires a bit of work, so if you just want to give Bonsai a quick spin - feel free to skip or postpone this one and the next.

  3. Optional:

    Create a Google Authorization app (or Yandex / VK.com).

    Modify docker-compose.lite.yml:

    • Save Google authorization credentials to Auth__Google__ClientId and Auth__Google__ClientSecret config properties
    • Set Auth__AllowPasswordAuth=false if you want to disable the less-secure password authorization
  4. Bring everything up using docker compose:

    docker-compose up -d
    
  5. After everything is brought up Bonsai will listen on port 8080.

Developemnt with Docker

  1. Rebuild the exisint docker image:
sudo docker build -t bonsai-app . 
  1. Run the docker image:
docker run -d -p 8082:80 bonsai-app      
  1. Log in to the docker
docker login
  1. Push the docker image to the dokcerhub with (in this case change the adrianvsain to your dokcerhub login)
docker tag  bonsai-app  adrianvsaint/relations:latest 
  1. Push the docker image to the dockerhun space
docker push  adrianvsaint/relations:latest 

Development (on Windows)

For development, you will need the following:

  • .NET 8: the main runtime for Bonsai
  1. Install NodeJS 14

  2. Install PostgreSQL server 9.6

  3. Download ffmpeg shared binaries for your system and extract the archive's contents into External/ffmpeg folder in the solution root (must contain both ffmpeg and ffprobe executables).

  4. Create a file called appsettings.Development.json, add the connection string:

    {
      "ConnectionStrings": {
        "Database": "Server=127.0.0.1;Port=5432;Database=bonsai;User Id=<login>;Password=<password>;Persist Security Info=true"
      },
      "Auth": {
        "AllowPasswordAuth": true
      } 
    }
    
  5. Optional, but suggested:

    Create a Google Authorization App (or Yandex / VK.com).

    Add the retrieved authorization credentials to the appsettings.Development.json and set AllowPasswordAuth to false:

    {
        "Auth": {
            "AllowPasswordAuth": false,
            "Google": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            },
            "Yandex": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            },
            "Vkontakte": {
              "ClientId": "<...>",
              "ClientSecret": "<...>" 
            }
        }
    }
    
  6. Create the database:

    dotnet ef database update
    
  7. Build the styles and scripts:

    npm install
    npm run build
    
  8. Run the app (as Visual Studio project or using dotnet run).

Security considerations

Data backup

If you value the data that you store in Bonsai, make sure that you SET UP BACKUPS.

You will need to back up the following:

  • Database (approximately tens of megabytes)
  • Uploaded media in wwwroot/media (may contain gigabytes of data)

There are many options available, free and paid: uploading to a cloud storage, copying to external drives, etc. Please consider your usage/budget and select a combination that works best for you.

Authorization methods

Bonsai features two authorization methods: OAuth and password authorization.

OAuth is the preferred method: it's easier to use for end users, more secure and versatile. Please use the OAuth method if you can! For OAuth, you will need to create an authorization app on Google, Vkontakte, or Yandex as described in the installation steps. You can enable multiple authorization apps at the same time: users will pick the one they prefer.

As a fallback, you can also create an account with classic login/password authorization. It can be used for two purposes:

  • Playing around with Bonsai (easier to set up: no auth app and https configuration required)
  • Giving access to elder family members who don't have a social network account

Please keep the following facts in mind:

  • Any user account can only have one authorization method: password, or Facebook, or Google, etc.
  • It is not possible to change the authorization type for an account once it has been created.
  • Password-based accounts can be locked out if there are too many consecutive failed login attempts.
  • Account password can only be reset by an administrator manually. If you only have one admin account, it is password-based, and the password is lost - there's no way to regain access besides direct database manipulation!