l 4: add website helper functions
This commit is contained in:
parent
e907a52246
commit
b517ea2970
@ -1,10 +1,133 @@
|
|||||||
{ lib, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
rec {
|
||||||
|
|
||||||
getDefaultGateway = ip:
|
getDefaultGateway = ip:
|
||||||
concatStringsSep "." (take 3 (splitString "." ip) ++ ["1"]);
|
concatStringsSep "." (take 3 (splitString "." ip) ++ ["1"]);
|
||||||
|
|
||||||
|
manageCert = domain:
|
||||||
|
{
|
||||||
|
security.acme = {
|
||||||
|
certs."${domain}" = {
|
||||||
|
email = "lassulus@gmail.com";
|
||||||
|
webroot = "/var/lib/acme/challenges/${domain}";
|
||||||
|
plugins = [
|
||||||
|
"account_key.json"
|
||||||
|
"cert.pem"
|
||||||
|
"key.pem"
|
||||||
|
"fullchain.pem"
|
||||||
|
];
|
||||||
|
group = "nginx";
|
||||||
|
allowKeysForGroup = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
krebs.nginx.servers."${domain}" = {
|
||||||
|
locations = [
|
||||||
|
(nameValuePair "/.well-known/acme-challenge" ''
|
||||||
|
root /var/lib/acme/challenges/${domain}/;
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl = domain:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
( manageCert domain )
|
||||||
|
( activateACME domain )
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
activateACME = domain:
|
||||||
|
{
|
||||||
|
krebs.nginx.servers."${domain}" = {
|
||||||
|
ssl = {
|
||||||
|
enable = true;
|
||||||
|
certificate = "/var/lib/acme/${domain}/cert.pem";
|
||||||
|
certificate_key = "/var/lib/acme/${domain}/key.pem";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
servePage = domain:
|
||||||
|
{
|
||||||
|
krebs.nginx.servers."${domain}" = {
|
||||||
|
server-names = [
|
||||||
|
"${domain}"
|
||||||
|
"www.${domain}"
|
||||||
|
];
|
||||||
|
locations = [
|
||||||
|
(nameValuePair "/" ''
|
||||||
|
root /srv/http/${domain};
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
serveOwncloud = domain:
|
||||||
|
{
|
||||||
|
krebs.nginx.servers."${domain}" = {
|
||||||
|
server-names = [
|
||||||
|
"${domain}"
|
||||||
|
"www.${domain}"
|
||||||
|
];
|
||||||
|
locations = [
|
||||||
|
(nameValuePair "/" ''
|
||||||
|
# The following 2 rules are only needed with webfinger
|
||||||
|
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
|
||||||
|
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
|
||||||
|
|
||||||
|
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
|
||||||
|
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
|
||||||
|
|
||||||
|
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
|
||||||
|
|
||||||
|
try_files $uri $uri/ /index.php;
|
||||||
|
'')
|
||||||
|
(nameValuePair "~ \.php$" ''
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
include ${pkgs.nginx}/conf/fastcgi.conf;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_pass unix:/srv/http/${domain}/phpfpm.pool;
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
root /srv/http/${domain}/;
|
||||||
|
#index index.php;
|
||||||
|
access_log /tmp/nginx_acc.log;
|
||||||
|
error_log /tmp/nginx_err.log;
|
||||||
|
|
||||||
|
# set max upload size
|
||||||
|
client_max_body_size 10G;
|
||||||
|
fastcgi_buffers 64 4K;
|
||||||
|
|
||||||
|
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
|
||||||
|
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
|
||||||
|
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
|
||||||
|
|
||||||
|
error_page 403 /core/templates/403.php;
|
||||||
|
error_page 404 /core/templates/404.php;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
services.phpfpm.poolConfigs."${domain}" = ''
|
||||||
|
listen = /srv/http/${domain}/phpfpm.pool
|
||||||
|
user = nginx
|
||||||
|
group = nginx
|
||||||
|
pm = dynamic
|
||||||
|
pm.max_children = 5
|
||||||
|
pm.start_servers = 2
|
||||||
|
pm.min_spare_servers = 1
|
||||||
|
pm.max_spare_servers = 3
|
||||||
|
listen.owner = nginx
|
||||||
|
listen.group = nginx
|
||||||
|
# errors to journal
|
||||||
|
php_admin_value[error_log] = 'stderr'
|
||||||
|
php_admin_flag[log_errors] = on
|
||||||
|
catch_workers_output = yes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user