Skip to content

How the installation works ​

Eurion is installed with the deployment kit, a set of Ansible roles and scripts that run on the server itself. The kit installs Docker, writes all configuration, starts the services, runs database migrations, creates the first administrator account and sets up backups, monitoring and the update service.

This guide covers an installation on a single server with Docker (deploy_mode: docker), which is the tested setup in 1.6.4.

Before you start ​

  • A server that meets the requirements.
  • A domain where you can create DNS records, and ports opened as described in DNS and firewall.
  • The installation file for the current version from Eurion, for example eurion-update-1.6.4.tar. It contains the kit (kit.tar.gz), Eurion's own container images (images.tar.gz), a manifest (manifest.env) and checksums.
  • Details for an SMTP server for outgoing mail (see Outgoing e-mail).

Internet access during the installation

During the installation the server downloads packages (apt, Docker) and third-party images such as PostgreSQL, Redis, Kafka and Traefik from the internet. Eurion's own images come from the installation file.

1. Prepare the server ​

Sign in to the server as a user with sudo and install Ansible:

bash
sudo apt-get update
sudo apt-get install -y ansible python3-yaml

SSH on a port other than 22

The kit enables the ufw firewall and only allows SSH on port 22. If SSH listens on another port, open it first so that you do not lock yourself out:

bash
sudo ufw allow 2222/tcp   # change to your port

2. Unpack the installation file ​

bash
mkdir -p ~/eurion-install
tar -xf eurion-update-1.6.4.tar -C ~/eurion-install
cd ~/eurion-install
sha256sum -c SHA256SUMS
grep -E '^(EURION_VERSION|FROM_VERSION)=' manifest.env

sha256sum must report OK for every file. FROM_VERSION must be empty: a file with FROM_VERSION set is a delta update and cannot be used for a new installation.

Put the kit in place:

bash
sudo mkdir -p /opt/eurion/deploy
sudo tar -xzf kit.tar.gz -C /opt/eurion/deploy

3. Write the configuration file ​

bash
cd /opt/eurion/deploy
sudo cp eurion-config.example.yml eurion-config.yml
sudo nano eurion-config.yml

Fill in at least this (every key is explained in The configuration file):

yaml
deploy_mode: docker
eurion_version: "1.6.4"          # same as EURION_VERSION in manifest.env

organization:
  name: "Example Ltd"
  domain: "example.se"
  admin_email: "admin@example.se"

server:
  host: "203.0.113.10"           # the server's own IP address
  public_ip: "203.0.113.10"      # the public IP address

tls:
  method: letsencrypt

smtp:
  host: "smtp.example.se"
  port: 587
  user: "eurion@example.se"
  password: "…"
  from: "Eurion <no-reply@example.se>"

eurion_version must match

The images in the installation file are tagged with the version number. If eurion_version says anything else (for example the default latest), the installation finds no images and stops.

4. Generate settings and passwords ​

bash
cd /opt/eurion/deploy
sudo python3 scripts/gen-config.py eurion-config.yml generated

The script creates generated/ with Ansible variables and generated/group_vars/secrets.yml, in which all passwords and keys are generated at random. The file is readable by root only. If you run the script again, existing passwords are kept.

5. Install Docker and system settings ​

bash
cd /opt/eurion/deploy
sudo ansible-playbook -i generated/inventory/hosts.yml ansible/site.yml \
  -e @generated/group_vars/all.yml -e @generated/group_vars/secrets.yml \
  --tags prereqs

This step checks that the server has at least 4 vCPU and 8 GB RAM, installs Docker and system packages, sets kernel parameters and enables the firewall.

6. Load the images ​

bash
gunzip -c ~/eurion-install/images.tar.gz | sudo docker load

7. Run the installation ​

bash
cd /opt/eurion/deploy
sudo ansible-playbook -i generated/inventory/hosts.yml ansible/site.yml \
  -e @generated/group_vars/all.yml -e @generated/group_vars/secrets.yml

It usually takes 5–15 minutes. The order is: configuration → update service → databases, Redis, Kafka, MinIO and search → Traefik → the services → web app and admin portal → monitoring → TURN server → database migrations → first administrator → verification → backups.

With features.ai: true the language models are downloaded at the end. The first time this can take a long time.

8. Check and sign in ​

bash
sudo eurion-ctl status
sudo docker ps --filter health=unhealthy --filter status=restarting   # must be empty

The password for the first administrator account (organization.admin_email):

bash
sudo grep initial_admin_password /opt/eurion/deploy/generated/group_vars/secrets.yml

Sign in at https://admin.example.se and https://app.example.se. Then continue with After the installation.

When everything works you can remove the unpack directory; it is no longer needed:

bash
rm -rf ~/eurion-install

Where things are ​

WhatWhere
The kit/opt/eurion/deploy
Your configuration (after the installation)/opt/eurion/deploy/generated/eurion-config.yml
Passwords and keys (root, 0600)/opt/eurion/deploy/generated/group_vars/secrets.yml
Compose files/opt/eurion/compose/
Data (databases, files, search index)/opt/eurion/data/
Backups/opt/eurion/backups/
Update and backup logs/opt/eurion/logs/
The eurion-ctl command/usr/local/bin/eurion-ctl

Changing the configuration later

See Changing the configuration after installation.

Eurion — communication that runs on your own server.