# Prosody XMPP Server 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`