mio-ops/profiles/nextcloud.nix

79 lines
2.6 KiB
Nix
Raw Normal View History

2019-12-17 01:01:02 +00:00
# NixOps configuration for the hosts running Nextcloud
{ config, pkgs, lib, ... }:
{
2021-11-16 04:57:23 +00:00
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
config = { # Configure Nextcloud
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
dbpassFile =
"/run/keys/nextcloud-dbpass"; # Where to find the database password
adminpassFile =
"/run/keys/nextcloud-admin"; # Where to find the admin password
adminuser = "root"; # Set the admin user name
overwriteProtocol = "https"; # Force Nextcloud to always use HTTPS
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
};
2021-12-22 10:56:53 +00:00
package = pkgs.nextcloud23;
2019-12-17 01:01:02 +00:00
};
services.postgresql = {
2021-11-16 04:57:23 +00:00
enable = true; # Ensure postgresql is enabled
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
};
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;
2021-11-16 04:57:23 +00:00
virtualHosts."cloud.mcwhirter.io" = { # Nextcloud hostname
enableACME = true; # Use ACME certs
forceSSL = true; # Force SSL
2019-12-17 01:01:02 +00:00
};
2021-11-16 04:57:23 +00:00
virtualHosts."owncloud.mcwhirter.io" = { # Hostname to be redirected
globalRedirect = "cloud.mcwhirter.io"; # Redirect permanently to the host
2019-12-17 01:01:02 +00:00
};
};
2021-11-16 04:57:23 +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;
2021-11-16 04:57:23 +00:00
certs = { "cloud.mcwhirter.io" = { email = "craige@mcwhirter.io"; }; };
2019-12-17 01:01:02 +00:00
};
2021-11-16 04:57:23 +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
2021-11-16 04:57:23 +00:00
networking.firewall.allowedTCPPorts =
[ 80 443 ]; # Open the required firewall ports
2019-12-17 01:01:02 +00:00
}