Merge remote-tracking branch 'gum/master'
This commit is contained in:
commit
81c31869c2
|
@ -243,6 +243,8 @@ in {
|
||||||
"wiki.makefu.r"
|
"wiki.makefu.r"
|
||||||
"warrior.gum.r"
|
"warrior.gum.r"
|
||||||
"sick.makefu.r"
|
"sick.makefu.r"
|
||||||
|
"dl.gum.r"
|
||||||
|
"dl.makefu.r"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
2
makefu/0tests/data/secrets/dl.gum-auth.nix
Normal file
2
makefu/0tests/data/secrets/dl.gum-auth.nix
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
{
|
||||||
|
}
|
|
@ -41,7 +41,6 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
redis.serviceConfig.LimitNOFILE=10032;
|
|
||||||
ddclient-nsupdate-uhub = {
|
ddclient-nsupdate-uhub = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "ip-up.target" ];
|
after = [ "ip-up.target" ];
|
||||||
|
|
|
@ -1,216 +1,80 @@
|
||||||
{ lib, pkgs, config, ... }:
|
{ lib, pkgs, config, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
# imperative in config.php:
|
# services.redis.enable = true;
|
||||||
# #local memcache:
|
# to enable caching with redis first start up everything, then run:
|
||||||
# 'memcache.local' => '\\OC\\Memcache\\APCu',
|
# nextcloud-occ config:system:set redis 'host' --value 'localhost' --type string
|
||||||
# #local locking:
|
# nextcloud-occ config:system:set redis 'port' --value 6379 --type integer
|
||||||
# 'memcache.locking' => '\\OC\\Memcache\\Redis',
|
# nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\Redis' --type string
|
||||||
# 'redis' =>
|
# nextcloud-occ config:system:set memcache.locking --value '\OC\Memcache\Redis' --type string
|
||||||
# array (
|
|
||||||
# 'host' => 'localhost',
|
|
||||||
# 'port' => 6379,
|
|
||||||
# ),
|
|
||||||
|
|
||||||
|
# services.memcached.enable = true;
|
||||||
|
# to enable caching with memcached run:
|
||||||
|
# nextcloud-occ config:system:set memcached_servers 0 0 --value 127.0.0.1 --type string
|
||||||
|
# nextcloud-occ config:system:set memcached_servers 0 1 --value 11211 --type integer
|
||||||
|
# nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\APCu' --type string
|
||||||
|
# nextcloud-occ config:system:set memcache.distributed --value '\OC\Memcache\Memcached' --type string
|
||||||
|
|
||||||
let
|
let
|
||||||
phpPackage = let
|
adminpw = "/run/secret/nextcloud-admin-pw";
|
||||||
base = pkgs.php74;
|
dbpw = "/run/secret/nextcloud-db-pw";
|
||||||
in
|
in {
|
||||||
base.buildEnv {
|
|
||||||
extensions = { enabled, all }: with all;
|
|
||||||
enabled ++ [
|
|
||||||
apcu redis memcached imagick
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: copy-paste from lass/2/websites/util.nix
|
krebs.secret.files.nextcloud-db-pw = {
|
||||||
nextcloud = pkgs.nextcloud20;
|
path = dbpw;
|
||||||
serveCloud = domains:
|
owner.name = "nextcloud";
|
||||||
let
|
source-path = toString <secrets> + "/nextcloud-db-pw";
|
||||||
domain = head domains;
|
};
|
||||||
root = "/var/www/${domain}/";
|
|
||||||
socket = "/var/run/${domain}-phpfpm.sock";
|
|
||||||
in {
|
|
||||||
system.activationScripts."prepare-nextcloud-${domain}" = ''
|
|
||||||
if test ! -e ${root} ;then
|
|
||||||
echo "copying latest ${nextcloud.name} release to ${root}"
|
|
||||||
mkdir -p $(dirname "${root}")
|
|
||||||
cp -r ${nextcloud} "${root}"
|
|
||||||
chown -R nginx:nginx "${root}"
|
|
||||||
chmod 770 "${root}"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
services.nginx.virtualHosts."${domain}" = {
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
serverAliases = domains;
|
|
||||||
extraConfig = ''
|
|
||||||
|
|
||||||
# Add headers to serve security related headers
|
krebs.secret.files.nextcloud-admin-pw = {
|
||||||
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
|
path = adminpw;
|
||||||
add_header X-Content-Type-Options nosniff;
|
owner.name = "nextcloud";
|
||||||
add_header X-Frame-Options "SAMEORIGIN";
|
source-path = toString <secrets> + "/nextcloud-admin-pw";
|
||||||
add_header X-XSS-Protection "1; mode=block";
|
};
|
||||||
add_header X-Robots-Tag none;
|
|
||||||
add_header X-Download-Options noopen;
|
|
||||||
add_header X-Permitted-Cross-Domain-Policies none;
|
|
||||||
|
|
||||||
# Path to the root of your installation
|
services.nginx.virtualHosts."o.euer.krebsco.de" = {
|
||||||
root ${root};
|
forceSSL = true;
|
||||||
# set max upload size
|
enableACME = true;
|
||||||
client_max_body_size 10G;
|
};
|
||||||
fastcgi_buffers 64 4K;
|
state = [ "${config.services.nextcloud.home}/config" ];
|
||||||
fastcgi_read_timeout 120;
|
services.nextcloud = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nextcloud20;
|
||||||
|
hostName = "o.euer.krebsco.de";
|
||||||
|
# Use HTTPS for links
|
||||||
|
https = true;
|
||||||
|
# Auto-update Nextcloud Apps
|
||||||
|
autoUpdateApps.enable = true;
|
||||||
|
# Set what time makes sense for you
|
||||||
|
autoUpdateApps.startAt = "05:00:00";
|
||||||
|
|
||||||
# Disable gzip to avoid the removal of the ETag header
|
caching.redis = true;
|
||||||
gzip off;
|
# caching.memcached = true;
|
||||||
|
config = {
|
||||||
|
# Further forces Nextcloud to use HTTPS
|
||||||
|
overwriteProtocol = "https";
|
||||||
|
|
||||||
# Uncomment if your server is build with the ngx_pagespeed module
|
# Nextcloud PostegreSQL database configuration, recommended over using SQLite
|
||||||
# This module is currently not supported.
|
dbtype = "pgsql";
|
||||||
#pagespeed off;
|
dbuser = "nextcloud";
|
||||||
|
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
|
||||||
index index.php;
|
dbname = "nextcloud";
|
||||||
error_page 403 /core/templates/403.php;
|
dbpassFile = dbpw;
|
||||||
error_page 404 /core/templates/404.php;
|
adminpassFile = adminpw;
|
||||||
|
adminuser = "admin";
|
||||||
rewrite ^/.well-known/carddav /remote.php/carddav/ permanent;
|
|
||||||
rewrite ^/.well-known/caldav /remote.php/caldav/ permanent;
|
|
||||||
|
|
||||||
# The following 2 rules are only needed for the user_webfinger app.
|
|
||||||
# Uncomment it if you're planning to use this app.
|
|
||||||
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
|
|
||||||
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
|
|
||||||
'';
|
|
||||||
locations."/robots.txt".extraConfig = ''
|
|
||||||
allow all;
|
|
||||||
log_not_found off;
|
|
||||||
access_log off;
|
|
||||||
'';
|
|
||||||
locations."~ ^/(build|tests|config|lib|3rdparty|templates|data)/".extraConfig = ''
|
|
||||||
deny all;
|
|
||||||
'';
|
|
||||||
|
|
||||||
locations."~ ^/(?:autotest|occ|issue|indie|db_|console)".extraConfig = ''
|
|
||||||
deny all;
|
|
||||||
'';
|
|
||||||
|
|
||||||
locations."/".extraConfig = ''
|
|
||||||
rewrite ^/remote/(.*) /remote.php last;
|
|
||||||
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
'';
|
|
||||||
|
|
||||||
locations."~ \.php(?:$|/)".extraConfig = ''
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
include ${pkgs.nginx}/conf/fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
|
||||||
fastcgi_param HTTPS on;
|
|
||||||
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
|
|
||||||
fastcgi_pass unix:${config.services.phpfpm.pools.${domain}.socket};
|
|
||||||
fastcgi_intercept_errors on;
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Adding the cache control header for js and css files
|
|
||||||
# Make sure it is BELOW the location ~ \.php(?:$|/) block
|
|
||||||
locations."~* \.(?:css|js)$".extraConfig = ''
|
|
||||||
add_header Cache-Control "public, max-age=7200";
|
|
||||||
# Add headers to serve security related headers
|
|
||||||
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
add_header X-XSS-Protection "1; mode=block";
|
|
||||||
add_header X-Robots-Tag none;
|
|
||||||
add_header X-Frame-Options SAMEORIGIN;
|
|
||||||
add_header X-Download-Options noopen;
|
|
||||||
add_header X-Permitted-Cross-Domain-Policies none;
|
|
||||||
|
|
||||||
# Optional: Don't log access to assets
|
|
||||||
access_log off;
|
|
||||||
'';
|
|
||||||
# Optional: Don't log access to other assets
|
|
||||||
locations."~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$".extraConfig = ''
|
|
||||||
access_log off;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
services.phpfpm.pools."${domain}" = {
|
|
||||||
user = "nginx";
|
|
||||||
group = "nginx";
|
|
||||||
phpPackage = phpPackage;
|
|
||||||
settings = {
|
|
||||||
"listen.owner" = "nginx";
|
|
||||||
"pm" = "dynamic";
|
|
||||||
"pm.max_children" = 32;
|
|
||||||
"pm.max_requests" = 500;
|
|
||||||
"pm.start_servers" = 2;
|
|
||||||
"pm.min_spare_servers" = 2;
|
|
||||||
"pm.max_spare_servers" = 5;
|
|
||||||
"php_admin_value[error_log]" = "stderr";
|
|
||||||
"php_admin_flag[log_errors]" = "on";
|
|
||||||
"catch_workers_output" = true;
|
|
||||||
};
|
|
||||||
phpEnv."PATH" = lib.makeBinPath [ phpPackage ];
|
|
||||||
};
|
|
||||||
services.phpfpm.phpOptions = ''
|
|
||||||
opcache.enable=1
|
|
||||||
opcache.enable_cli=1
|
|
||||||
opcache.interned_strings_buffer=8
|
|
||||||
opcache.max_accelerated_files=10000
|
|
||||||
opcache.memory_consumption=128
|
|
||||||
opcache.save_comments=1
|
|
||||||
opcache.revalidate_freq=1
|
|
||||||
opcache.file_cache = .opcache
|
|
||||||
zend_extension=${phpPackage}/lib/php/extensions/opcache.so
|
|
||||||
|
|
||||||
display_errors = on
|
|
||||||
display_startup_errors = on
|
|
||||||
always_populate_raw_post_data = -1
|
|
||||||
error_reporting = E_ALL | E_STRICT
|
|
||||||
html_errors = On
|
|
||||||
date.timezone = "Europe/Berlin"
|
|
||||||
extension=${phpPackage}/lib/php/extensions/memcached.so
|
|
||||||
extension=${phpPackage}/lib/php/extensions/redis.so
|
|
||||||
extension=${phpPackage}/lib/php/extensions/apcu.so
|
|
||||||
'';
|
|
||||||
|
|
||||||
systemd.services."nextcloud-cron-${domain}" = {
|
|
||||||
serviceConfig = {
|
|
||||||
User = "nginx";
|
|
||||||
ExecStart = "${phpPackage}/bin/php -f ${root}/cron.php";
|
|
||||||
};
|
|
||||||
startAt = "*:0/15";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
in {
|
};
|
||||||
imports = [
|
|
||||||
( serveCloud [ "o.euer.krebsco.de" ] )
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|
||||||
services.redis.enable = true;
|
services.redis.enable = true;
|
||||||
|
systemd.services.redis.serviceConfig.LimitNOFILE=65536;
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
# Ensure the database, user, and permissions always exist
|
||||||
|
ensureDatabases = [ "nextcloud" ];
|
||||||
|
ensureUsers = [ { name = "nextcloud"; ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES"; } ];
|
||||||
|
};
|
||||||
|
|
||||||
#services.mysql = {
|
systemd.services."nextcloud-setup" = {
|
||||||
# enable = false;
|
requires = ["postgresql.service"];
|
||||||
# package = pkgs.mariadb;
|
after = ["postgresql.service"];
|
||||||
# rootPassword = config.krebs.secret.files.mysql_rootPassword.path;
|
};
|
||||||
# initialDatabases = [
|
|
||||||
# # Or use writeText instead of literalExample?
|
|
||||||
# #{ name = "nextcloud"; schema = literalExample "./nextcloud.sql"; }
|
|
||||||
# {
|
|
||||||
# name = "nextcloud";
|
|
||||||
# schema = pkgs.writeText "nextcloud.sql"
|
|
||||||
# ''
|
|
||||||
# create user if not exists 'nextcloud'@'localhost' identified by 'password';
|
|
||||||
# grant all privileges on nextcloud.* to 'nextcloud'@'localhost' identified by 'password';
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
#};
|
|
||||||
|
|
||||||
# dataDir is only defined after mysql is enabled
|
|
||||||
#krebs.secret.files.mysql_rootPassword = {
|
|
||||||
# path = "${config.services.mysql.dataDir}/mysql_rootPassword";
|
|
||||||
# owner.name = "root";
|
|
||||||
# source-path = toString <secrets> + "/mysql_rootPassword";
|
|
||||||
#};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with import <stockholm/lib>;
|
|
||||||
{
|
{
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
recommendedGzipSettings = true;
|
recommendedGzipSettings = true;
|
||||||
recommendedOptimisation = true;
|
recommendedOptimisation = true;
|
||||||
virtualHosts."dl.euer.krebsco.de" = {
|
virtualHosts."dl.euer.krebsco.de" = {
|
||||||
|
@ -13,5 +12,11 @@ with import <stockholm/lib>;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
basicAuth = import <secrets/dl.euer.krebsco.de-auth.nix>;
|
basicAuth = import <secrets/dl.euer.krebsco.de-auth.nix>;
|
||||||
};
|
};
|
||||||
|
virtualHosts."dl.gum.r" = {
|
||||||
|
serverAliases = [ "dl.gum" "dl.makefu.r" "dl.makefu" ];
|
||||||
|
root = config.makefu.dl-dir;
|
||||||
|
extraConfig = "autoindex on;";
|
||||||
|
basicAuth = import <secrets/dl.gum-auth.nix>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
24
makefu/2configs/systemdultras/ircbot.nix
Normal file
24
makefu/2configs/systemdultras/ircbot.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
krebs.brockman = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
irc = {
|
||||||
|
host = "irc.freenode.net";
|
||||||
|
port = 6667;
|
||||||
|
};
|
||||||
|
bots = {
|
||||||
|
r-systemdultras-rss = {
|
||||||
|
feed = "https://www.reddit.com/r/systemdultras/.rss";
|
||||||
|
delay = 136;
|
||||||
|
channels = [ "#systemdultras" ];
|
||||||
|
};
|
||||||
|
r-systemd-rss = {
|
||||||
|
feed = "https://www.reddit.com/r/systemd/.rss";
|
||||||
|
delay = 172;
|
||||||
|
channels = [ "#systemdultras" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue