2026-02-02 20:12:50 +03:00
|
|
|
# Prosody XMPP Server
|
2026-02-02 20:11:48 +03:00
|
|
|
|
2026-02-02 20:12:50 +03:00
|
|
|
Dockerized Prosody XMPP server with MySQL backend.
|
|
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
|
|
- Docker and Docker Compose
|
|
|
|
|
- External MySQL network: `mysqlgit_mysql_network`
|
|
|
|
|
- Environment variables configuration (see Configuration section)
|
|
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
|
|
This setup uses environment variables for configuration. Create a `.env` file in the project root with:
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
# XMPP Configuration
|
|
|
|
|
XMPP_DOMAIN=xmpp.guschin.info
|
|
|
|
|
XMPP_USER=mish
|
|
|
|
|
XMPP_PASSWORD=your_password
|
|
|
|
|
|
|
|
|
|
# MySQL Configuration
|
|
|
|
|
MYSQL_HOST=mysql
|
|
|
|
|
MYSQL_USER=prosody
|
|
|
|
|
MYSQL_PASSWORD=your_mysql_password
|
|
|
|
|
MYSQL_DATABASE=prosody
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Starting the Server
|
|
|
|
|
|
|
|
|
|
Run from the project directory:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will:
|
|
|
|
|
- Build and start the Prosody container
|
|
|
|
|
- Connect to external MySQL network (`mysqlgit_mysql_network`)
|
|
|
|
|
- Wait for MySQL to be ready
|
|
|
|
|
- Generate self-signed SSL/TLS certificates (if not present)
|
|
|
|
|
- Configure Prosody with MySQL backend
|
|
|
|
|
|
|
|
|
|
## Access Points
|
|
|
|
|
|
|
|
|
|
| Service | Port | Description |
|
|
|
|
|
|---------|------|-------------|
|
|
|
|
|
| C2S (Client to Server) | 5222 | XMPP client connections |
|
|
|
|
|
| S2S (Server to Server) | 5269 | XMPP federation |
|
|
|
|
|
| Component Protocol | 5347 | External components |
|
|
|
|
|
| HTTP/BOSH/WebSocket | 5280 | Web-based connections |
|
|
|
|
|
| HTTPS | 5281 | Secure web connections |
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
- **Virtual Host**: `xmpp.guschin.info`
|
|
|
|
|
- **Multi-User Chat (MUC)**: `muc.xmpp.guschin.info`
|
|
|
|
|
- **Storage**: MySQL backend with SQL storage
|
|
|
|
|
- **Admin User**: `admin@guschin.info`
|
|
|
|
|
- **Health Checks**: Automatic container health monitoring
|
|
|
|
|
- **Memory Limit**: 200M
|
|
|
|
|
- **Auto-restart**: Container restarts unless stopped
|
|
|
|
|
|
|
|
|
|
## Enabled Modules
|
|
|
|
|
|
|
|
|
|
Core modules: roster, saslauth, tls, dialback, disco, carbons, pep, private, blocking, vcard, version, uptime, time, ping, register, last_activity, admin_adhoc, muc_mam
|
|
|
|
|
|
|
|
|
|
## Data Persistence
|
|
|
|
|
|
|
|
|
|
Volumes are mounted to persist data:
|
|
|
|
|
- `./data/prosody` → `/var/lib/prosody`
|
|
|
|
|
- `./logs/prosody` → `/var/log/prosody`
|
|
|
|
|
- `./data/prosody/configuration` → `/etc/prosody/conf.d`
|
|
|
|
|
|
|
|
|
|
## Connecting Clients
|
|
|
|
|
|
|
|
|
|
Use any XMPP client with:
|
|
|
|
|
- **Server**: xmpp.guschin.info
|
|
|
|
|
- **Port**: 5222
|
|
|
|
|
- **Username**: your configured user
|
|
|
|
|
- **Domain**: xmpp.guschin.info
|
|
|
|
|
|
|
|
|
|
## Notes
|
|
|
|
|
|
|
|
|
|
- TLS encryption is not required by default (configurable in [prosody.cfg.lua](data/prosody/configuration/prosody.cfg.lua))
|
|
|
|
|
- Self-signed certificates are auto-generated on first run
|
|
|
|
|
- The container depends on an external MySQL network named `mysqlgit_mysql_network`
|