@ -42,31 +42,83 @@
services . nginx = {
enable = true ;
virtualHosts . " w w w . b e f f a r a . o r g " = {
default = true ;
forceSSL = true ;
root = " / d a t a / w e b / r o o t " ;
sslCertificate = " / d a t a / w e b / c e r t / b e f f a r a . o r g . c r t " ;
sslCertificateKey = " / d a t a / w e b / c e r t / b e f f a r a . o r g . k e y " ;
locations . " ~ \. p h p $ " . extraConfig = ''
fastcgi_pass unix:$ { config . services . phpfpm . pools . web . socket } ;
fastcgi_index index . php ;
locations . " / o w n c l o u d / " = {
alias = " / d a t a / w e b / n e x t c l o u d / s i t e / " ;
extraConfig = ''
rewrite ^ /owncloud / ( ( cal | card | web ) dav . * ) $ /owncloud/remote.php / $ 1 redirect ;
'' ;
} ;
locations . " ~ ^ / o w n c l o u d / . + \. p h p ( / | $ ) " = {
alias = " / d a t a / w e b / n e x t c l o u d / s i t e / " ;
extraConfig = ''
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 " m a x - a g e = 1 5 7 6 8 0 0 0 ; " ;
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 / $ 1 dav / redirect ;
'' ;
} ;
} ;
# FastCGI server for PHP
services . phpfpm . pools . web = {
user = " n o b o d y " ;
settings = {
" l i s t e n . o w n e r " = config . services . nginx . user ;
" p m " = " d y n a m i c " ;
" p m . m a x _ c h i l d r e n " = 5 ;
" p m . s t a r t _ s e r v e r s " = 2 ;
" p m . m i n _ s p a r e _ s e r v e r s " = 1 ;
" p m . m a x _ s p a r e _ s e r v e r s " = 3 ;
" p m . m a x _ r e q u e s t s " = 500 ;
services . phpfpm = {
phpOptions = ''
memory_limit = 5 1 2 M
extension = $ { pkgs . phpPackages . apcu } /lib/php/extensions/apcu.so
extension = $ { pkgs . phpPackages . imagick } /lib/php/extensions/imagick.so
'' ;
pools . nextcloud = {
user = " n e x t c l o u d " ;
settings = {
" l i s t e n . o w n e r " = config . services . nginx . user ;
" p m " = " d y n a m i c " ;
" p m . m a x _ c h i l d r e n " = 5 ;
" p m . s t a r t _ s e r v e r s " = 2 ;
" p m . m i n _ s p a r e _ s e r v e r s " = 1 ;
" p m . m a x _ s p a r e _ s e r v e r s " = 3 ;
" p m . m a x _ r e q u e s t s " = 500 ;
} ;
} ;
} ;
# MySQL database
services . mysql = {
enable = true ;
package = pkgs . mariadb ;
ensureDatabases = [ " n e x t c l o u d " ] ;
ensureUsers = [
{
name = " n e x t c l o u d " ;
ensurePermissions = { " n e x t c l o u d . * " = " A L L P R I V I L E G E S " ; } ;
}
] ;
} ;
# System user accounts
users . users . nextcloud = {
isSystemUser = true ;
home = " / d a t a / w e b / n e x t c l o u d " ;
group = " n e x t c l o u d " ;
} ;
users . groups . nextcloud = { } ;
# Initial user account
users . users . manu = {
isNormalUser = true ;