2019-12-17 01:01:02 +00:00
|
|
|
# NixOps configuration for the hosts running Nextcloud
|
|
|
|
{
|
2022-03-07 14:26:15 +00:00
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}: {
|
|
|
|
imports = [../secrets/nextcloud.nix];
|
2019-12-17 01:01:02 +00:00
|
|
|
|
|
|
|
services.nextcloud = {
|
2021-11-16 04:57:23 +00:00
|
|
|
enable = true; # Enable Nextcloud
|
|
|
|
hostName = "cloud.mcwhirter.io"; # FQDN for the Nextcloud instance
|
|
|
|
https = true; # Use HTTPS for links
|
2022-03-07 14:26:15 +00:00
|
|
|
config = {
|
|
|
|
# Configure Nextcloud
|
2021-11-16 04:57:23 +00:00
|
|
|
dbtype = "pgsql"; # Set the database type
|
|
|
|
dbname = "nextcloud"; # Set the database name
|
|
|
|
dbhost = "/run/postgresql"; # Set the database connection
|
|
|
|
dbuser = "nextcloud"; # Set the database user
|
2022-03-07 14:26:15 +00:00
|
|
|
dbpassFile = "/run/keys/nextcloud-dbpass"; # Where to find the database password
|
|
|
|
adminpassFile = "/run/keys/nextcloud-admin"; # Where to find the admin password
|
2021-11-16 04:57:23 +00:00
|
|
|
adminuser = "root"; # Set the admin user name
|
|
|
|
overwriteProtocol = "https"; # Force Nextcloud to always use HTTPS
|
2022-03-07 14:26:15 +00:00
|
|
|
defaultPhoneRegion = "AU"; # Country code for automatic phone-number detection
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
2020-05-04 09:05:37 +00:00
|
|
|
autoUpdateApps = {
|
2021-11-16 04:57:23 +00:00
|
|
|
enable = true; # Run regular auto update of all apps installed
|
|
|
|
startAt = "01:00:00"; # When to run the update
|
2020-05-04 09:05:37 +00:00
|
|
|
};
|
2022-12-08 23:25:46 +00:00
|
|
|
enableBrokenCiphersForSSE = false; # force upgrade to SSL v3
|
2023-07-11 09:08:46 +00:00
|
|
|
package = pkgs.nextcloud26;
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
|
|
|
|
2022-08-17 05:39:27 +00:00
|
|
|
systemd = {
|
|
|
|
services = {
|
|
|
|
nextcloud = {
|
|
|
|
# Ensure nextcloud starts after nixops keys are loaded
|
|
|
|
after = ["nextcloud-dbpass-key.service"];
|
|
|
|
wants = ["nextcloud-dbpass-key.service"];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2019-12-17 01:01:02 +00:00
|
|
|
services.postgresql = {
|
2021-11-16 04:57:23 +00:00
|
|
|
enable = true; # Ensure postgresql is enabled
|
2022-03-07 14:26:15 +00:00
|
|
|
ensureDatabases = ["nextcloud"]; # Ensure the database persists
|
|
|
|
ensureUsers = [
|
|
|
|
{
|
|
|
|
name = "nextcloud"; # Ensure the database user persists
|
|
|
|
ensurePermissions = {
|
|
|
|
# Ensure the database permissions persist
|
|
|
|
"DATABASE nextcloud" = "ALL PRIVILEGES";
|
|
|
|
"ALL TABLES IN SCHEMA public" = "ALL PRIVILEGES";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
|
|
|
|
2022-06-22 22:50:22 +00:00
|
|
|
services.postgresqlBackup.databases = ["nextcloud"];
|
|
|
|
|
2019-12-17 01:01:02 +00:00
|
|
|
services.nginx = {
|
2021-11-16 04:57:23 +00:00
|
|
|
enable = true; # Enable Nginx
|
2019-12-17 01:01:02 +00:00
|
|
|
recommendedGzipSettings = true;
|
|
|
|
recommendedOptimisation = true;
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
recommendedTlsSettings = true;
|
2022-03-07 14:26:15 +00:00
|
|
|
virtualHosts."cloud.mcwhirter.io" = {
|
|
|
|
# Nextcloud hostname
|
2021-11-16 04:57:23 +00:00
|
|
|
enableACME = true; # Use ACME certs
|
|
|
|
forceSSL = true; # Force SSL
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
2022-03-07 14:26:15 +00:00
|
|
|
virtualHosts."owncloud.mcwhirter.io" = {
|
|
|
|
# Hostname to be redirected
|
2021-11-16 04:57:23 +00:00
|
|
|
globalRedirect = "cloud.mcwhirter.io"; # Redirect permanently to the host
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-03-07 14:26:15 +00:00
|
|
|
systemd.services."nextcloud-setup" = {
|
|
|
|
# Ensure PostgreSQL is running first
|
|
|
|
requires = ["postgresql.service"];
|
|
|
|
after = ["postgresql.service"];
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
|
|
|
|
2020-08-10 11:34:39 +00:00
|
|
|
security.acme = {
|
|
|
|
acceptTerms = true;
|
2022-03-07 14:26:15 +00:00
|
|
|
certs = {"cloud.mcwhirter.io" = {email = "craige@mcwhirter.io";};};
|
2019-12-17 01:01:02 +00:00
|
|
|
};
|
|
|
|
|
2022-03-07 14:26:15 +00:00
|
|
|
users.groups.keys.members = ["nextcloud"]; # Required due to NixOps issue #1204
|
|
|
|
users.groups.nextcloud.members = ["nextcloud"]; # Added for keys permissions
|
2019-12-17 01:01:02 +00:00
|
|
|
|
2022-03-07 14:26:15 +00:00
|
|
|
networking.firewall.allowedTCPPorts = [80 443]; # Open the required firewall ports
|
2019-12-17 01:01:02 +00:00
|
|
|
}
|