This guide outlines the steps to install Trilium on your own server. You might consider this option if you want to set up synchronization or use Trilium in a browser - accessible from anywhere.

## Installation Options

There are several ways to install Trilium on a server, each with its own advantages:

- Recommended: Docker Installation - Available for AMD64 and ARM architectures.
- Packaged Server Installation
- PikaPods managed hosting
- Manual Installation
- Kubernetes
- Cloudron
- HomelabOS
- NixOS Module

The server installation includes both web and mobile frontends.

## Configuration

After setting up your server installation, you may want to configure settings such as the port or enable TLS. Configuration is managed via the Trilium `config.ini` file, which is located in the data directory by default. To begin customizing your setup, copy the provided `config-sample.ini` file with default values to `config.ini`.

You can also review the configuration file to provide all `config.ini` values as environment variables instead.

### Config Location

By default, `config.ini`, the database, and other important Trilium data files are stored in the data directory. If you prefer a different location, you can change it by setting the `TRILIUM_DATA_DIR`environment variable:

    export TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data

### Disabling / Modifying the Upload Limit

If you're running into the 250MB limit imposed on the server by default, and you'd like to increase the upload limit, you can set the `TRILIUM_NO_UPLOAD_LIMIT` environment variable to `true` to disable it completely:

    export TRILIUM_NO_UPLOAD_LIMIT=true

Or, if you'd simply like to increase the upload limit size to something beyond 250MB, you can set the `MAX_ALLOWED_FILE_SIZE_MB` environment variable to something larger than the integer `250` (e.g. `450`in the following example):

    export MAX_ALLOWED_FILE_SIZE_MB=450

### Disabling Authentication

See Authentication.

## Reverse Proxy Setup

To configure a reverse proxy for Trilium, you can use either nginx or Apache. You can also check out the documentation stored in the Reverse proxy folder.

### nginx

Add the following configuration to your `nginx` setup to proxy requests to Trilium:

    location /trilium/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

To avoid limiting the size of payloads, include this in the `server {}` block:

    # Set to 0 for unlimited. Default is 1M.
    client_max_body_size 0;

### Apache

For an Apache setup, refer to the Apache proxy setup guide.