/site-edit

Editorial interface to EMLO

Primary LanguagePHPMIT LicenseMIT

Emlo Editor

Install Docker

<PACKAGE_MANAGER> install docker docker-compose

Recommended: If you want to move the docker storage location (i.e. to use different disk space):

mv /var/lib/docker /data/
ln -s /data/docker /var/lib/docker

Now start docker:

systemctl enable docker
systemctl start docker

Setup servers

Assuming you have already git cloned this repo (i.e. the one this readme is in):

  • mkdir -p volumes/csv volumes/ssh volumes/uploader volumes/tweaker

  • chown 33:33 volumes/uploader volumes/tweaker # i.e. the containers www-data user.

  • Create config files:

    • cp docker-compose.php.template.env to docker-compose.php.env and fill in the missing values (See below if you need new identity keys)
    • cp emlo-edit-php-helper/exporter/config.template.py to emlo-edit-php-helper/exporter/config.py and fill in the missing values.
    • cp emlo-edit-php/interface/proform/lib/config.template.php emlo-edit-php/interface/proform/lib/config.php
  • generate/obtain ssl key and cert file for nginx build (e.g. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx/ssl/ssl.key -out nginx/ssl/ssl.crt )

Enable publishing of data via csv export

An export runs daily. You can configure where it goes with the docker-compose.php.env but if you need new keys do this:

Generate or move a key, to the file volumes/ssh/id_rsa . If generating, accept the defaults (but you might want to change the filename)

ssh-keygen  # use to generate a new key

Now copy the key to the remote server we need to update, you'll need to log in:

 ssh-copy-id -i <file-name> <user@server> # login to remote using id

Add a cronjob that runs daily:

docker-compose --file /data/emlo-editor/docker-compose.yaml exec php bash -c '/var/www/core/export_cofk_union.sh' > /data/emlo-editor/logs/export.log

Note: the first connection will ask you to authenticate the remote host so you may want to try a connection before continuing.

Enable simple data exporter

Change owners of the data folder to www-data (that is the www-data inside the container, usually the id is 33)

chown 33:33 emlo-edit-php-helper/exporter/exports emlo-edit-php-helper/exporter/exporter_data

Start (restart) server

Run the start script in the main directory. This basically buils and runs the docker containers.

  • Run ./start.sh

Backup

Make a directory

mk /data/backups

Add cronjob that runs daily

backup.sh

Insert latest data (only if necessary, don't overwrite new data!)

Get database data, e.g.:

pg_dumpall --username=<USERNAME_HERE> | gzip > pg_dumpall.out.gz

Copy to container, e.g. (containername is likely "emloeditor_postgres_1"):

docker cp pg_dumpall.out.gz <containername>:/tmp/

Connect to container:

docker-compose exec postgres bash

Delete, Extract, and re-index:

# Drop database
psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U <USERNAME_HERE> -c "DROP DATABASE ouls;"

# Unzip
gunzip /tmp/pg_dumpall.out.gz

# import
psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U <USERNAME_HERE> < /tmp/pg_dumpall.out

#cleanup
rm -f /tmp/pg_dumpall.out

Acknowledgements

EMLO has received funding from the Andrew W. Mellon Foundation, the UK Arts and Humanities Research Council, and the Unibersity of Oxford's John Fell Fund.