2026-04-01 15:59:11 +02:00

88 lines
1.7 KiB
Nix

{ config, pkgs, ... }:
let
workDir = "/srv/containers/jitsi";
in
{
systemd.tmpfiles.rules = [
"d ${workDir}/web 2775 root admin -"
"d ${workDir}/prosody 2775 root admin -"
"d ${workDir}/jicofo 2775 root admin -"
"d ${workDir}/jvb 2775 root admin -"
];
systemd.targets.jitsi = {
description = "Jitsi containers";
wants = [
"podman-jitsi-web.service"
"podman-jitsi-prosody.service"
"podman-jitsi-jicofo.service"
"podman-jitsi-jvb.service"
];
};
virtualisation.oci-containers.containers = {
jitsi-web = {
image = "docker.io/jitsi/web:stable";
autoStart = true;
ports = [
"0.0.0.0:10006:80"
];
environmentFiles = [
config.age.secrets.jitsi-env.path
];
volumes = [
"${workDir}/web:/config"
];
};
jitsi-prosody = {
image = "docker.io/jitsi/prosody:stable";
autoStart = true;
hostname = "xmpp.meet.jitsi"; # Shit doesn't work otherwise
environmentFiles = [
config.age.secrets.jitsi-env.path
];
volumes = [
"${workDir}/prosody:/config"
];
};
jitsi-jicofo = {
image = "docker.io/jitsi/jicofo:stable";
autoStart = true;
environmentFiles = [
config.age.secrets.jitsi-env.path
];
volumes = [
"${workDir}/jicofo:/config"
];
};
jitsi-jvb = {
image = "docker.io/jitsi/jvb:stable";
autoStart = true;
ports = [
"10000:10000/udp" # ONLY exposed media port
];
environmentFiles = [
config.age.secrets.jitsi-env.path
];
volumes = [
"${workDir}/jvb:/config"
];
};
};
}