How to Install Dendrite on Debian Latest

Dendrite is a Matrix server implementation that is written in Go. It provides a fast, reliable, and highly-scalable platform for Matrix communication. This tutorial will help you install Dendrite on Debian Latest.

Requirements

Installation

  1. Update your Debian system:
sudo apt-get update && sudo apt-get upgrade
  1. Install the required packages:
sudo apt-get install -y curl wget git tar gcc rpm gdb make libxml2-dev libpq-dev libsqlite3-dev libssl-dev postgresql postgresql-contrib
  1. Install Golang:
wget https://dl.google.com/go/go1.16.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
  1. Set up your Go environment:
echo 'export PATH=$PATH:/usr/local/go/bin' > ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
  1. Clone the Dendrite git repository:
git clone https://github.com/matrix-org/dendrite.git
  1. Build Dendrite:
cd dendrite
make build
  1. Set up the Database:
sudo nano /etc/postgresql/12/main/pg_hba.conf 

Add the following line:

host    dendrite_db     dendrite        127.0.0.1/32        md5

Save and exit the file.

Then, restart the PostgreSQL service:

sudo service postgresql restart

Create a database user:

sudo -u postgres createuser -P dendrite

Create a database:

sudo -u postgres createdb -O dendrite dendrite_db
  1. Configure Dendrite:
cp dendrite.yaml.example dendrite.yaml
nano dendrite.yaml

Fill in the following details:

postgres:
  connstring: postgres://dendrite:password@localhost/dendrite_db?sslmode=disable
  lazyloadmembers: true

keyserver:
  signing:
    enabled: false
  enabled: true

mediaapi:
  upload:
    local:
      directory: "/tmp/media"
  url: "http://matrix.example.com/_matrix/media"
  
appserviceapi:
  app_service_directory_server:
    http:
      address: matrix.example.com:8000
  1. Start Dendrite:
./bin/dendrite-monolith-server

Congratulations! You have successfully installed Dendrite on Debian Latest!

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!