Initial commit
This commit is contained in:
commit
19050d5e60
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.DS_Store
|
||||||
|
.idea
|
||||||
|
*.log
|
||||||
|
tmp/
|
||||||
|
|
||||||
|
./config/dendrite/*
|
68
README.md
Normal file
68
README.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Dendrite Docker Bridges
|
||||||
|
|
||||||
|
A simple way to set up Dendrite with bridges for WhatsApp, Telegram, and Discord.
|
||||||
|
|
||||||
|
## Before Starting
|
||||||
|
|
||||||
|
1. Make sure you set up your domain by following this documentation: [Dendrite Domain Name Setup](https://element-hq.github.io/dendrite/installation/domainname).
|
||||||
|
|
||||||
|
2. Ensure you have `docker` and `docker compose` installed on your server.
|
||||||
|
|
||||||
|
3. All commands will be executed in the project root, i.e., the directory where the repository was cloned.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Clone this repository and enter the directory:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://gitlab.com/rogs/dendrite-docker-bridges.git
|
||||||
|
cd dendrite-docker-bridges
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run `setup.sh`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This script will prompt you for your domain (the one you configured in "Before Starting") and create your private key and config in the `./config/dendrite` directory. When it finishes, make sure to copy the "Registration shared secret," as you will need it for the next step.
|
||||||
|
|
||||||
|
3. Open your configuration file located at `./config/dendrite/dendrite.yaml`. **You may need `sudo` to edit this file.** Search for `registration_shared_secret` and paste the registration secret you copied in the previous step. The section should look similar to this:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
client_api:
|
||||||
|
registration_disabled: true
|
||||||
|
registration_requires_token: false
|
||||||
|
registration_shared_secret: "YourBigCopiedKey123" # This is your key!
|
||||||
|
guests_disabled: false
|
||||||
|
enable_registration_captcha: false
|
||||||
|
recaptcha_api_js_url: ""
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Start Dendrite:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose up -d postgres monolith
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Run `setup-db.sh`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./setup-db.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This script will create three new databases: `whatsapp`, `telegram`, and `discord`. These will be used later for the bridges.
|
||||||
|
|
||||||
|
6. Verify the setup by navigating to `http://your-ip-address:8008` in your browser. You should see a screen similar to this:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# TODO Add picture
|
||||||
|
```
|
||||||
|
|
||||||
|
## That's It!
|
||||||
|
|
||||||
|
Dendrite is now up and running! You can proceed with setting up the bridges:
|
||||||
|
|
||||||
|
- [WhatsApp Bridge](./config/mautrix-whatsapp/README.md)
|
||||||
|
- [Telegram Bridge](./config/mautrix-telegram/README.md)
|
||||||
|
- [Discord Bridge](./config/mautrix-discord/README.md)
|
1
config/mautrix-discord/README.md
Normal file
1
config/mautrix-discord/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# TODO
|
1
config/mautrix-telegram/README.md
Normal file
1
config/mautrix-telegram/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# TODO
|
1
config/mautrix-whatsapp/README.md
Normal file
1
config/mautrix-whatsapp/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# TODO
|
66
docker-compose.yml
Normal file
66
docker-compose.yml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
hostname: postgres
|
||||||
|
image: postgres:15-alpine
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./config/postgres:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: itsasecret
|
||||||
|
POSTGRES_USER: dendrite
|
||||||
|
POSTGRES_DATABASE: dendrite
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U dendrite"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
monolith:
|
||||||
|
hostname: monolith
|
||||||
|
image: matrixdotorg/dendrite-monolith:latest
|
||||||
|
ports:
|
||||||
|
- 8008:8008
|
||||||
|
- 8448:8448
|
||||||
|
volumes:
|
||||||
|
- ./config/dendrite:/etc/dendrite
|
||||||
|
- ./config/mautrix-whatsapp:/etc/whatsapp
|
||||||
|
- ./config/mautrix-telegram:/etc/telegram
|
||||||
|
- ./config/mautrix-discord:/etc/discord
|
||||||
|
- ./config/media:/var/dendrite/media
|
||||||
|
- ./config/jetstream:/var/dendrite/jetstream
|
||||||
|
- ./config/search_index:/var/dendrite/searchindex
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
mautrix-whatsapp:
|
||||||
|
hostname: whatsapp
|
||||||
|
image: dock.mau.dev/mautrix/whatsapp
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./config/mautrix-whatsapp:/data
|
||||||
|
command: ["/usr/bin/mautrix-whatsapp", "--ignore-unsupported-server"]
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
mautrix-telegram:
|
||||||
|
hostname: telegram
|
||||||
|
image: dock.mau.dev/mautrix/telegram
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./config/mautrix-telegram:/data
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
mautrix-discord:
|
||||||
|
hostname: discord
|
||||||
|
image: dock.mau.dev/mautrix/discord
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./config/mautrix-discord:/data
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
22
setup-db.sh
Executable file
22
setup-db.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if the postgres service is running
|
||||||
|
docker compose ps postgres | grep "Up" > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "The postgres service is not running. Please start it with 'docker compose up -d' and try again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Define database names and user
|
||||||
|
DATABASES=("whatsapp" "telegram" "discord")
|
||||||
|
USER="dendrite"
|
||||||
|
|
||||||
|
# Create databases and grant permissions
|
||||||
|
for DB in "${DATABASES[@]}"; do
|
||||||
|
echo "Creating database $DB..."
|
||||||
|
docker compose exec -T postgres psql -U "$USER" -c "CREATE DATABASE $DB;"
|
||||||
|
docker compose exec -T postgres psql -U "$USER" -c "GRANT ALL PRIVILEGES ON DATABASE $DB TO $USER;"
|
||||||
|
echo "Database $DB created and permissions granted."
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All databases created successfully."
|
31
setup.sh
Executable file
31
setup.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Prompt for domain input
|
||||||
|
read -p "Enter your domain (e.g., example.com): " DOMAIN
|
||||||
|
if [[ -z "$DOMAIN" ]]; then
|
||||||
|
echo "Domain cannot be empty. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate private keys
|
||||||
|
echo "Generating private keys..."
|
||||||
|
docker run --rm --entrypoint="/usr/bin/generate-keys" \
|
||||||
|
-v $(pwd)/config/dendrite:/mnt \
|
||||||
|
matrixdotorg/dendrite-monolith:latest \
|
||||||
|
-private-key /mnt/matrix_key.pem
|
||||||
|
|
||||||
|
# Generate configuration
|
||||||
|
echo "Generating configuration with domain: $DOMAIN..."
|
||||||
|
docker run --rm --entrypoint="/bin/sh" \
|
||||||
|
-v $(pwd)/config/dendrite:/mnt \
|
||||||
|
matrixdotorg/dendrite-monolith:latest \
|
||||||
|
-c "/usr/bin/generate-config \
|
||||||
|
-dir /var/dendrite/ \
|
||||||
|
-db postgres://dendrite:itsasecret@postgres/dendrite?sslmode=disable \
|
||||||
|
-server $DOMAIN > /mnt/dendrite.yaml"
|
||||||
|
|
||||||
|
# Generate and display the registration shared secret
|
||||||
|
SHARED_SECRET=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 50)
|
||||||
|
echo
|
||||||
|
echo "Registration shared secret: $SHARED_SECRET"
|
||||||
|
echo "Make sure to copy it!"
|
Loading…
x
Reference in New Issue
Block a user