Element/Matrix Official Docker Install Method?
from a_fancy_kiwi@lemmy.world to selfhosted@lemmy.world on 11 Feb 20:50
https://lemmy.world/post/43025075
from a_fancy_kiwi@lemmy.world to selfhosted@lemmy.world on 11 Feb 20: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? đ
threaded - newest
https://hub.docker.com/r/jevolk/tuwunel
Tuwunnel is a corporate-sponsored successor to Conduwuit.
I prefer Continuwuity which is a non for profit successor to Conduwuit.
Beside this, they are probably mostly the same
Which corporation sponsors Tuwunnel?
Idk but apparently the dev of tuwunel was a dick about the fork splitting.
Jees, whatâs wrong with the original conduit?
That is undisclosed but check the github page, last time I did, it was a one person job and he clearly wrote he got corporate money t do that
For what itâs worth, it sounds like itâs corporate sponsored rather than corporate owned, which is at least a little better in my opinion
Forget about synapse and the âofficialâ method. Install Continuwuity a matrix server written in rust, much much more efficient than synapse.
I took some notes while installing it here wiki.gardiol.org/doku.php?id=matrix%3Aconduwuit
I didnât use docker but directly installation is very easy, itâs a single executable.
Iâll look into it, thanks.
Iâm still in the information gathering phase. Do you know if the element client works with the continuwuity server? Is it as easy as entering the domain, user, and password in the client?
Any client should be compatible with any server, if both are fairly up to date. Though, I never found a client nor server that are actually fully feature complete. The closest to that are synapse and element
Yes both element and elementx and actually any matrix client. Thatâs the beauty of having standards
But its a pain because all clients from matrix. Org will push you to matrix. Org and need manual taps&clicks to select a different server when you sign up the first time. A bit annoying IMHO and maybe even fraudolent.
Oh man I need to look into this synapse is so slow
I saw you recommend Continuwuity on other posts as well. Was just wondering, what made you choose Continuwuity over Tuwunel?
I am asking because I used to host a Continuwuity Matrix Server until a year ago. Recently started to look into hosting a Matrix server once again and found that Tuwunel seems currently ahead of Continuwuity in regards to WebRTC (Element Call) implementation and the sliding sync thingy.
At least they have updated documentation when it comes to WebRTC and how to set it up.
I also installed tuwunnel after conduwuit death. Moved to Continuwuity because of the community vs corporate sponsorship.
I donât keep an eye on who is ahead, but I want to be sure I donât have to migrate in the future so I donât care for development speed, rather continued support and what if tuwunnel company money runs out?
You are recommending to follow your wiki article but it claims to not use it?
Now I donât know what to believe.
Yes need to fix that wording its a leftover, done.
They picked it up again?
Continuwuity was never discontinued, the note was for Conduwuit, I forgot to remove it after updated the article.
Oh I see. Thanks.
Helm is what is used for real world software deployments. It has its problems but itâs better than Docker Compose.
Out of curiosity, what makes it better?
A quick search says itâs a package manger for kubernetes. Besides plex, everything I selfhost is just for me. Would you say helm/kubernetes is worth looking into for a hobbyist who doesnât work in the tech field?
Absolutely no. Kubernetes has itâs benefits and it can make sense to get into it for tinkering etc, but if you just want to set up matrix and not learn an entire new system, stay away from it.
I need to agree here. K8s is only for the real tech savvy people. I'd you are just starting with docker avoid k8s or k3s.
Kubernetes is much more complicated and powerful than Docker, and Docker Compose is more similar to the way you work directly with Kubernetes than it is to Helm, which adds in a templating system. Basically, from a Docker perspective, Helm allows you to configure your compose file, but not just by substituting variables. Helm can make structural changes such as completely adding or removing sections based on the variables used when loading the chart. The output of Helm is YAML, sort of like a compose file.
Kubernetes has a much more complicated system for describing workloads and their resources than Docker Compose, and it is extensible. For example, if you are running on AWS you can have Kubernetes attach EBS volumes to your pods, or if youâre on bare metal you might use LVM, and itâs not limited to things that Kubernetes natively understands like storage volumes: Cert Manager is a common piece of software that is deployed into Kubernetes that takes care of issuing and renewing TLS certificates for other software in Kubernetes.
I used to run Kubernetes at home with ArgoCD, but Iâve moved on to NixOS instead. NixOS is less powerful because it doesnât have dynamic workload scheduling, but I donât actually need dynamic workload scheduling or all the configuration necessary to facilitate dynamic workload scheduling in my house, and Nix is much nicer to work with than Helmâs gotmpl templating. Unless you like this kind of stuff or want to get into Kubernetes, you probably want to avoid it for running a few things on one host.
I deal with kubernetes daily for my job and it manages to melt my brain at least a few times a week. Itâs not bad⌠itâs actually great⌠itâs just⌠a lot. Like, a lot a lot.
For what itâs worth, I do not use it at home, because I prefer to be getting paid when my brain is melting.
Firstly, I wish you the best of luck in your communityâs journey away from Discord. This may be a good time to assess what your community needs from a new platform, since Discord targeted various use-cases that no single replacement platform can hope to replace in full. Instead, by identifying exactly what your group needs and doesnât need, that will steer you in the right direction.
As for Element, bear in mind that their community and paid versions do not exactly target a hobbyist self-hosting clientele. Instead, Element is apparently geared more for enterprise on-premises deployment (like Slack, Atlassian JIRA, Asterisk PBX) and thatâs probably why the community version is also based on Kubernetes. This doesnât mean you canât use it, but their assumptions about deployments are that you have an on-premises cloud.
Fortunately, there are other Matrix homeservers available, including one written in Rust that has both bare metal and Docker deployment instructions. Note that Iâm not endorsing this implementation, but only know of it through this FOSDEM talk describing how they dealt with malicious actors.
As an aside, I have briefly considered Matrix before as a group communications platform, but was put off by their poor E2EE decisions, for both the main client implementation and in the protocol itself. Odd as it sounds, poor encryption is worse than no encryption, because of the false assurance it gives. If I did use Matrix, I would not enable E2EE because it doesnât offer me many privacy guarantees, compared to say, Signal.
This quote from your link on the main client e2ee issues captures the zeitgeist of modern tech so beautifully:
Or try yunohost. Once installed yunohost is managing ssl, domains, install and update matrix and other things if wanted.
Yes, setting up YunoHost on a new Debian VPS was a couple of commands, and having it install Synapse and Element was a few clicks in the UI plus a lot of waiting.
However. I thought of Element as an alternative to Slack or Telegram the way OP thinks of it as an alternative to Discord. I was wrong. Element competes with IRC. This is the only platform from which Iâve seen actual groups of people (FOSS projects) switch to Matrix. I think Matrix focuses on different usage needs than Discord, and trying it with willing Discord users will be an interesting exercise in seeing what perspectives they bring and what issues that raise, but the solution to their problem will be somewhere outside Matrix, and it will be in somewhat distant future, not with the current state of FOSS tools.
Home Gamer: Is this it?
Fair criticism. I just donât have a lot of free time. I can invest in Element but I wanted to crowd source information to see if it was worth it or if there was an easier way. It doesnât get much easier than Docker
I completely support you moving off of Discord, and I completely support you setting up Matrix. I tried a lot, I think it has the most feature parity. That being said, the biggest thing I regret when setting it up is that I went with Synapse for my backend Matrix server, when there are others.
Iâve heard very good things about Conduit (conduit.rs), mostly that itâs easier to stand up and easier to maintain.
Either way, I think itâs a smart move, and itâs worth the investment. Itâs not the easiest to stand up, but operationally our communication should be our own. Expect trial and error, getting one piece up and running, then the next, and then the next. Celebrate small wins like âToday I got it runningâ and then âToday I got federation workingâ, and then âNow I have voice working!â. Otherwise itâs going to feel overwhelming.
I believe in the cause, so feel free to DM me if you have any questions, or send me a DM on Matrix :)
Oh, and a very useful tool - federationtester.matrix.org
This will tell you exactly what is wrong with your federation.
Have you tried Movim? It has most of the essential features, like group video calls, screen sharing, and a better E2EE method than matrix (IMO, anyway). Itâs also much easier to set up and host since it uses XMPP.
My friend group has already moved to Matrix, and weâve been happy
I'd recommend using https://github.com/spantaleev/matrix-docker-ansible-deploy.
This is even the recommended way. If. You are rolling your own docker images for all the supporting containers you are going to have a bad time. OP I guarantee if you see this and shrug it off youâll be back here. Many migrated to this from their custom docker set ups.
See also https://element-hq.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks
If you decide to do this, make sure you block matrix[dot]org, as they host and share a lot of CSAM on that homeserver.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that Iâve seen in this thread:
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]
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 generaterun
register user
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.jsoninside/opt/element-v1.11.109to point location to<your-public-address-subdomain>By default itâs using sqlite if you want postgres or other database then modify
homeserver.yamlto use postgresIf 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: generatedocker 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.0I donât like compose files :)
How do you manage your containers?
I have a git repo with some directory convention and bash scripts. Ex stop is just
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.
Have you considered replace the name with input from stdin? So instead of
name=synapseyou could doname=$1and have one script to use for all containers.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/logsetc. What I havenât figured out is better way to keep all ports in one place instead ofports.mdfile but on the other hand 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.
github.com/element-hq/âŚ/docker-compose.yml
Element has no gif keyboard just so youâre aware. Huge dealbreaker.
Iâve never encountered a gif keyboard that worked well so no big loss.
My keyboard on android has one anyway, so I donât need a built-in one.
But what about on PC? We mostly chat on pcâŚ
Well, then I do without đ or Google some gifs.
I do wish they had a decent gif keyboard, but it seems they are against implementing it due to security concerns. I accept that.
I mean, discord gifs work perfectlyâŚand my friends rely HEAVILY it.
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.