Commit Graph

50 Commits

Author SHA1 Message Date
mguschin
c11f05481c Fix coturn TLS listeners and pin relay to public IP.
Two problems found once coturn was running:

TLS listeners never started. The live/ certificate files are relative
symlinks into ../../archive/, so mounting live/ alone left them dangling
and coturn silently fell back to no TLS, disabling turns: on 5349.
Prosody's identical mount works only because its entrypoint copies the
files; coturn reads them in place. Mount both trees at their real paths
and reference the cert through live/.

Relay used every interface. Without explicit addresses coturn discovered
all of them and offered relay candidates on the Docker bridges and
loopback -- unreachable for remote peers, and needless exposure of the
internal networks. Pin listening-ip and relay-ip to the public address.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 22:20:37 +03:00
mguschin
3fc1ac3d12 Add TURN/STUN server for audio/video calls.
Jingle A/V (XEP-0166/0167/0176) needs a STUN/TURN server for NAT
traversal. Add coturn and advertise it to clients via XEP-0215.

- coturn container, host networking (a relay needs its full UDP port
  range reachable, and Docker NAT hides the peer addresses coturn needs).
- mod_turn_external in Prosody to advertise the service and mint
  time-limited credentials from a shared secret.
- Advertise UDP and TCP transports plus turns: on 5349, so clients on
  UDP-blocking networks can still connect.
- Deny relaying to private ranges, so this is not an open proxy into
  internal services.

TURN host is guschin.info rather than turn.guschin.info because only the
former is in the certificate SANs and turns: clients validate the name.

TURN_HOST/TURN_SECRET go in .env, which is gitignored and set per
deployment; TURN_SECRET must match static-auth-secret in turnserver.conf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 22:17:44 +03:00
mguschin
218b1be0dd Revert "Remove obsolete xmpp.guschin.info cert references."
This reverts commit 29bfdd417c.
2026-05-10 13:21:07 +03:00
mguschin
29bfdd417c Remove obsolete xmpp.guschin.info cert references.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 13:19:08 +03:00
mguschin
4236bd38e4 Use multi-SAN guschin.info cert for all hosts and components.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 13:07:40 +03:00
mguschin
5a5c5021a3 Expose HTTPS port for file uploads.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 13:01:49 +03:00
mguschin
857ddc48b9 Allow guschin.info users to upload files.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 12:59:04 +03:00
mguschin
9673cd78a3 Fix prosody config. 2026-04-29 21:56:24 +03:00
mguschin
93f32ec3be Fix sligram config. 2026-04-29 21:53:14 +03:00
mguschin
eddb4b3531 Fix prosody conf. 2026-04-29 21:45:21 +03:00
mguschin
bb7596ffdd Fix prosody config. 2026-04-29 21:42:55 +03:00
mguschin
034a12c0fd Fix docker compose. 2026-04-29 21:38:37 +03:00
mguschin
36751f5229 Fix docker compose. 2026-04-29 20:59:12 +03:00
mguschin
e207af3ca6 Fix sligram image path. 2026-04-29 20:22:35 +03:00
mguschin
6feff1c7e6 Tg bridge. 2026-04-29 20:09:17 +03:00
mguschin
2d86df749b chore: release v0.1.1 v0.1.1 2026-03-23 14:57:12 +03:00
mguschin
e78b3474cd fix: fix shell substitution in release-new command context 2026-03-23 14:56:36 +03:00
mguschin
91af50902d chore: release v0.1.0 v0.1.0 2026-03-23 14:55:32 +03:00
mguschin
2e80d75e60 Add changelog service and release-new skill
- cliff.toml: git-cliff config with semantic-style grouping (no conventional commits required)
- CHANGELOG.md: initial changelog generated from full git history
- .claude/commands/release-new.md: /release-new [major|minor|patch] skill that bumps version, updates changelog, commits, tags, and pushes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 14:47:00 +03:00
mguschin
173f3a9705 Add guschin.info VirtualHost alongside xmpp.guschin.info
Users can now register as name@guschin.info or name@xmpp.guschin.info.
Added Let's Encrypt cert mounting and install for guschin.info domain.
Refactored entrypoint cert install into reusable function.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 07:56:48 +03:00
mguschin
eb8a2e3145 Enable mod_mam for persistent direct message archiving
Messages are stored indefinitely in MySQL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:40:03 +03:00
mguschin
86e947efb0 Add ca-certificates to fix s2s TLS verification
Without CA certs, Prosody cannot verify remote servers' certificates,
causing all server-to-server connections to fail with "not trusted".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:29:58 +03:00
mguschin
333df5ca4a Mount only xmpp cert dirs to fix letsencrypt permission errors
Mount specific live/ and archive/ subdirectories instead of all of
/etc/letsencrypt to avoid Prosody scanning root-only directories
(accounts/, archive/ for other domains). Also remove allow_registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:55:56 +03:00
mguschin
c28f5e00bd Enable s2s_require_encryption to match s2s_secure_auth
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:47:55 +03:00
mguschin
e1a4c4b733 Remove obsolete version attribute from docker-compose.yml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:37:50 +03:00
mguschin
6015367332 Fix TLS cert domain mismatch: VirtualHost now matches cert domain
VirtualHost changed from "guschin.info" to "xmpp.guschin.info" to match
the Let's Encrypt certificate. Moved certificates directive before
VirtualHost block. Removed misplaced default_realm and global ssl block.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:31:03 +03:00
mguschin
bdcb7e1709 Fixed tls config.. 2026-02-04 13:52:52 +03:00
mguschin
41dc0258a0 Fix symlinks. 2026-02-04 13:33:27 +03:00
mguschin
7b09ea97ec Fix su prosody (4). 2026-02-04 13:30:56 +03:00
mguschin
e7e784fd64 Fix su prosody (3). 2026-02-04 13:29:45 +03:00
mguschin
4308de8b0e Fix su prosody (2). 2026-02-04 13:28:21 +03:00
mguschin
198a6a584e Fix su prosody. 2026-02-04 13:27:02 +03:00
mguschin
62f31eb7bc Using existing certs.. 2026-02-04 13:25:46 +03:00
mguschin
2485e6fe3f Delete user prosody from entrypoing.. 2026-02-04 13:24:19 +03:00
mguschin
6b6a531256 Delete self signed certs. 2026-02-04 13:19:36 +03:00
mguschin
f55fd8d72c Fix self signed certs. 2026-02-04 13:17:59 +03:00
mguschin
94a293d34d Certs volume. 2026-02-04 13:14:27 +03:00
mguschin
6341d5e707 Fix certs path. 2026-02-04 13:13:46 +03:00
mguschin
b8ce6f7ce0 lua-unbound. 2026-02-04 11:46:18 +03:00
mguschin
865230871a nginx ssl. 2026-02-03 21:53:08 +03:00
mguschin
1097b4b99b certs path. 2026-02-03 21:52:24 +03:00
mguschin
01843cc2a2 certs volume. 2026-02-03 21:50:38 +03:00
mguschin
483f2438f9 certs in docker compose. 2026-02-03 21:47:11 +03:00
mguschin
1b6748717f nginx. 2026-02-03 21:43:44 +03:00
mguschin
f784ee76b4 change ip. 2026-02-03 21:33:56 +03:00
mguschin
973e8d4268 extra hosts. 2026-02-03 21:30:02 +03:00
mguschin
d41888df6e Network. 2026-02-03 21:26:44 +03:00
mguschin
94271ddfb3 MySQL running on host. 2026-02-03 21:03:20 +03:00
mguschin
6b54303482 Init. 2026-02-02 20:12:50 +03:00
b8f89cd286 Initial commit 2026-02-02 20:11:48 +03:00