Merge remote-tracking branch 'gum/master'
This commit is contained in:
commit
131de9bbd1
@ -453,6 +453,8 @@ TNs2RYfwDy/r6H/hDeB/BSngPouedEVcPwIDAQAB
|
|||||||
git.euer IN A ${nets.internet.ip4.addr}
|
git.euer IN A ${nets.internet.ip4.addr}
|
||||||
gum IN A ${nets.internet.ip4.addr}
|
gum IN A ${nets.internet.ip4.addr}
|
||||||
cgit.euer IN A ${nets.internet.ip4.addr}
|
cgit.euer IN A ${nets.internet.ip4.addr}
|
||||||
|
o.euer IN A ${nets.internet.ip4.addr}
|
||||||
|
dl.euer IN A ${nets.internet.ip4.addr}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
nets = rec {
|
nets = rec {
|
||||||
@ -470,6 +472,8 @@ TNs2RYfwDy/r6H/hDeB/BSngPouedEVcPwIDAQAB
|
|||||||
"gum.r"
|
"gum.r"
|
||||||
"gum.retiolum"
|
"gum.retiolum"
|
||||||
"cgit.gum.retiolum"
|
"cgit.gum.retiolum"
|
||||||
|
"o.gum.r"
|
||||||
|
"o.gum.retiolum"
|
||||||
"tracker.makefu.r"
|
"tracker.makefu.r"
|
||||||
"tracker.makefu.retiolum"
|
"tracker.makefu.retiolum"
|
||||||
];
|
];
|
||||||
|
@ -224,13 +224,14 @@ let
|
|||||||
cp -f ${configFile} ${cfg.workDir}/.rtorrent.rc
|
cp -f ${configFile} ${cfg.workDir}/.rtorrent.rc
|
||||||
'';
|
'';
|
||||||
ExecStart = "${pkgs.tmux}/bin/tmux new-session -s rt -n rtorrent -d 'PATH=/bin:/usr/bin:${makeBinPath rutorrent-deps} ${cfg.package}/bin/rtorrent'";
|
ExecStart = "${pkgs.tmux}/bin/tmux new-session -s rt -n rtorrent -d 'PATH=/bin:/usr/bin:${makeBinPath rutorrent-deps} ${cfg.package}/bin/rtorrent'";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = "10";
|
||||||
|
|
||||||
## you can simply sudo -u rtorrent tmux a if privateTmp is set to false
|
## you can simply sudo -u rtorrent tmux a if privateTmp is set to false
|
||||||
## otherwise the tmux session is stored in some private folder in /tmp
|
## otherwise the tmux session is stored in some private folder in /tmp
|
||||||
PrivateTmp = false;
|
PrivateTmp = false;
|
||||||
|
|
||||||
WorkingDirectory = cfg.workDir;
|
WorkingDirectory = cfg.workDir;
|
||||||
Restart = "on-failure";
|
|
||||||
User = "${cfg.user}";
|
User = "${cfg.user}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -24,10 +24,10 @@ in {
|
|||||||
# ../2configs/nginx/euer.test.nix
|
# ../2configs/nginx/euer.test.nix
|
||||||
|
|
||||||
# collectd
|
# collectd
|
||||||
# ../2configs/collectd/collectd-base.nix
|
../2configs/logging/central-stats-client.nix
|
||||||
|
|
||||||
../2configs/tinc/retiolum.nix
|
../2configs/tinc/retiolum.nix
|
||||||
../2configs/torrent.nix
|
# ../2configs/torrent.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
krebs.build.host = config.krebs.hosts.wry;
|
krebs.build.host = config.krebs.hosts.wry;
|
||||||
|
@ -29,6 +29,7 @@ let
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
krebs.backup.plans = {
|
krebs.backup.plans = {
|
||||||
wry-to-omo_var-www = defaultPull config.krebs.hosts.wry "/";
|
wry-to-omo_root = defaultPull config.krebs.hosts.wry "/";
|
||||||
|
gum-to-omo_root = defaultPull config.krebs.hosts.gum "/";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@ in {
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
outputConfig = ''
|
outputConfig = ''
|
||||||
stdout {
|
#stdout {
|
||||||
codec => rubydebug
|
# codec => rubydebug
|
||||||
}
|
#}
|
||||||
elasticsearch { }
|
elasticsearch { }
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
{
|
{
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ 2003 80 443 18080 ];
|
||||||
|
allowedUDPPorts = [ 2003 ];
|
||||||
|
};
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = mkDefault true;
|
enable = mkDefault true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
@ -39,58 +44,11 @@ with import <stockholm/lib>;
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.graphite = {
|
services.graphite = {
|
||||||
beacon = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
graphite_url = "http://localhost:18080";
|
|
||||||
|
|
||||||
no_data = "critical";
|
|
||||||
loading_error = "normal";
|
|
||||||
|
|
||||||
prefix = "[elchos]";
|
|
||||||
|
|
||||||
cli = {
|
|
||||||
command = ''${pkgs.irc-announce}/bin/irc-announce irc.freenode.org 6667 alert0r \#elchos ' [elchos] ''${level} ''${name} ''${value}' '';
|
|
||||||
};
|
|
||||||
#smtp = {
|
|
||||||
# from = "beacon@mors.r";
|
|
||||||
# to = [
|
|
||||||
# "lass@mors.r"
|
|
||||||
# ];
|
|
||||||
#};
|
|
||||||
normal_handlers = [
|
|
||||||
# "smtp"
|
|
||||||
"cli"
|
|
||||||
];
|
|
||||||
warning_handlers = [
|
|
||||||
# "smtp"
|
|
||||||
"cli"
|
|
||||||
];
|
|
||||||
critical_handlers = [
|
|
||||||
# "smtp"
|
|
||||||
"cli"
|
|
||||||
];
|
|
||||||
alerts = let
|
|
||||||
high-load = hostid: let
|
|
||||||
host = "elch-${toString hostid}"; in {
|
|
||||||
name = "high-cpu-load-${host}";
|
|
||||||
query = "aliasByNode(perSecond(elchos.${host}.cpu.0.cpu.idle),1)";
|
|
||||||
method = "average";
|
|
||||||
interval = "1minute";
|
|
||||||
logging = "info";
|
|
||||||
repeat_interval = "5minute";
|
|
||||||
rules = [
|
|
||||||
# "warning: < 30.0"
|
|
||||||
"critical: < 1.0"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in map high-load [ 1 2 3 4 5 6 7 8 ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
api = {
|
api = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.graphiteApi;
|
# package = pkgs.graphiteApi;
|
||||||
listenAddress = "127.0.0.1";
|
#listenAddress = "127.0.0.1";
|
||||||
|
listenAddress = "0.0.0.0";
|
||||||
port = 18080;
|
port = 18080;
|
||||||
};
|
};
|
||||||
carbon = {
|
carbon = {
|
||||||
@ -99,8 +57,11 @@ with import <stockholm/lib>;
|
|||||||
config = ''
|
config = ''
|
||||||
[cache]
|
[cache]
|
||||||
MAX_CACHE_SIZE = inf
|
MAX_CACHE_SIZE = inf
|
||||||
MAX_UPDATES_PER_SECOND = 10
|
MAX_UPDATES_PER_SECOND = 3
|
||||||
MAX_CREATES_PER_MINUTE = 5000
|
MAX_CREATES_PER_MINUTE = 5000
|
||||||
|
LOG_UPDATES = False
|
||||||
|
LOG_CACHE_HITS = False
|
||||||
|
LOG_CACHE_QUEUE_SORTS = False
|
||||||
'';
|
'';
|
||||||
storageSchemas = ''
|
storageSchemas = ''
|
||||||
[carbon]
|
[carbon]
|
||||||
@ -122,8 +83,4 @@ with import <stockholm/lib>;
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [ 2003 80 443 ];
|
|
||||||
allowedUDPPorts = [ 2003 ];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
60
makefu/2configs/logging/central-stats-client.nix
Normal file
60
makefu/2configs/logging/central-stats-client.nix
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
{pkgs, config, ...}:
|
||||||
|
{
|
||||||
|
services.collectd = {
|
||||||
|
enable = true;
|
||||||
|
autoLoadPlugin = true;
|
||||||
|
extraConfig = ''
|
||||||
|
Hostname ${config.krebs.build.host.name}
|
||||||
|
LoadPlugin load
|
||||||
|
LoadPlugin disk
|
||||||
|
LoadPlugin memory
|
||||||
|
LoadPlugin df
|
||||||
|
Interval 30.0
|
||||||
|
|
||||||
|
LoadPlugin interface
|
||||||
|
<Plugin "interface">
|
||||||
|
Interface "*Link"
|
||||||
|
Interface "lo"
|
||||||
|
Interface "vboxnet*"
|
||||||
|
Interface "virbr*"
|
||||||
|
IgnoreSelected true
|
||||||
|
</Plugin>
|
||||||
|
|
||||||
|
LoadPlugin df
|
||||||
|
<Plugin "df">
|
||||||
|
MountPoint "/nix/store"
|
||||||
|
# MountPoint "/run*"
|
||||||
|
# MountPoint "/sys*"
|
||||||
|
# MountPoint "/dev"
|
||||||
|
# MountPoint "/dev/shm"
|
||||||
|
# MountPoint "/tmp"
|
||||||
|
FSType "tmpfs"
|
||||||
|
FSType "binfmt_misc"
|
||||||
|
FSType "debugfs"
|
||||||
|
FSType "mqueue"
|
||||||
|
FSType "hugetlbfs"
|
||||||
|
FSType "systemd-1"
|
||||||
|
FSType "cgroup"
|
||||||
|
FSType "securityfs"
|
||||||
|
FSType "ramfs"
|
||||||
|
FSType "proc"
|
||||||
|
FSType "devpts"
|
||||||
|
FSType "devtmpfs"
|
||||||
|
MountPoint "/var/lib/docker/devicemapper"
|
||||||
|
IgnoreSelected true
|
||||||
|
</Plugin>
|
||||||
|
|
||||||
|
LoadPlugin cpu
|
||||||
|
<Plugin cpu>
|
||||||
|
ReportByCpu true
|
||||||
|
ReportByState true
|
||||||
|
ValuesPercentage true
|
||||||
|
</Plugin>
|
||||||
|
|
||||||
|
LoadPlugin network
|
||||||
|
<Plugin "network">
|
||||||
|
Server "${config.makefu.stats-server}" "25826"
|
||||||
|
</Plugin>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
36
makefu/2configs/logging/central-stats-server.nix
Normal file
36
makefu/2configs/logging/central-stats-server.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{pkgs, config, ...}:
|
||||||
|
|
||||||
|
with import <stockholm/lib>;
|
||||||
|
let
|
||||||
|
collectd-port = 25826;
|
||||||
|
influx-port = 8086;
|
||||||
|
grafana-port = 3000; # TODO nginx forward
|
||||||
|
in {
|
||||||
|
services.grafana.enable = true;
|
||||||
|
services.grafana.addr = "0.0.0.0";
|
||||||
|
|
||||||
|
services.influxdb.enable = true;
|
||||||
|
|
||||||
|
# forward these via nginx
|
||||||
|
services.influxdb.extraConfig = {
|
||||||
|
meta.hostname = config.krebs.build.host.name;
|
||||||
|
# meta.logging-enabled = true;
|
||||||
|
http.bind-address = ":${toString influx-port}";
|
||||||
|
admin.bind-address = ":8083";
|
||||||
|
monitoring = {
|
||||||
|
enabled = false;
|
||||||
|
# write-interval = "24h";
|
||||||
|
};
|
||||||
|
collectd = [{
|
||||||
|
enabled = true;
|
||||||
|
typesdb = "${pkgs.collectd}/share/collectd/types.db";
|
||||||
|
database = "collectd_db";
|
||||||
|
port = collectd-port;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
networking.firewall.extraCommands = ''
|
||||||
|
iptables -A INPUT -i retiolum -p udp --dport ${toString collectd-port} -j ACCEPT
|
||||||
|
iptables -A INPUT -i retiolum -p tcp --dport ${toString influx-port} -j ACCEPT
|
||||||
|
iptables -A INPUT -i retiolum -p tcp --dport ${toString grafana-port} -j ACCEPT
|
||||||
|
'';
|
||||||
|
}
|
18
makefu/2configs/nginx/share-download.nix
Normal file
18
makefu/2configs/nginx/share-download.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with import <stockholm/lib>;
|
||||||
|
{
|
||||||
|
services.nginx = {
|
||||||
|
enable = mkDefault true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
virtualHosts."dl.euer.krebsco.de" = {
|
||||||
|
root = config.makefu.dl-dir;
|
||||||
|
extraConfig = "autoindex on;";
|
||||||
|
forceSSL = true;
|
||||||
|
enableSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
basicAuth = import <secrets/dl.euer.krebsco.de-auth.nix>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -42,6 +42,12 @@ in {
|
|||||||
browseable = "yes";
|
browseable = "yes";
|
||||||
"guest ok" = "yes";
|
"guest ok" = "yes";
|
||||||
};
|
};
|
||||||
|
crypt0 = {
|
||||||
|
path = "/media/crypt0";
|
||||||
|
"read only" = "yes";
|
||||||
|
browseable = "yes";
|
||||||
|
"guest ok" = "yes";
|
||||||
|
};
|
||||||
crypt0-rw = {
|
crypt0-rw = {
|
||||||
path = "/media/crypt0/";
|
path = "/media/crypt0/";
|
||||||
"read only" = "no";
|
"read only" = "no";
|
||||||
|
@ -8,13 +8,13 @@ let
|
|||||||
peer-port = 51412;
|
peer-port = 51412;
|
||||||
web-port = 8112;
|
web-port = 8112;
|
||||||
daemon-port = 58846;
|
daemon-port = 58846;
|
||||||
dl-dir = "/var/download";
|
dl-dir = config.makefu.dl-dir;
|
||||||
in {
|
in {
|
||||||
# prepare secrets
|
# prepare secrets
|
||||||
krebs.build.source.torrent-secrets.file =
|
krebs.build.source.torrent-secrets.file =
|
||||||
if getEnv "dummy_secrets" == "true"
|
if getEnv "dummy_secrets" == "true"
|
||||||
then toString <stockholm/makefu/6tests/data/secrets>
|
then toString <stockholm/makefu/6tests/data/secrets>
|
||||||
else "/home/makefu/secrets/torrent";
|
else config.makefu.torrent-secrets ;
|
||||||
|
|
||||||
users.users = {
|
users.users = {
|
||||||
download = {
|
download = {
|
||||||
|
@ -8,9 +8,11 @@ _:
|
|||||||
./forward-journal.nix
|
./forward-journal.nix
|
||||||
./opentracker.nix
|
./opentracker.nix
|
||||||
./ps3netsrv.nix
|
./ps3netsrv.nix
|
||||||
|
./logging-config.nix
|
||||||
./server-config.nix
|
./server-config.nix
|
||||||
./snapraid.nix
|
./snapraid.nix
|
||||||
./taskserver.nix
|
./taskserver.nix
|
||||||
|
./torrent.nix
|
||||||
./udpt.nix
|
./udpt.nix
|
||||||
./umts.nix
|
./umts.nix
|
||||||
];
|
];
|
||||||
|
11
makefu/3modules/logging-config.nix
Normal file
11
makefu/3modules/logging-config.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with import <stockholm/lib>;
|
||||||
|
{
|
||||||
|
options.makefu.stats-server = lib.mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "omo.retiolum";
|
||||||
|
description = "Central stats server (collectd)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
13
makefu/3modules/torrent.nix
Normal file
13
makefu/3modules/torrent.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options.makefu.dl-dir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Default download directory";
|
||||||
|
default = "/media/cryptX/torrent";
|
||||||
|
};
|
||||||
|
options.makefu.torrent-secrets = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/home/makefu/secrets/torrent";
|
||||||
|
};
|
||||||
|
}
|
1
makefu/6tests/data/secrets/dl.euer.krebsco.de-auth.nix
Normal file
1
makefu/6tests/data/secrets/dl.euer.krebsco.de-auth.nix
Normal file
@ -0,0 +1 @@
|
|||||||
|
{}
|
Loading…
Reference in New Issue
Block a user