joplin-notes/joplin notion extension/Web Development/Extras/Tools/xmpp.md
2026-11-04 00:33:23 +05:30

3.8 KiB

xmpp resources https://www.reddit.com/r/xmpp/comments/cavyiv/good_xmpp_clients_and_servers/

clients https://xmpp.org/getting-started/ one such is https://mov.im/login, conversejs and gajim for windows and linux ie https://github.com/gajim/gajim

dino client https://github.com/dino/dino/ after building it,to have different profiles XDG_DATA_HOME="$HOME/.dino_profiles/work/share" XDG_CONFIG_HOME="$HOME/.dino_profiles/work/config" dino or XDG_DATA_HOME="$HOME/.dino_profiles/work/" dino

server

prosody https://prosody.im/doc/installing_from_source

first install lua and all the dependecnies apt install lua5.4 liblua5.4-dev libicu-dev libssl-dev and also luarocks too

then more lua dependencies using luarocks to use luarocks directly luarocks install luaexpat --local --lua-version=5.4 similarly do same for luafilesystem and luaunbound too

this can be headache too like setting ssl and all that thing so using snikket can help too, only con is more space required and cant be simply used in termux

snikket https://snikket.org/service/quickstart/

if using podman then add docker.io/ before images so podman knows to fetch from here and also change the port too by changing snikket.conf and adding these lines

SNIKKET_TWEAK_HTTP_PORT=5080
SNIKKET_TWEAK_HTTPS_PORT=5443

# The primary domain of your Snikket instance
SNIKKET_DOMAIN=snikket.local

# An email address where the admin can be contacted
# (also used to register your Let's Encrypt account to obtain certificates)
SNIKKET_ADMIN_EMAIL=admin@localhost

Also create a .env file and

SNIKKET_DATA_DIR=/home/hpmi/Downloads/executables/Snikket/data

and in compose file make these changes

version: "3.3"

services:
  snikket_proxy:
    container_name: snikket-proxy
    image: docker.io/snikket/snikket-web-proxy:stable
    env_file: snikket.conf
    network_mode: host
    volumes:
      - ${SNIKKET_DATA_DIR}:/snikket
      - acme_challenges:/var/www/html/.well-known/acme-challenge
    restart: "unless-stopped"
  snikket_certs:
    container_name: snikket-certs
    image: docker.io/snikket/snikket-cert-manager:stable
    network_mode: host
    env_file: snikket.conf
    volumes:
      - ${SNIKKET_DATA_DIR}:/snikket
      - acme_challenges:/var/www/.well-known/acme-challenge
    restart: "unless-stopped"
  snikket_portal:
    container_name: snikket-portal
    image: docker.io/snikket/snikket-web-portal:stable
    network_mode: host
    env_file: snikket.conf
    restart: "unless-stopped"

  snikket_server:
    container_name: snikket
    image: docker.io/snikket/snikket-server:stable
    network_mode: host
    volumes:
      - ${SNIKKET_DATA_DIR}:/snikket
    env_file: snikket.conf
    restart: "unless-stopped"

volumes:
  acme_challenges:

so for localhost, need to generate fake certificates

# 1. Create the new folder structure matching the domain
mkdir -p /your/custom/path/letsencrypt/live/snikket.local/

# 2. Generate the certificate with Multi-SAN support
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout /your/custom/path/letsencrypt/live/snikket.local/privkey.pem \
  -out /your/custom/path/letsencrypt/live/snikket.local/fullchain.pem \
  -subj "/CN=snikket.local" \
  -addext "subjectAltName=DNS:snikket.local,DNS:localhost,IP:127.0.0.1,IP:

in /etc/hosts

127.0.0.1    snikket.local share.snikket.local

using this will give invite link for admin docker exec snikket create-invite --admin --group default

since port 5443 is used so add that. eg https://snikket.local:5443/invite/PP46bac4bk0wxHD50RbR7_6G/