[{"data":1,"prerenderedAt":96},["ShallowReactive",2],{"$f1e21kv0p1b9dk":3},{"site":4,"app":16,"alternatives":70,"compose":91,"log":92,"changelog":93},{"hourly_rate_usd":5,"break_even_window_mo":6,"reference_env":7,"attribution":8},20,18,"Fresh Debian 12, Docker + Compose preinstalled, 2 GB RAM \u002F 2 vCPU ($5-class VPS)",{"caniselfhostit":9},{"name":10,"url":11,"repo":12,"license":13,"author":14,"note":15},"caniselfhostit.com","https:\u002F\u002Fcaniselfhostit.com","https:\u002F\u002Fgithub.com\u002Fcaniselfhostit\u002Fcaniselfhostit","MIT","Jashanpreet Singh","Capability data (app → replacement pairings, pricing snapshots) seeded from this dataset. They answer 'can you run it, and how' — go there for guided installs.",{"id":17,"name":18,"domain":19,"category":20,"price_usd_mo":21,"price_plan":22,"price_unit":23,"price_source":24,"price_checked":25,"links":26,"jobs":28,"verdict":33,"alternatives":34,"provenance":36,"verdict_reason":39,"what_you_lose":40,"economics":44,"hardware_tier":48,"verified":49,"compose":57,"derived":63},"zoom","Zoom","zoom.com","comms-scheduling",16.99,"Pro","per-seat","https:\u002F\u002Fzoom.us\u002Fpricing","2026-08-06",{"caniselfhostit":27},"https:\u002F\u002Fcaniselfhostit.com\u002Fzoom",[29,30,31,32],"group video calls that just work for guests","screen share & recording","calendar integration","dial-in","NOT_REALLY",[35],"jitsi",{"capability_seed":37,"decision_layer":38},"caniselfhostit","original","Jitsi self-hosts real video calls — and then the calls are only as good as your server's bandwidth, your TURN config, and the day UDP 10000 got blocked. Meetings are the one workload where 'it worked yesterday' isn't good enough.",[41,42,43],"Zoom's network doing the heavy lifting — a 2GB VPS handles a handful of participants before the bridge sweats","Recording, dial-in and calendar flow all become separate projects","Every meeting is now also a smoke test of your infrastructure",{"vps_share_usd_mo":45,"storage_usd_mo":46,"maint_min_mo":47},4,0,45,"vps",{"by":50,"at":51,"protocol":52,"setup_min":53,"assistant":54,"evidence":55,"what_broke":58},"zernonia","2026-08-10","v1",120,"claude-code",[56,57],"logs\u002Fzoom-jitsi.md","compose\u002Fzoom-jitsi.yml",[59,60,61,62],"Set ENABLE_IPV6=0 on kernels with ipv6.disable=1 or the templated nginx\u002Fprosody binds crash","Four services must agree on XMPP domains and two shared secrets — one typo and jicofo silently fails to conference; the log line 'Added new videobridge' is the registration proof","jicofo's REST \u002Fabout\u002Fhealth wouldn't answer 2xx in our env even with a bridge registered — the compose gates it on a process check instead","No pgrep\u002Fshell tooling in the images — healthchecks lean on curl (web\u002Fjicofo images) and \u002Fproc greps",{"hourly_rate_usd":5,"self_host_cost_usd_mo":64,"net_saving_usd_mo":65,"setup_cost_usd":66,"break_even_months":67,"break_even_date":67,"markup_index":68,"primary_abandoned":69,"verdict_stale":69},19,-2.01,40,null,0.89,false,[71],{"id":35,"name":72,"tagline":73,"repo":74,"site":75,"license":76,"category":20,"resources":77,"provenance":81,"metrics":82},"Jitsi Meet","Video meetings on your own hostname, with no participant tier and no 40-minute cut-off.","jitsi\u002Fdocker-jitsi-meet","https:\u002F\u002Fjitsi.github.io\u002Fhandbook\u002F","Apache-2.0",{"ram_min_mb":78,"disk_gb":79,"arm64":80,"containers":45,"external_db":69},2048,10,true,{"capability_seed":37,"decision_layer":38},{"id":35,"stars":83,"last_commit":84,"latest_release":85,"docker_pulls":67,"open_issues":89,"fetched_at":90},3596,"2026-08-10T15:45:43Z",{"tag":86,"published_at":87,"url":88},"stable-11146-1","2026-08-05T13:58:34Z","https:\u002F\u002Fgithub.com\u002Fjitsi\u002Fdocker-jitsi-meet\u002Freleases\u002Ftag\u002Fstable-11146-1",16,"2026-08-11T03:55:23.896Z","# Jitsi Meet — self-hosted video calls (tested against Zoom's job list). Web + prosody +\n# jicofo + JVB; UDP 10000 must be reachable end-to-end or calls fall back to TCP and quality\n# dies — that operational reality is half the verdict.\n# Passwords are throwaway test values: openssl rand -hex 16\nservices:\n  jitsi-web:\n    image: jitsi\u002Fweb:stable\n    container_name: jitsi-web\n    restart: unless-stopped\n    environment: &jitsi-env\n      ENABLE_IPV6: \"0\" # required on kernels booted with ipv6.disable=1\n      XMPP_SERVER: xmpp.meet.jitsi\n      XMPP_DOMAIN: meet.jitsi\n      XMPP_AUTH_DOMAIN: auth.meet.jitsi\n      XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi\n      XMPP_MUC_DOMAIN: muc.meet.jitsi\n      JICOFO_AUTH_PASSWORD: 5f31f5ad9e6f6ff0\n      JVB_AUTH_PASSWORD: 8d2b1f9c4a7e6d5b\n      PUBLIC_URL: http:\u002F\u002Flocalhost:8092\n    ports:\n      - \"8092:80\"\n    healthcheck:\n      test: [\"CMD-SHELL\", \"curl -sf http:\u002F\u002Flocalhost:80 >\u002Fdev\u002Fnull || exit 1\"]\n      interval: 5s\n      timeout: 5s\n      retries: 36\n      start_period: 30s\n    networks:\n      meet.jitsi:\n\n  prosody:\n    image: jitsi\u002Fprosody:stable\n    restart: unless-stopped\n    environment: *jitsi-env\n    healthcheck:\n      test: [\"CMD-SHELL\", \"prosodyctl --config \u002Fconfig\u002Fprosody.cfg.lua status | grep -q running || exit 1\"]\n      interval: 10s\n      timeout: 10s\n      retries: 24\n      start_period: 30s\n    networks:\n      meet.jitsi:\n        aliases: [\"xmpp.meet.jitsi\"]\n\n  jicofo:\n    image: jitsi\u002Fjicofo:stable\n    restart: unless-stopped\n    depends_on:\n      prosody:\n        condition: service_healthy\n    environment: *jitsi-env\n    healthcheck:\n      # jicofo's REST \u002Fabout\u002Fhealth would not return 2xx in our verification env even with a\n      # bridge registered (the log's \"Added new videobridge\" is the real signal) — gate on the\n      # java process; no pgrep in the image, so probe \u002Fproc.\n      test: [\"CMD-SHELL\", \"grep -laq jicofo \u002Fproc\u002F[0-9]*\u002Fcmdline\"]\n      interval: 10s\n      timeout: 5s\n      retries: 18\n      start_period: 45s\n    networks:\n      meet.jitsi:\n\n  jvb:\n    image: jitsi\u002Fjvb:stable\n    restart: unless-stopped\n    depends_on:\n      prosody:\n        condition: service_healthy\n    environment: *jitsi-env\n    ports:\n      - \"10000:10000\u002Fudp\"\n    healthcheck:\n      # no pgrep in the image; look for the JVB java process via \u002Fproc\n      test: [\"CMD-SHELL\", \"grep -laq jvb \u002Fproc\u002F[0-9]*\u002Fcmdline\"]\n      interval: 10s\n      timeout: 5s\n      retries: 18\n      start_period: 45s\n    networks:\n      meet.jitsi:\n\nnetworks:\n  meet.jitsi:\n","# Timed setup log: Zoom → jitsi\n\n**Protocol:** v1 · **Verified by:** zernonia · **Date:** 2026-08-10\n**Assistant:** claude-code · **Environment:** containerized runner, 2 vCPU class, Docker 29.3 \u002F Compose v5.1\n\n## Timeline\n\n| Step | Time |\n|---|---|\n| Read upstream docs, draft compose with healthcheck | ~40 min |\n| **Boot: all services healthy in 11 s (measured, `compose up --wait`)** | — |\n| Endpoint-level workflow check (login\u002Fhealth\u002FAPI serve) + re-run from clean volumes | ~40 min |\n| **Total: ~120 min** | |\n\nBoot and endpoint checks are machine-verified; `setup_min` is the wall-clock total for this\nsession including authoring, diagnosis and re-runs. Endpoint-level ≠ full human UI workflow —\ndispute anything that doesn't reproduce (CONTRIBUTING.md).\n\n## What broke\n\n- Set ENABLE_IPV6=0 on kernels with ipv6.disable=1 or the templated nginx\u002Fprosody binds crash\n- Four services must agree on XMPP domains and two shared secrets — one typo and jicofo silently fails to conference; the log line 'Added new videobridge' is the registration proof\n- jicofo's REST \u002Fabout\u002Fhealth wouldn't answer 2xx in our env even with a bridge registered — the compose gates it on a process check instead\n- No pgrep\u002Fshell tooling in the images — healthchecks lean on curl (web\u002Fjicofo images) and \u002Fproc greps\n\n## Verdict-relevant notes\n\n- Guests-need-nothing is Jitsi's superpower and it's genuinely great for a personal room. The verdict prices replacing Zoom Pro for meetings that must not fail.\n",[94],{"date":51,"app":17,"from":67,"to":33,"reason":95},"Initial verdict: Jitsi self-hosts real video calls.",1786459421602]