Skip to content

Installing the Index

The torrust-index requires a running torrust-tracker.

Global Prerequisites

  • Git - Version Control.
  • cURL - Command line tool and library for transferring data with URLs.
  • Rust/Cargo - Compiler toolchain & Package Manager (cargo).

Install Prerequisites

The frontend can't run on its own and needs and external web server like Apache or NGINX. In this guide we will be using Nginx.

  • Node (version >= 12.0.0)
  • NPM
  • Nginx

Installation for Debian/Ubuntu

Node:

curl -fsSL https://deb.nodesource.com/setup_12.x | bash -
apt-get install -y nodejs

NPM:

sudo apt-get install npm

Nginx:

sudo apt install nginx

For other distros: see Nginx installation tutorial.

Installing the backend

1. Create the torrust install directory (if you haven't already) and clone the repo:

mkdir /opt/torrust
cd /opt/torrust
git clone --recurse-submodules https://github.com/torrust/torrust-index.git

2. Go into the newly cloned folder:

cd torrust-index

3. Change to the backend directory and create a file called: .env:

cd backend
echo "DATABASE_URL=sqlite://data.db?mode=rwc" > .env

4. Then we have to create the SQLite database and run the migrations. Install the sqlx-cli and create the database:

cargo install sqlx-cli
sqlx db setup

5. Now build the backend:

cargo build --release

6. Run the backend once to generate the config.toml file:

./target/release/torrust-index-backend

7. Then edit the config.toml and change at least the following keys:

nano config.toml

[tracker]

  • url: Set to a connection string for the tracker. Eg: udp://TRACKER_IP:6969.
  • api_url: Set to tracker api URL. Default: http://localhost:1212.
  • token: Set this to an access token from the torrust-tracker config.toml.

[net]

  • port: Set to 3000 for this guide. If you choose another port make sure to change the Nginx config as well.

[auth]

  • secret_key: Set to a SECURE randomly generated string.

Running the backend

1. Run the backend using:

cd /opt/torrust/torrust-index/backend
./target/release/torrust-index-backend

Running the backend using Tmux

1. Run the backend using Tmux:

tmux new -s torrust-index
cd /opt/torrust/torrust-index/backend
./target/release/torrust-index-backend

Press CTRL+B D to exit the tmux session without killing it.

Installing the frontend

1. Start with creating a file called '.env':

Make sure to change YOUR_DOMAIN.

cd /opt/torrust/torrust-index/frontend
echo "VITE_API_BASE_URL=https://YOUR_DOMAIN/api" > .env

2. Build the frontend:

npm i
npm run build

After this command successfully completed, a built version of the frontend is in the dist folder. These files will be served by Nginx in the next steps.

NGINX Configuration

1. Create a file in /etc/nginx/sites-available/ called torrust.conf with the following contents:

Make sure to change YOUR_DOMAIN x2, CERT_PATH and CERT_KEY_PATH.

server {
    listen 80;
    server_name YOUR_DOMAIN;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name YOUR_DOMAIN;

    ssl_certificate CERT_PATH;
    ssl_certificate_key CERT_KEY_PATH;

    root /opt/torrust/torrust-index/frontend/dist/;
    location / {
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000/;
    }
}

2. Enable the configuration by making a symlink to the config in the sites-enabled directory:

ln -s /etc/nginx/sites-available/torrust.conf /etc/nginx/sites-enabled/

3. After this you can test the validity of the config by executing nginx -t, if the config is valid you can safely reload Nginx to make the new configuration active:

sudo systemctl reload nginx