Setup Nextcloud with NixOS, switch to PostgreSQL
This commit is contained in:
+34
-53
@@ -48,83 +48,64 @@
|
|||||||
# Nginx web server
|
# Nginx web server
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
virtualHosts."www.beffara.org" = {
|
virtualHosts."www.beffara.org" = {
|
||||||
default = true;
|
default = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
root = "/data/web/root";
|
root = "/data/web/root";
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
|
||||||
locations."/owncloud/" = {
|
|
||||||
alias = "/data/web/nextcloud/site/";
|
|
||||||
extraConfig = ''
|
|
||||||
rewrite ^/owncloud/((cal|card|web)dav.*)$ /owncloud/remote.php/$1 redirect;
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
locations."~ ^/owncloud/.+\.php(/|$)" = {
|
virtualHosts."cloud.beffara.org" = {
|
||||||
alias = "/data/web/nextcloud/site/";
|
forceSSL = true;
|
||||||
extraConfig = ''
|
enableACME = true;
|
||||||
fastcgi_pass unix:${config.services.phpfpm.pools.nextcloud.socket};
|
|
||||||
fastcgi_index index.php;
|
|
||||||
include ${config.services.nginx.package}/conf/fastcgi.conf;
|
|
||||||
fastcgi_split_path_info ^/owncloud/(.+\.php)(|/.*)$;
|
|
||||||
fastcgi_param SCRIPT_NAME /owncloud/$fastcgi_script_name;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
index index.php index.html;
|
|
||||||
add_header Strict-Transport-Security "max-age=15768000;";
|
|
||||||
rewrite ^/.well-known/host-meta /owncloud/public.php?service=host-meta last;
|
|
||||||
rewrite ^/.well-known/host-meta.json /owncloud/public.php?service=host-meta-json last;
|
|
||||||
rewrite ^/.well-known/(cal|card)dav /owncloud/remote.php/$1dav/ redirect;
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# FastCGI server for PHP
|
# Nextcloud
|
||||||
services.phpfpm = {
|
services.nextcloud = {
|
||||||
phpOptions = ''
|
enable = true;
|
||||||
memory_limit = 512M
|
hostName = "cloud.beffara.org";
|
||||||
extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
|
https = true;
|
||||||
extension=${pkgs.phpPackages.imagick}/lib/php/extensions/imagick.so
|
package = pkgs.nextcloud21;
|
||||||
'';
|
home = "/data/web/nextcloud";
|
||||||
|
|
||||||
pools.nextcloud = {
|
autoUpdateApps = {
|
||||||
user = "nextcloud";
|
enable = true;
|
||||||
settings = {
|
startAt = "03:00:00";
|
||||||
"listen.owner" = config.services.nginx.user;
|
|
||||||
"pm" = "dynamic";
|
|
||||||
"pm.max_children" = 5;
|
|
||||||
"pm.start_servers" = 2;
|
|
||||||
"pm.min_spare_servers" = 1;
|
|
||||||
"pm.max_spare_servers" = 3;
|
|
||||||
"pm.max_requests" = 500;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
overwriteProtocol = "https";
|
||||||
|
dbtype = "pgsql";
|
||||||
|
dbuser = "nextcloud";
|
||||||
|
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
|
||||||
|
dbname = "nextcloud";
|
||||||
|
dbpassFile = "/data/web/nextcloud/db-pass";
|
||||||
|
defaultPhoneRegion = "FR";
|
||||||
|
adminpassFile = "/data/web/nextcloud/admin-pass";
|
||||||
|
adminuser = "admin";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Ensure that postgres is running before setting up Nextcloud
|
||||||
|
systemd.services."nextcloud-setup" = {
|
||||||
|
requires = ["postgresql.service"];
|
||||||
|
after = ["postgresql.service"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# MySQL database
|
# PostgreSQL database
|
||||||
services.mysql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.mariadb;
|
|
||||||
ensureDatabases = [ "nextcloud" ];
|
ensureDatabases = [ "nextcloud" ];
|
||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
{
|
{
|
||||||
name = "nextcloud";
|
name = "nextcloud";
|
||||||
ensurePermissions = { "nextcloud.*" = "ALL PRIVILEGES"; };
|
ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# System user accounts
|
|
||||||
users.users.nextcloud = {
|
|
||||||
isSystemUser = true;
|
|
||||||
home = "/data/web/nextcloud";
|
|
||||||
group = "nextcloud";
|
|
||||||
};
|
|
||||||
users.groups.nextcloud = { };
|
|
||||||
|
|
||||||
# Initial user account
|
# Initial user account
|
||||||
users.users.manu = {
|
users.users.manu = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user