Yacht Management Software (YMS) Installation

1. Install requirements

1.1 Generic
- MariaDB
- Python 3
  - python3-bcrypt
  - python3-mysqldb
- optional 
  - gettext
  - mupdf-tools for extended pdf file management

1.2 Native GUI
- Python GTK3
  - python3-gi
  - gir1.2-gtk-3.0
  - gir-rsvg-2.0

1.3 Web GUI
- Webserver
- PHP (>= 8.0)
  - php-mysql
  - php-xml

2. Create database

Create a database for YMS on your server, as well as a MariaDB user who has
the privileges for accessing and modifying it.

  CREATE DATABASE yms;

Create system user for native gui.

  CREATE USER 'ymssys'@'localhost' IDENTIFIED BY '********';
  GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymssys'@'localhost';

Create database-user for web application with minimum necessary rights.

  CREATE USER 'ymsweb'@'localhost' IDENTIFIED BY '********';
  GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymsweb'@'localhost';

3. Run database import

Import the mariadb.sql file into your database, which will create the tables.

  mariadb yms < mariadb.sql

According to your desired language import minimal required dataset into your
new database. For german use

   mariadb yms < minimal.sql

or alternatively for english language

   mariadb yms < minimal_en.sql

Optional import some sample data

  mariadb yms < mariadb_sample.sql

4. Initialize document storage
Customize path and access rights to your needs

  mkdir /var/local/yms
  mkdir /var/local/yms/thumb
  chown -R www-data /var/local/yms
  chmod -R 750 /var/local/yms

To grant access for the local gui the directory has to be writeable by a special
group (here as example 'yms'). The user which runs the local gui (here
'guiuser') has also to be a member of that group as well as the webserver user
'www-data'.

  groupadd yms
  usermod -aG yms www-data
  usermod -aG yms guiuser
  chgrp yms /var/local/yms
  chgrp yms /var/local/yms/thumb
  chmod -R 770 /var/local/yms

5. Install webgui

5.1 Upload webgui files

Upload all files and directories (except the install directory) to your
webserver.
Disallow access to include files (.inc). There is an example _htaccess
file.

5.2. Create and edit webgui config file

Rename sample configfile config.inc-sample:

  mv config.inc-sample config.inc

Open config.inc in a text editor and fill in your database details.
If you want to use local unix socket connection set host = socket.

5.3. Check file access rights for security

Configfile should be readable by webserver but not writeable.

  chmod 640 config.inc
  chgrp www-data config.inc

6. Setup local GUI

Create a local database user with same name as your computer user and allow
database access with current unix credentials. E.g if your current unix user
is "ymsgui":
   mysql> CREATE USER 'ymsgui'@'localhost' IDENTIFIED VIA unix_socket;
   mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yms.* TO 'ymsgui'@'localhost';

Execute "install.sh" to install the software to your local operating system.

Start "yms", default configuration file is automatically created

7. Start using YMS

Use webgui:
Start your browser and login to YMS with the initial username/password:
captain/captain

Use local client:
Start ymsgui.py
Change the password using the local GUI before normal use.

