Files
My_NixOS_Config/home-manager/homeserver/containers/nextcloud.nix
T
2026-06-23 00:39:03 +01:00

99 lines
2.6 KiB
Nix

{
inputs,
outputs,
lib,
config,
pkgs,
unstablePkgs,
...
}: {
services.podman = {
networks = {
nextcloud-net = {};
};
containers = {
nextcloud = {
image = "docker.io/library/nextcloud:fpm-alpine";
autoUpdate = "registry";
network = [
"nextcloud-net"
"proxy-net"
];
environment = {
NEXTCLOUD_URL = "nextcloud.bulba.space";
TRUSTED_DOMAINS = "nextcloud.bulba.space";
TRUSTED_PROXIES = "192.168.12.254";
MYSQL_HOST = "nextcloud-db";
MYSQL_DATABASE = "nextcloud";
MYSQL_USER = "nextcloud";
MYSQL_PASSWORD = config.sops.secrets.nextcloud-db_password.path;
};
volumes = [
"/home/cianh/Nextcloud/:/var/www/html"
];
extraConfig = {
Unit = {
After = "podman-nextcloud-db.service";
Requires = "podman-nextcloud-db.service";
};
};
};
nextcloud-db = {
image = "docker.io/library/mariadb:11.4.5";
autoUpdate = "registry";
network = ["nextcloud-net"];
environment = {
MYSQL_DATABASE = "nextcloud";
MYSQL_USER = "nextcloud";
MYSQL_PASSWORD = config.sops.secrets.nextcloud-db_password.path;
MYSQL_ROOT_PASSWORD = config.sops.secrets.nextcloud-db_rootpassword.path;
};
volumes = [
"/home/cianh/nextcloud_db:/var/lib/mysql"
];
};
nextcloud-collabora = {
image = "docker.io/collabora/code:latest";
autoUpdate = "registry";
network = [
"nextcloud-net"
"proxy-net"
];
environment = {
username = "admin";
password = config.sops.secrets.nextcloud-collabora_password.path;
aliasgroup1 = "https://nextcloud.bulba.space";
aliasgroup2 = "https://collabora.bulba.space";
server_name = "collabora.bulba.space";
};
};
};
};
systemd.user.services.nextcloud-cron = {
Unit = {
Description = "Nextcloud cron.php job";
Requires = [ "podman-nextcloud.service" ];
After = [ "podman-nextcloud.service" ];
};
Service = {
Type = "oneshot";
ExecStart = "${pkgs.podman}/bin/podman exec --user www-data nextcloud php -f /var/www/html/cron.php";
};
};
systemd.user.timers.nextcloud-cron = {
Unit = {
Description = "Run Nextcloud cron.php every 5 minutes";
};
Timer = {
OnBootSec = "5m";
OnUnitActiveSec = "5m";
Unit = "nextcloud-cron.service";
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}