nixos/hosts/vm/nextcloud/nextcloud.nix

69 lines
1.8 KiB
Nix

{ pkgs, config, ... }:
{
age.secrets = {
nextcloud_db_pass = {
file = ../../../secrets/nextcloud/nextcloud_db_pass.age;
owner = "nextcloud";
group = "nextcloud";
};
nextcloud_admin_pass = {
file = ../../../secrets/nextcloud/nextcloud_admin_pass.age;
owner = "nextcloud";
group = "nextcloud";
};
};
services.nextcloud = {
enable = true;
package = pkgs.nextcloud33;
configureRedis = true;
hostName = "nextcloud.crans.org";
https = false;
maxUploadSize = "4G";
config = {
dbtype = "pgsql";
dbhost = "tealc.adm.crans.org";
dbuser = "nextcloud";
dbpassFile = config.age.secrets.nextcloud_db_pass.path;
adminpassFile = config.age.secrets.nextcloud_admin_pass.path;
};
phpOptions = {
"opcache.interned_strings_buffer" = "32";
"opcache.memory_consumption" = "512";
};
settings = {
trusted_proxies = [
# hodaur
"172.16.10.145"
];
mail_domain = "crans.org";
mail_from_address = "root";
mail_smtphost = "smtp.crans.org";
mail_smtpport = 25;
};
appstoreEnable = true;
extraAppsEnable = true;
};
# Activation CORS pour récuppérer les agendas depuis le wiki
services.nginx.virtualHosts.${config.services.nextcloud.hostName}.locations."~* /remote.php/dav/public-calendars/[a-z]+\?export".extraConfig =
''
add_header 'Access-Control-Allow-Origin' 'https://mediawiki.crans.org' always;
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 86400;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
'';
}