GuiderChatt och e-postVideomöten med Jitsi Meet

Håll videomöten med Jitsi Meet

Jitsi Meet på Debian 13, videomöten i webbläsaren på din egen server, där bara dina användare kan starta ett möte och gäster ansluter via en länk, med gratis certifikat och utan anrop till externa tjänster.

Testad på Jitsi Meet 2.0.11248 med Prosody 13.0 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 27 september 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

Jitsi Meet är en tjänst för videomöten, som Zoom eller Google Meet, som körs på din egen server. Deltagarna ansluter i webbläsaren via en länk, utan att installera något.

En Jitsi-server består av flera program som samarbetar: webbservern nginx visar sidan, Prosody förmedlar meddelanden mellan deltagarna, videobryggan för över ljud och bild i alla möten, och coturn hjälper deltagare vars nätverk blockerar videobryggan. Guiden använder Jitsis egna Debianpaket, som installeras utan problem på Debian 13 med Debians egen Prosody och Java och körs som vanliga systemtjänster. Jitsis Docker-variant kräver Docker som root, och då öppnas portar förbi ufw. Ge Jitsi en egen server: den tar över port 80 och 443 för nginx.

Från början kan vem som helst som hittar din server starta ett möte på den. I steg 4 ändrar du det, så att bara konton som du skapar kan starta ett möte, medan alla med länken kan ansluta när mötet väl har börjat.

Varje steg nedan har körts på en nyinstallerad VC-P Alloy (2 vCPU, 8 GB) hos Melonslab med Debian 13:

  • Jitsi Meet installerades på ungefär 90 sekunder och fick själv ett certifikat från Let's Encrypt för sitt namn.
  • En gäst som öppnade ett möte ensam fick vänta på en moderator. När en användare hade loggat in och startat mötet kom gästen in. Ett felaktigt lösenord nekades.
  • Två deltagare i Chromium, med testkamera och testmikrofon, skickade och tog emot video via videobryggan på UDP-port 10000, och även direkt till varandra och via coturn.
  • Sidan gjorde inga anrop till andra webbplatser, och servern frågar inte längre Jitsis egen STUN-server om sin adress (steg 6).
  • En uppgradering från Jitsis förra version behöll alla ändringar, och allt startade igen av sig självt efter en omstart av servern.

Med två personer i ett möte använde Jitsis program omkring 700 MB minne tillsammans, det mesta i de två Java-tjänsterna.

Innan du börjar

Du behöver:

  • en nyinstallerad server hos Melonslab med Debian 13 och inget annat installerat;
  • ett namn för den, till exempel meet.example.com, med en A-post och en AAAA-post som pekar på servern. Skapa dem först: installationen begär ett certifikat från Let's Encrypt direkt.

Sätt upp SSH-nycklar, automatiska säkerhetsuppdateringar och ufw enligt steg 1 till 4 i säkerhetsguiden, med regeln för HTTP och HTTPS.

Exemplen använder meet.example.com, 203.0.113.10 som serverns IPv4-adress och 2001:db8::10 som dess IPv6-adress. Byt ut dem genomgående.

1. Öppna portarna

Som root kör du:

ufw allow 10000/udp
ufw allow 3478/udp
ufw allow 5349/tcp

Videobryggan för över mötena på UDP-port 10000. coturn lyssnar på UDP-port 3478, och på TCP-port 5349 med TLS, för deltagare vars nätverk blockerar UDP-port 10000. Reglerna gäller både IPv4 och IPv6.

2. Lägg till Jitsis paketförråd

apt update
apt install -y curl gnupg
curl -fsSL https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor -o /usr/share/keyrings/jitsi-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" > /etc/apt/sources.list.d/jitsi-stable.list
apt update

Paketförrådet är detsamma för alla Debianversioner. På Debian 13 använder Jitsi Debians egen Prosody 13 och Java 21.

3. Installera Jitsi Meet

Installationen frågar efter serverns namn, vilket certifikat den ska använda och en e-postadress för Let's Encrypt. Ge svaren i förväg, med ditt eget namn och din egen adress:

cat <<'EOF' | debconf-set-selections
jitsi-videobridge2 jitsi-videobridge/jvb-hostname string meet.example.com
jitsi-meet-web-config jitsi-meet/cert-choice select Let's Encrypt certificates
jitsi-meet-web-config jitsi-meet/email string anna@example.com
jitsi-meet-web-config jitsi-meet/jaas-choice boolean false
EOF
DEBIAN_FRONTEND=noninteractive apt install -y jitsi-meet

Det sista svaret tackar nej till ett gratiskonto på JaaS, 8x8:s Jitsi som tjänst. Installationen hämtar acme.sh från GitHub, skaffar certifikatet med det och lägger till ett cron-jobb som förnyar det. Den avslutas med en annons för JaaS, som du kan strunta i. Varningar om värdnamnet eller Could not get FQDN gäller ett extra självsignerat certifikat och är ofarliga.

Öppna https://meet.example.com. Sidan erbjuder dig att starta ett möte, och just nu kan vem som helst göra det.

4. Låt bara dina användare starta möten

Jitsi kallar det här en säker domän. Jitsis dokumentation hänvisar numera till signerade token i stället, som kräver en egen inloggningstjänst. En säker domän behöver inget mer, och fungerar som beskrivs här.

Öppna /etc/prosody/conf.avail/meet.example.com.cfg.lua. Under VirtualHost "meet.example.com" ändrar du raden

    authentication = "jitsi-anonymous" -- do not delete me

till:

    authentication = "internal_hashed"

Lägg sedan till det här sist i filen:

VirtualHost "guest.meet.example.com"
    authentication = "jitsi-anonymous"
    c2s_require_encryption = false

Gästerna ansluter till guest.meet.example.com. Namnet finns bara inuti Prosody och behöver ingen DNS-post.

Öppna /etc/jitsi/meet/meet.example.com-config.js. Under hosts:, nedanför raden domain: 'meet.example.com',, lägger du till:

        anonymousdomain: 'guest.meet.example.com',

Öppna /etc/jitsi/jicofo/jicofo.conf och lägg till det här nedanför första raden, jicofo {:

  authentication: {
    enabled: true
    type: XMPP
    login-url: meet.example.com
  }

Starta om tjänsterna och skapa ett konto för varje person som ska kunna starta möten. prosodyctl frågar efter lösenordet två gånger:

systemctl restart prosody jicofo jitsi-videobridge2
prosodyctl adduser anna@meet.example.com

prosodyctl passwd anna@meet.example.com byter lösenord, och prosodyctl deluser anna@meet.example.com tar bort kontot.

5. Håll ett möte

Öppna https://meet.example.com, skriv ett namn på mötet och välj Start meeting och sedan Join meeting. En ruta visar Waiting for a moderator…. Välj Log-in och ange användarnamnet, anna, och lösenordet under User och User password. Välj Login. Mötet börjar, och du är dess moderator.

Skicka adressen i webbläsaren till de andra. De väljer Join meeting och släpps in direkt, utan konto. Om en gäst kommer före dig visas Waiting for a moderator… tills du har loggat in.

Möten med två personer går direkt mellan de två webbläsarna när de når varandra. Från tre personer, eller när de inte når varandra, går allt via videobryggan.

6. Håll externa tjänster utanför

Två inställningar skickar något till andra tjänster från början:

  • Videobryggan frågar en STUN-server som Jitsi driver, meet-jit-si-turnrelay.jitsi.net, efter sin publika adress vid varje start. En server hos Melonslab har sina publika adresser på sitt eget nätverkskort, så den behöver inte fråga.
  • Webbläsarna frågar samma server efter sin adress i möten mellan två personer. Din coturn kan svara i stället.

I /etc/jitsi/videobridge/jvb.conf tar du bort de tre raderna i blocket stun, så att slutet av filen ser ut så här:

ice4j {
    harvest {
        mapping {
            aws {
                enabled = false
            }
        }
    }
}

I /etc/jitsi/meet/meet.example.com-config.js letar du upp raden { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }, under p2p: och ändrar den till:

            { urls: 'stun:meet.example.com:3478' },

Jitsi visar också deltagarnas bilder från Gravatar, en publik tjänst, när de anger en e-postadress i sina inställningar, och skickar då en kod som räknats fram ur adressen till Gravatar. Stäng av det genom att lägga till den här raden direkt nedanför var config = { högst upp i samma fil:

    gravatar: { disabled: true },

Starta sedan om videobryggan:

systemctl restart jitsi-videobridge2

Ändringar i config.js når varje webbläsare nästa gång den laddar sidan.

7. Stäng inställningsfilerna för andra användare

Flera inställningsfiler innehåller lösenorden som Jitsis tjänster använder mot varandra, och alla användare på servern kan läsa dem. Gör dem läsbara bara för root och den tjänst som behöver respektive fil:

chmod o-r /etc/jitsi/jicofo/jicofo.conf /etc/jitsi/videobridge/jvb.conf
chgrp prosody /etc/prosody/conf.avail/meet.example.com.cfg.lua
chgrp turnserver /etc/turnserver.conf
chmod 640 /etc/prosody/conf.avail/meet.example.com.cfg.lua /etc/turnserver.conf
systemctl restart prosody coturn jicofo jitsi-videobridge2

8. Det här är öppet mot internet

ss -tulpn visar fler portar än du har öppnat, men ufw håller resten stängda. Utifrån svarar bara de här:

PortTill
22/tcpSSH
80/tcpOmdirigering till HTTPS, och Let's Encrypt
443/tcpMötessidan, och anslutningen som varje webbläsare håller mot Prosody
10000/udpLjud och bild via videobryggan
3478/udp, 5349/tcpcoturn, för nätverk som blockerar UDP-port 10000

Prosodys portar 5222, 5269 och 5281 lyssnar på alla adresser men är stängda. Videobryggans eget gränssnitt på port 8080 lyssnar bara på 127.0.0.1. curl -s localhost:8080/metrics | grep sending_video på servern visar hur många deltagare som skickar video just nu.

Allt fungerar även över IPv6: nginx och coturn lyssnar på båda adresserna, och videobryggan erbjuder webbläsarna båda. Mötessidan testades över IPv6 från själva servern, och mötena testades över IPv4.

9. Uppdateringar

De automatiska uppdateringarna från säkerhetsguiden installerar Debians säkerhetsuppdateringar, som omfattar nginx, Prosody, Java och coturn. Jitsis egna paket installerar de inte. Uppdatera dem själv när ingen är i ett möte, eftersom tjänsterna startas om:

apt update
apt upgrade

En uppgradering behåller dina ändringar i inställningsfilerna. Certifikatet förnyas av sig självt: /opt/acmesh/.acme.sh/acme.sh --list --home /opt/acmesh/.acme.sh visar när det förnyas nästa gång.

Felsökning

Gästerna ser "Waiting for a moderator…" och kommer aldrig in. Ingen med konto har startat mötet än. Det börjar när någon väljer Log-in i samma möte och loggar in.

Inloggningen visar "Incorrect username or password". Ange namnet utan @meet.example.com. Byt lösenord med prosodyctl passwd anna@meet.example.com.

Du kommer in i mötet, men ingen ser eller hör någon. UDP-port 10000 går inte att nå. Kontrollera att ufw status visar reglerna från steg 1, och att ss -ulpn | grep 10000 visar videobryggans java-process. Med bara två personer kan mötet gå direkt mellan webbläsarna, så prova med en tredje.

Webbläsaren varnar för certifikatet. Let's Encrypt kunde inte nå servern vid installationen, oftast för att A- eller AAAA-posten saknades. När båda pekar på servern kör du /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh anna@example.com meet.example.com.

Ingenting fungerar efter att du ändrat en inställningsfil. Ett skrivfel hindrar en tjänst från att starta. systemctl status prosody jicofo jitsi-videobridge2 visar vilken. Prosodys logg finns i /var/log/prosody, och jicofos och videobryggans i /var/log/jitsi.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider