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:
# 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:
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)
- Self-signed certificates are auto-generated on first run
- The container depends on an external MySQL network named
mysqlgit_mysql_network
Languages
Shell
60%
Lua
31.1%
Dockerfile
8.9%