Element/Matrix Official Docker Install Method?
from a_fancy_kiwi@lemmy.world to selfhosted@lemmy.world on 11 Feb 12:50
https://lemmy.world/post/43025075

My friends are open to leaving Discord which has finally given me a reason to look into Element/Matrix. I found the install instructions and am immediately put off. Is this it? No official docker compose? 😞

#selfhosted

threaded - newest

yardratianSoma@lemmy.ca on 20 Feb 05:51 next collapse

I was scared off a couple years ago when I attempted to host it myself. I took a break from selfhosting, but now I’m back, and from what I learned in the past, I know now not to torture myself swimming upstream when there are far easier downstream currents to follow.

I’m looking at conduit but I’m currently writing up a doc to plan out the process, and understand it before I actually deploy anything. I don’t want to open ports, don’t need federation and don’t need encryption, since I’ll be using tailscale to host a private server to only members of my tailnet.

I’ll report back, either here or in the main community, because I don’t want to expose ports, rent a VPS or use ansible for a simple private server for less than 10 people.

Decronym@lemmy.decronym.xyz on 11 Feb 17:20 next collapse

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

Fewer Letters More Letters
CSAM Child Sexual Abuse Material
Git Popular version control system, primarily for code
HTTP Hypertext Transfer Protocol, the Web
IP Internet Protocol
LVM (Linux) Logical Volume Manager for filesystem mapping
SSL Secure Sockets Layer, for transparent encryption
TLS Transport Layer Security, supersedes SSL
VPS Virtual Private Server (opposed to shared hosting)
XMPP Extensible Messaging and Presence Protocol (‘Jabber’) for open instant messaging
k8s Kubernetes container management package
nginx Popular HTTP server

9 acronyms in this thread; the most compressed thread commented on today has 8 acronyms.

[Thread #85 for this comm, first seen 12th Feb 2026, 01:20] [FAQ] [Full list] [Contact] [Source code]

vane@lemmy.world on 11 Feb 21:20 collapse

If you’re proficient it’s 30minutes

Something like this for server.

generate config

docker run -it --rm \
    -v <your-data-path>:/data \
    -e SYNAPSE_SERVER_NAME=<your-public-address-subdomain> \
    -e SYNAPSE_REPORT_STATS=no \
    matrixdotorg/synapse:v1.136.0 generate

run

docker run -d \
  --restart=always \
  --name synapse \
  -e SYNAPSE_REPORT_STATS=no \
  -v <your-data-path>:/data \
  -p 8008:8008 matrixdotorg/synapse:v1.136.0

register user

docker exec -ti synapse register_new_matrix_user http://localhost:8008/ -c /data/homeserver.yaml -u <username> -p <password> --exists-ok

Proxy it using ex. openresty / nginx

location / {
        proxy_pass    http://127.0.0.1:8008/;
        proxy_http_version 1.1;
        proxy_set_header    Upgrade         $http_upgrade;
        proxy_set_header    Connection      "upgrade";
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        proxy_connect_timeout 600;
        proxy_read_timeout 86400;
    }

For UI if you want element on your domain, download and unpack tar.gz from.
github.com/element-hq/element-web/releases

Point this location to your proxy server ex. openresty / nginx

location / {
        root /opt/element-v1.11.109;
        index index.html;
    }

Modify config.json inside /opt/element-v1.11.109 to point location to <your-public-address-subdomain>

By default it’s using sqlite if you want postgres or other database then modify homeserver.yaml to use postgres

captcha_incorrect@lemmy.world on 12 Feb 00:30 collapse

If you like compose files: www.composerize.com

docker run -it --rm -v <your-data-path>:/data -e SYNAPSE_SERVER_NAME=<your-public-address-subdomain> -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:v1.136.0 generate:

name: <your project name>
services:
    synapse:
        stdin_open: true
        tty: true
        volumes:
            - <your-data-path>:/data
        environment:
            - SYNAPSE_SERVER_NAME=<your-public-address-subdomain>
            - SYNAPSE_REPORT_STATS=no
        image: matrixdotorg/synapse:v1.136.0
        command: generate

docker run -d --restart=always --name synapse -e SYNAPSE_REPORT_STATS=no -v <your-data-path>:/data -p 8008:8008 matrixdotorg/synapse:v1.136.0:

name: <your project name>
services:
    synapse:
        restart: always
        container_name: synapse
        environment:
            - SYNAPSE_REPORT_STATS=no
        volumes:
            - <your-data-path>:/data
        ports:
            - 8008:8008
        image: matrixdotorg/synapse:v1.136.0

vane@lemmy.world on 12 Feb 05:55 collapse

I don’t like compose files :)

captcha_incorrect@lemmy.world on 13 Feb 00:15 collapse

How do you manage your containers?

vane@lemmy.world on 13 Feb 03:44 collapse

I have a git repo with some directory convention and bash scripts. Ex stop is just

#!/bin/bash
name=synapse
docker stop $name
docker rm $name

etc. depending on what actions I need to do against container I have bash script for that and if I need to perform same action against other container I just copy paste this file and change name variable. I pull this repo to my containers host and just type ./bin/synapse/stop and I stop synapse.

Hope that makes sense.

captcha_incorrect@lemmy.world on 27 Feb 02:07 collapse

Have you considered replace the name with input from stdin? So instead of name=synapse you could do name=$1 and have one script to use for all containers.

vane@lemmy.world on 02 Mar 02:58 collapse

yeah but I don’t mind having duplicated scripts, it’s just easier to go to single script and don’t have to worry about everything else, I keep them like bin/synapse/run, bin/synapse/stop, bin/synapse/logs etc. What I haven’t figured out is better way to keep all ports in one place instead of ports.md file but on the other hand it’s not like I have thousands of containers running.

captcha_incorrect@lemmy.world on 02 Mar 03:31 collapse

it’s not like I have thousands of containers running

I feel you. I have ~20 container files (some are multiple containers in one file, e.g. db and web server) and I seldom have to do changes to them. Once properly configured, I don’t really have to do anything.