this post was submitted on 11 Feb 2026
1 points (100.0% liked)

Selfhosted

57200 readers
588 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

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? 😞

top 10 comments
sorted by: hot top controversial new old
[–] Shimitar@downonthestreet.eu 1 point 3 weeks ago

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 https://wiki.gardiol.org/doku.php?id=matrix%3Aconduwuit

I didn't use docker but directly installation is very easy, it's a single executable.

[–] Decronym@lemmy.decronym.xyz 1 point 3 weeks ago* (last edited 2 days ago)

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 0 points 2 weeks ago* (last edited 2 weeks ago) (1 child)

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.
https://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 0 points 2 weeks ago (1 child)

If you like compose files: https://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 0 points 2 weeks ago (1 child)

I don't like compose files :)

[–] captcha_incorrect@lemmy.world 0 points 2 weeks ago (1 child)

How do you manage your containers?

[–] vane@lemmy.world 0 points 2 weeks ago* (last edited 2 weeks ago) (1 child)

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 0 points 5 days ago (1 child)

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 1 point 2 days ago (1 child)

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.

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.