nixos-configs/devices/nos/modules/arion/nextcloud/compose.nix

132 lines
3.4 KiB
Nix
Raw Normal View History

2024-02-23 00:34:43 -05:00
{
config,
lib,
pkgs,
2024-02-23 00:34:43 -05:00
...
}: let
inherit (config.sops) secrets;
inherit (config.arion) rwDataDir;
inherit (lib) concatStrings;
mainContainerName = "app-server";
2024-02-23 00:34:43 -05:00
rwPath = rwDataDir + "/nextcloud";
in {
arion.projects."nextcloud" = {
"${mainContainerName}" = {
2024-02-23 00:34:43 -05:00
image = ./images/nextcloud.nix;
restart = "always";
expose = [
"80"
"9000"
];
volumes = [
"${rwPath}/data:/var/www/html"
"/data/docs:/var/www/drive"
];
env_file = [secrets.nextcloud.path];
environment = {
POSTGRES_DB = "nextcloud";
POSTGRES_HOST = "nextcloud-db";
REDIS_HOST = "nextcloud-cache";
REDIS_HOST_PASSWORD = "password";
TRUSTED_PROXIES = "cloud.nelim.org nginx-server";
2024-02-23 00:34:43 -05:00
NEXTCLOUD_INIT_HTACCESS = "true";
};
};
"onlyoffice-document-server" = {
image = ./images/onlyoffice.nix;
restart = "always";
environment.JWT_ENABLED = "false";
ports = ["8055:80"];
expose = [
"80"
"443"
];
volumes = ["${rwPath}/data-onlyoffice:/var/log/onlyoffice"];
tmpfs = [
"/var/www/onlyoffice/Data"
"/var/lib/postgresql"
"/usr/share/fonts/truetype/custom"
"/var/lib/rabbitmq"
"/var/lib/redis"
"/var/lib/onlyoffice"
];
entrypoint = ''bash -c "${let
filePath = "/var/www/onlyoffice/documentserver/web-apps/apps/*/mobile/dist/js/app.js";
func = "isSupportEditFeature=function()";
in
concatStrings [
# Fix proxies
''sed -i 's/"allowPrivateIPAddress": false,/"allowPrivateIPAddress": true,/' /etc/onlyoffice/documentserver/default.json''
''sed -i 's/"allowMetaIPAddress": false/"allowMetaIPAddress": true/' /etc/onlyoffice/documentserver/default.json''
# Fix mobile editing
2024-02-23 00:34:43 -05:00
"sed -i 's/${func}{return!1}/${func}{return 1}/g' ${filePath};"
"/app/ds/run-document-server.sh;"
"apt update;"
"apt install imagemagick -y;"
]}"'';
};
"nginx-server" = {
image = ./images/nginx.nix;
restart = "always";
ports = ["8042:80"];
volumes = [
"${./nginx.conf}:/etc/nginx/nginx.conf"
"${rwPath}/data:/var/www/html"
];
};
"nextcloud-db" = {
image = ./images/postgres.nix;
restart = "always";
env_file = [secrets.nextcloud.path];
volumes = [
"${rwPath}/database:/var/lib/postgresql/data"
"/etc/localtime:/etc/localtime:ro"
];
};
"nextcloud-cache" = {
image = ./images/redis.nix;
restart = "always";
#mem_limit = "2048m";
#mem_reservation = "512m";
env_file = [secrets.nextcloud.path];
command = ''/bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"'';
tmpfs = [
"/data"
];
};
};
# Cron job
systemd.timers.nextcloud-cron = {
description = "Timer For Nextcloud Cron";
wantedBy = ["timers.target"];
timerConfig.OnBootSec = "5m";
timerConfig.OnUnitActiveSec = "5m";
};
systemd.services.nextcloud-cron = {
description = "Nextcloud Cron";
requires = ["arion-nextcloud.service"];
after = ["arion-nextcloud.service"];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.docker}/bin/docker exec -u www-data ${mainContainerName} php -f /var/www/html/cron.php";
};
};
2024-02-23 00:34:43 -05:00
}