Skip to content

Installation on an Ubuntu Server

Sebastian Schilling edited this page Aug 30, 2024 · 1 revision

datacat Installation

Anything in square brackets needs to be replaced.

Prerequisites:

Clone datacat-stack

$ cd /var/opt
$ git clone https://github.com/dd-bim/datacat-stack.git

Rename folder and open it

$ mv [oldfoldername] [folder]
$ cd [folder]

Specify the settings in .env

$ cp env.example.txt .env
$ nano .env
DATACAT_ADMIN_PASSWORD=password 		# admin password for datacat
DATACAT_EDITOR_URL=https://example.org 		# domain where datacat will be hosted
DATACAT_EDITOR_VERSION=0.8.1 			# current version of datacat editor (docker image tag)
DATACAT_ISSUER=https://example.org  		# URL of the issuer of generated authentication tokens (normally the domain)
DATACAT_PORT=3000  				# port, where datacat will be hosted
DATACAT_SECRET=mylongrandomlygeneratedsecret 	# secret used to generate authentication tokens
DATACAT_VERSION=0.8.1 				# current version of datacat backend (docker image tag)
MAIL_HOST=smtp.zaft-dresden.de  		# mail server host (connection configuration in docker-compose.override.yml)
MAIL_PORT=587					# mail server port
NEO4J_PASSWORD=neo4jpassword 			# neo4j password

Rename docker-compose.override.example.yml and specify settings

$ mv docker-compose.override.example.yml docker-compose.override.yml
$ nano docker-compose.override.yml

Configure the mail server connection settings and optional the database container name

# Use to override service configuration for local development or specific production env.

services:

# Exposes the web interface at port 7474
  db:
#    container_name: [name]			# optional database name
#    ports:
#      - "7474:7474"

## Used to override Spring Boot settings
  api:
    environment:				# configure mail server connection
      - datacat.mail.from=[postmaster@example.de]
      - spring.mail.username=[postmaster@example.de]
      - spring.mail.password=[abcdef]
      - spring.mail.properties.mail.smtp.auth=true
      - spring.mail.properties.mail.smtp.connectiontimeout=5000
      - spring.mail.properties.mail.smtp.timeout=5000
      - spring.mail.properties.mail.smtp.writetimeout=5000
      - spring.mail.properties.mail.smtp.starttls.enable=true

Start container setup

$ docker compose up -d

Generate a certificate for your domain with Let`s Encrypt

$ certbot certonly -d [Domain]

Configure nginx proxy server

$ cd /etc/nginx/sites-enabled
$ nano [Domain]
server {
        server_name [Domain];                         # set domain

        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Forwarded-Ssl on;
                proxy_set_header X-Forwarded-Port 443;
                proxy_pass http://localhost:[Port];   # port of datacat (default: 3000) 
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/[Domain]/fullchain.pem; # managed by Certbot   # change certificate
    ssl_certificate_key /etc/letsencrypt/live/[Domain]/privkey.pem; # managed by Certbot # change certificate
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = [Domain]) {                            # set domain
        return 301 https://$host$request_uri;
    } # managed by Certbot

        server_name [Domain];                          # set domain
    listen 80;
   return 404; # managed by Certbot
}

Restart nginx

$ systemctl restart nginx