Home » Education » Running Matrix Synapse Home Server in Docker on Ubuntu Server

Running Matrix Synapse Home Server in Docker on Ubuntu Server

Written By i12bretro on Monday, Jun 27, 2022 | 05:00 AM

 
#Matrix #Synapse #SecureCommunication #Docker *** Updated 04/18/2023 Full steps can be found at https://i12bretro.github.io/tutorials/0662.html What is Matrix? Matrix is an open source project that publishes the Matrix open standard for secure, decentralised, real-time communication, and its Apache licensed reference implementations. - https://matrix.org   Installing Docker    01. Log into the Linux host    02. Run the following commands in a terminal window          # install prerequisites          sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y          # add docker gpg key          curl -fsSL https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release)/gpg | sudo apt-key add -          # add docker software repository          sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release) $(lsb_release -cs) stable"          # install docker          sudo apt install docker-ce docker-compose containerd.io -y          # enable and start docker service          sudo systemctl enable docker && sudo systemctl start docker          # add the current user to the docker group          sudo usermod -aG docker $USER          # reauthenticate for the new group membership to take effect          su - $USER   Running Matrix Synapse    01. Continue with the following commands in terminal to setup and run Matrix Synapse          # create working directories          sudo mkdir ~/docker/matrix-synapse -p && sudo mkdir ~/docker/postgresql -p          # set owner of docker directory          sudo chown "$USER":"$USER" ~/docker -R          # run the postgesql docker container          docker run -d --name postgres -e POSTGRES_USER=matrix_synapse_rw -e POSTGRES_PASSWORD=m@trix! -e POSTGRES_DB=matrix_synapse -e LC_COLLATE='C' -e LC_CTYPE='C' -e POSTGRES_INITDB_ARGS="--encoding=UTF-8" -v ~/docker/postgresql:/var/lib/postgresql/data --restart=unless-stopped postgres:latest          # generate synapse homeserver.yaml          docker run -it --rm -v ~/docker/matrix-synapse:/data -e SYNAPSE_SERVER_NAME=my.matrix.host -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate          # edit the homeserver.yaml file          sudo nano ~/docker/matrix-synapse/homeserver.yaml    02. Press CTRL+W and search for name: server_name          server_name: "YOUR.MATRIX.DNS"    03. Press CTRL+W and search for name: sqlite3    04. Comment out the sqlite database parameters by adding a # to the beginning of each of the lines    05. Add the following database connection below the commented out lines to connect to the Postgres container:          database:           name: psycopg2           txn_limit: 10000           args:            user: matrix_synapse_rw            password: m@trix!            database: matrix_synapse            host: postgres            port: 5432            cp_min: 5            cp_max: 10    06. Add the following line at the bottom of the file          suppress_key_server_warning: true    07. Press CTRL+O, Enter, CTRL+X to write the changes    08. Continue with the following commands in terminal          # generate a random string          RANDOMSTRING=$(openssl rand -base64 30)          # write the random string as registration_shared_secret          echo "registration_shared_secret: $RANDOMSTRING" | sudo tee -a ~/docker/matrix-synapse/homeserver.yaml ≫ /dev/null          # run the matrix synapse container          docker run -d --name matrix-synapse --link postgres -v ~/docker/matrix-synapse:/data -p 8008:8008 --restart=unless-stopped matrixdotorg/synapse:latest          # create a new synapse user          docker exec -it matrix-synapse register_new_matrix_user http://DNSorIP:8008 -c /data/homeserver.yaml    09. Enter a username, enter and confirm the password and choose if the user is an admin    10. At this point the Matrix Synapse server is running over http    11. Open a web browser and navigate to the http://DNSorIP:8008    12. A message stating It works! Synapse is running should be displayed    13. Navigate to https://element.io/get-started#download    14. Download and install Element    15. Run the Element application    16. Click Sign In    17. Click the Edit link next to matrix.org    18. Select Other homeserver ≫ type http://DNSorIP:8008 ≫ Click Continue    19. Login using the Synapse username and password created earlier   Documentation:  https://registry.hub.docker.com/r/matrixdotorg/synapse/   ### Connect with me and others ### ★ Discord: https://discord.com/invite/EzenvmSHW8 ★ Reddit: https://reddit.com/r/i12bretro ★ Twitter: https://twitter.com/i12bretro