ops: paivana and caddy config refresh

This commit is contained in:
Hernâni Marques 2026-09-09 00:52:54 +02:00
parent d8dbc6242b
commit 56f814a6de
No known key found for this signature in database
74 changed files with 4517 additions and 79 deletions

View file

@ -0,0 +1,55 @@
# koopa-meet-web — Jitsi Meet web assets on CachyOS
# Build: bash ~/koopa-admin-log/scripts/meet/build.sh → localhost/koopa-meet-web:cachyos
#
# Full Meet needs prosody + jicofo + jvb (see compose.yml). This image serves
# the static web UI via nginx from Arch/CachyOS packages + upstream meet tarball.
# Signaling/media containers are separate services in the same compose.
ARG CACHYOS_IMAGE=docker.io/cachyos/cachyos:latest
FROM ${CACHYOS_IMAGE}
ARG JITSI_MEET_VERSION=stable
ARG JITSI_MEET_URL=https://download.jitsi.org/jitsi-meet/src/jitsi-meet-1.0.0.tar.bz2
ENV TZ=Europe/Zurich
RUN pacman -Syu --noconfirm --needed \
bash curl ca-certificates catatonit tar nginx \
&& pacman -Scc --noconfirm \
&& rm -rf /var/cache/pacman/pkg/* /tmp/*
# CachyOS/Arch nginx.conf embeds a default server and does NOT include http.d/.
# Replace it with a minimal conf that serves the branded landing.
RUN mkdir -p /usr/share/jitsi-meet /etc/nginx/http.d \
&& printf '%s\n' \
'worker_processes 1;' \
'events { worker_connections 1024; }' \
'http {' \
' include mime.types;' \
' default_type application/octet-stream;' \
' sendfile on;' \
' keepalive_timeout 65;' \
' server {' \
' listen 80 default_server;' \
' server_name _;' \
' root /usr/share/jitsi-meet;' \
' index index.html;' \
' location / { try_files $uri $uri/ /index.html; }' \
' }' \
'}' > /etc/nginx/nginx.conf \
&& printf '%s\n' \
'<!doctype html><html lang=en><meta charset=utf-8>' \
'<meta name=viewport content="width=device-width,initial-scale=1">' \
'<title>meet.hacktivism.ch</title>' \
'<style>body{font-family:system-ui,sans-serif;max-width:40rem;margin:3rem auto;padding:0 1rem;line-height:1.5}' \
'code{background:#f2f2f2;padding:.1rem .35rem;border-radius:4px}</style>' \
'<h1>meet.hacktivism.ch</h1>' \
'<p>Jitsi Meet <strong>web</strong> (CachyOS). Signaling/media (prosody / jicofo / jvb) is Phase&nbsp;2 — see compose + README.</p>' \
'<p>HTTP OK on host port <code>9031</code>. Full rooms need UDP/JVB after Phase&nbsp;2.</p>' \
> /usr/share/jitsi-meet/index.html
COPY entrypoint.sh /docker-entrypoint.sh
RUN chmod 755 /docker-entrypoint.sh
EXPOSE 80
ENTRYPOINT ["/usr/bin/catatonit", "--", "/docker-entrypoint.sh"]

23
configs/meet/README.md Normal file
View file

@ -0,0 +1,23 @@
# Meet (Jitsi) — CachyOS web stub (koopa)
| Item | Value |
|------|--------|
| Public site | `meet.hacktivism.ch` |
| Public port | **9031** (`koopa-paivana-meet`) |
| Backend | `127.0.0.1:19131` (`koopa-meet-web`) |
| Image (web) | `localhost/koopa-meet-web:cachyos` |
| Live dir | `/home/hernani/koopa-meet/` |
Phase 1 = Caddy vhost + branded nginx landing on CachyOS (`koopa-meet-web`) behind Paivana (GOA:42).
Phase 2 = prosody + jicofo + jvb — scaffold in `compose.phase2.yml` (`profiles: [phase2]`); images under `configs/meet/phase2/` still TODO. Not `docker-jitsi-meet` Debian by default.
UDP/JVB and TURN need VeciGate once rooms work (range TBD in `ports.md`).
## Caddy
Caddy stays on `127.0.0.1:9031` (paywall). App bind is loopback `19131` only.
```bash
sudo bash /path/to/koopa-admin-log/scripts/caddy/caddy-apply.sh \
--snippet …/configs/caddy/meet.hacktivism.ch.caddy \
--site meet.hacktivism.ch --port 9031 --label meet
```

View file

@ -0,0 +1,49 @@
# Phase-2 stubs — NOT started by default.
# Usage (after images exist):
# cd ~/koopa-meet && podman-compose -f compose.yml -f compose.phase2.yml up -d
#
# Do not pull official docker-jitsi-meet Debian images as the default base.
# Build CachyOS (or pinned binary) images under configs/meet/phase2/ when ready.
services:
prosody:
profiles: ["phase2"]
image: localhost/koopa-meet-prosody:cachyos
container_name: koopa-meet-prosody
restart: unless-stopped
environment:
- TZ=Europe/Zurich
# ports / volumes: fill when Containerfile exists
labels:
org.hacktivism.service: meet-prosody
org.hacktivism.site: meet.hacktivism.ch
org.hacktivism.phase: "2"
jicofo:
profiles: ["phase2"]
image: localhost/koopa-meet-jicofo:cachyos
container_name: koopa-meet-jicofo
restart: unless-stopped
environment:
- TZ=Europe/Zurich
depends_on:
- prosody
labels:
org.hacktivism.service: meet-jicofo
org.hacktivism.site: meet.hacktivism.ch
org.hacktivism.phase: "2"
jvb:
profiles: ["phase2"]
image: localhost/koopa-meet-jvb:cachyos
container_name: koopa-meet-jvb
restart: unless-stopped
environment:
- TZ=Europe/Zurich
# UDP host publish TBD in ports.md when allocated
depends_on:
- prosody
labels:
org.hacktivism.service: meet-jvb
org.hacktivism.site: meet.hacktivism.ch
org.hacktivism.phase: "2"

26
configs/meet/compose.yml Normal file
View file

@ -0,0 +1,26 @@
# koopa-meet — Jitsi Meet (CachyOS web stub + follow-up signaling/media)
# Live: /home/hernani/koopa-meet/
# Public :9031 = koopa-paivana-meet (shared paivana image).
# Backend loopback only — Paivana DEST → 127.0.0.1:19131
#
# Next: add prosody / jicofo / jvb services (CachyOS images or pinned binaries).
# Official docker-jitsi-meet is Debian-based — do not pull those as default here.
services:
meet-web:
image: localhost/koopa-meet-web:cachyos
build:
context: .
dockerfile: Containerfile
container_name: koopa-meet-web
restart: unless-stopped
environment:
- TZ=Europe/Zurich
ports:
- "127.0.0.1:${BACKEND_PORT:-19131}:80"
labels:
org.hacktivism.service: meet
org.hacktivism.backend_port: "${BACKEND_PORT:-19131}"
org.hacktivism.site: meet.hacktivism.ch
org.hacktivism.managed_by: koopa-admin
org.hacktivism.port_status: backend-19131-paywall-9031
org.hacktivism.image_base: cachyos

3
configs/meet/entrypoint.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
exec nginx -g 'daemon off;'