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:
sudo apt-get update
sudo apt-get install -y ansible python3-yamlSSH 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:
sudo ufw allow 2222/tcp # change to your port2. Unpack the installation file
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.envsha256sum 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:
sudo mkdir -p /opt/eurion/deploy
sudo tar -xzf kit.tar.gz -C /opt/eurion/deploy3. Write the configuration file
cd /opt/eurion/deploy
sudo cp eurion-config.example.yml eurion-config.yml
sudo nano eurion-config.ymlFill in at least this (every key is explained in The configuration file):
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
cd /opt/eurion/deploy
sudo python3 scripts/gen-config.py eurion-config.yml generatedThe 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
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 prereqsThis 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
gunzip -c ~/eurion-install/images.tar.gz | sudo docker load7. Run the installation
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.ymlIt 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
sudo eurion-ctl status
sudo docker ps --filter health=unhealthy --filter status=restarting # must be emptyThe password for the first administrator account (organization.admin_email):
sudo grep initial_admin_password /opt/eurion/deploy/generated/group_vars/secrets.ymlSign 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:
rm -rf ~/eurion-installWhere things are
| What | Where |
|---|---|
| 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