Ir al contenido

Element

Installation

Desktop Application

# macOS using Homebrew
brew install element

# Ubuntu/Debian
sudo apt install element-desktop

# Or download from website
# https://element.io/download

# Windows
# Download .exe installer from element.io/download

Docker Installation

# Run Element with Docker
docker run -d -p 8080:8080 \
  --name element \
  vectorim/element-web:latest

# With custom config
docker run -d -p 8080:8080 \
  -v /path/to/config.json:/app/config.json:ro \
  vectorim/element-web:latest

Web Version

# Element is available at https://app.element.io/
# No installation required
# Open in any web browser

First-Time Setup

Account Creation

1. Open Element or https://app.element.io
2. Click "Create Account"
3. Choose homeserver (default: matrix.org)
4. Enter username and password
5. Complete email verification
6. Optionally set up recovery key

Signing In

1. Click "Sign In"
2. Choose homeserver
3. Enter username/email and password
4. Verify device (optional)
5. Complete security setup

Basic Features

Starting Conversations

1. Click "+" next to "Direct messages"
2. Search for user by:
   - Matrix ID: @username:homeserver.com
   - Email address (if published)
   - Username
3. Click user to start direct message

Creating Rooms

1. Click "+" next to "Rooms"
2. Set room name and topic
3. Add initial members
4. Configure encryption (default: enabled)
5. Create room

Alternative: Right-click username > Start new room

Joining Rooms

1. Click "+" > Browse rooms
2. OR click "+" > Join room by address
3. Enter room address: #roomname:homeserver.com
4. Click "Join"
5. Accept room history access

Configuration

Client Settings

Settings > General
├── Language: English (or other)
├── Theme: Light/Dark/Auto
├── Notifications: All/Mentions/Never
├── Auto-play media
├── Compact mode
└── Show hidden events

Security Settings

Settings > Security & Privacy
├── Encryption:
│   └── Enable for all messages (default)
├── Access token:
│   └── View and copy for integrations
├── Deactivate account:
│   └── Permanent deletion option
└── Cross-signing: Setup/verify devices

Notification Configuration

Settings > Notifications
├── Desktop notifications: On/Off
├── Show notifications for:
│   ├── All messages
│   ├── Mentions only
│   └── Never
├── Sound: Enable/Disable
├── Badge count: Show/Hide
└── Email notifications: Configure

Homeserver Selection

Settings > Homeserver
├── Default: matrix.org
├── Alternative homeservers:
│   ├── Gitter: gitter.im
│   ├── Libera.Chat: libera.chat
│   └── Custom: self-hosted instance
└── Switch homeserver: Requires logout/login

Self-Hosting

Synapse Server Installation

# Using Docker Compose (recommended)
git clone https://github.com/matrix-org/synapse.git
cd synapse

# Configure docker-compose
docker-compose -f docker-compose.yml up -d

# Generate configuration
docker exec -it synapse \
  /start.py \
  --server-name example.com \
  --report-stats=yes

# Start server
docker-compose up -d

Synapse Configuration

# homeserver.yaml
server_name: "example.com"
listeners:
  - port: 8008
    tls: false
    resources:
      - names: [client, federation]

database:
  name: psycopg2
  args:
    user: synapse
    password: password
    database: synapse
    host: postgres
    port: 5432

registration_shared_secret: "your_secret_key_here"
enable_registration: true
registration_allow_3pid_lookup: true

media_store_path: "/data/media_store"
uploads_path: "/data/uploads"

# Turn on encryption
support_msisdn_lookup: false

SSL/TLS Configuration

# Install certbot
sudo apt install certbot python3-certbot-nginx

# Get certificate
sudo certbot certonly --standalone -d example.com

# Configure in homeserver.yaml
tls_certificate_path: "/etc/letsencrypt/live/example.com/fullchain.pem"
tls_private_key_path: "/etc/letsencrypt/live/example.com/privkey.pem"

Bridges & Integration

Matrix Bridges

Common bridges:
├── IRC bridge: Connect to IRC networks
├── Telegram bridge: Link Telegram chats
├── Discord bridge: Sync Discord servers
├── Slack bridge: Connect Slack workspaces
├── WhatsApp bridge: WhatsApp integration
└── Signal bridge: Signal protocol integration

Setting Up Bridges

# IRC Bridge Example
# 1. Install mautrix-irc
docker pull dock.mau.dev/mautrix/irc

# 2. Configure registration.yaml
# 3. Create AppService bridge
# 4. Users can join IRC rooms via: #irc_network_#channel:homeserver.com

# 5. To use:
# /invite @irc.appservice:homeserver.com
# !matrix irc network join #channel

Slack Bridge Configuration

# Install slack bridge
docker pull dock.mau.dev/mautrix/slack

# Configuration file setup
# Set Slack App credentials:
# - Client ID
# - Client Secret
# - Bot token

# Install to homeserver
# Configure appservice in synapse config

End-to-End Encryption

Enabling Encryption

Room Settings > Security
├── Encryption: On/Off toggle
├── Encrypted events: All messages from now on
├── View encryption keys: Device verification
└── Device management: Trust/Block devices

Device Verification

1. Settings > Security & Privacy > Sessions
2. Current device shows at top
3. Other devices listed below:
   - Click device to verify
   - Scan QR code OR compare emoji
   - Confirm match
4. Verified devices: Green checkmark

Backup & Recovery

Settings > Security
├── Create Backup:
   └── Generate recovery key
   └── Download and save securely
├── Restore Backup:
   └── Enter recovery key
   └── Restore encrypted messages
└── Recovery phrase:
   └── Alternative backup method

User Management (Self-Hosted)

Creating Users

# Using admin CLI
docker exec synapse \
  register_new_matrix_user \
  -c /homeserver.yaml \
  -u username \
  -p password \
  http://localhost:8008

# Or via Synapse API
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"auth":{},"user_id":"username","password":"password"}' \
  http://localhost:8008/_synapse/admin/v2/users/@username:example.com/register

Admin Commands

# List users
docker exec synapse \
  sqlite3 /data/homeserver.db \
  "SELECT name FROM users LIMIT 10;"

# Deactivate user
curl -X POST \
  -H "Authorization: Bearer admin_token" \
  http://localhost:8008/_synapse/admin/v1/deactivate/@username:example.com

Chat Features

Room Moderation

Room Settings > Members
├── Permissions:
│   ├── Set moderator
│   ├── Set administrator
│   └── Change permissions
├── Kick member:
   └── Remove user from room
├── Ban user:
   └── Prevent re-joining
└── Invite:
   └── Add new members

Message Features

Supported in Element:
├── Text formatting:
│   ├── **Bold**
│   ├── _Italic_
│   ├── `Code`
│   └── Markdown support
├── Reactions: Click message > Add emoji
├── Reply: Right-click > Reply
├── Edit: Long press or right-click > Edit
├── Delete: Long press or right-click > Delete
├── Pin: Set important messages
└── Quote: Reply with quoted text

Voice & Video

Direct Messages:
├── Click call icon (phone)
├── Audio call: Voice only
├── Video call: With webcam
├── Screen share: Share screen
└── Recording: Some versions support

Limitations:
├── Peer-to-peer, not through server
├── WebRTC requirements
├── Browser/app requirements

Advanced Features

Custom Client Configuration

// config.json for self-hosted Element
{
  "default_server_name": "example.com",
  "default_server_config": {
    "m.homeserver": {
      "base_url": "https://example.com"
    },
    "m.identity_server": {
      "base_url": "https://vector.im"
    }
  },
  "brand": "Example",
  "features": {
    "feature_pinning": true,
    "feature_encrypted_search": true
  },
  "jitsi": {
    "preferred_domain": "meet.example.com"
  }
}

Spaces

Organize rooms:
1. Create space (similar to creating room)
2. Add rooms to space
3. Use as folder/community
4. Share space invites
5. Set space permissions

Troubleshooting

Connection Issues

1. Check internet connection
2. Verify homeserver is accessible
3. Try different homeserver
4. Clear browser cache (web version)
5. Restart application (desktop)

Encryption Problems

1. Verify devices are logged in
2. Check device keys in settings
3. Verify cross-signing setup
4. Clear and re-backup keys
5. Clear local data and re-login

Federation Issues (Self-Hosted)

# Check federation connectivity
curl -s https://example.com/.well-known/matrix/server | jq

# Verify DNS SRV records
dig _matrix._tcp.example.com SRV

# Check federation port (8448)
nmap -p 8448 example.com

Security Best Practices

  • Use strong, unique passwords
  • Enable cross-signing verification
  • Regularly backup recovery keys
  • Keep recovery key in secure location
  • Verify device encryption keys
  • Don’t share Matrix ID publicly
  • Use private rooms for sensitive discussions
  • Regularly review active sessions/devices
  • Self-host for maximum privacy/control
  • Keep Synapse updated for security patches

References


Last updated: 2026-03-30