nix-flakes/hosts/server/hikari/default/services/nextcloud.nix
imnyang bbac123a8d
Some checks failed
CI / check (push) Has been cancelled
CI / ida (push) Has been cancelled
CI / cpt (push) Has been cancelled
CI / build-nixos (ena) (push) Has been cancelled
CI / build-nixos (hako) (push) Has been cancelled
CI / build-nixos (kazusa) (push) Has been cancelled
CI / build-nixos (mizuki) (push) Has been cancelled
wow
2026-07-03 00:45:07 +09:00

133 lines
2.8 KiB
Nix

{ ... }:
{
networking.firewall.allowedTCPPorts = [
60300
9980
];
virtualisation.quadlet = {
networks.nextcloud = { };
containers = {
nextcloud-db = {
containerConfig = {
image = "postgres:17";
networks = [ "nextcloud" ];
volumes = [
"/data/nextcloud/db:/var/lib/postgresql/data:Z"
];
environmentFiles = [
"/data/nextcloud/db.env"
];
exec = "postgres -c listen_addresses='*' -c unix_socket_directories=''";
};
serviceConfig.Restart = "always";
};
nextcloud-redis = {
containerConfig = {
image = "redis:alpine";
networks = [ "nextcloud" ];
};
serviceConfig.Restart = "always";
};
nextcloud-app = {
containerConfig = {
image = "nextcloud:apache";
publishPorts = [ "60300:80" ];
networks = [ "nextcloud" ];
volumes = [
"/mnt/snow/Docker/nextcloud/data:/var/www/html:z"
];
# environments로 변경 및 attrset 형식으로 정의
environments = {
POSTGRES_HOST = "nextcloud-db";
REDIS_HOST = "nextcloud-redis";
NEXTCLOUD_OVERWRITEPROTOCOL = "https";
};
environmentFiles = [
"/data/nextcloud/db.env"
];
};
unitConfig = {
Requires = [
"nextcloud-db.service"
"nextcloud-redis.service"
];
After = [
"nextcloud-db.service"
"nextcloud-redis.service"
];
};
serviceConfig.Restart = "always";
};
nextcloud-cron = {
containerConfig = {
image = "nextcloud:apache";
networks = [ "nextcloud" ];
volumes = [
"/mnt/snow/Docker/nextcloud/data:/var/www/html:z"
];
exec = "/cron.sh";
};
unitConfig = {
Requires = [
"nextcloud-db.service"
"nextcloud-redis.service"
];
After = [
"nextcloud-db.service"
"nextcloud-redis.service"
];
};
serviceConfig.Restart = "always";
};
collabora = {
containerConfig = {
image = "collabora/code:latest";
hostname = "collabora";
publishPorts = [ "9980:9980" ];
addCapabilities = [ "MKNOD" ];
podmanArgs = [
"--privileged"
"--tty"
];
# environments로 변경 및 attrset 형식으로 정의
environments = {
extra_params = "--o:ssl.enable=false --o:ssl.termination=true";
};
};
serviceConfig.Restart = "always";
};
};
};
}