1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
{ pkgs, lib, ... }:
let
enable = true;
user = "pubserve";
path = "/var/lib/pubserve";
pubPort = 3454;
privPort = 3455;
in
lib.mkIf enable {
users.users.${user} = {
group = user;
home = path;
createHome = true;
isSystemUser = true;
isNormalUser = false;
};
users.groups.${user} = { };
systemd.services =
let
commonArgs = [
"-i '127.0.0.1'"
"-H"
"-D"
"-F"
"--hide-theme-selector"
"--readme"
path
];
in
{
pubserve = {
description = "Miniserve Public File Server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.miniserve}/bin/miniserve -t 'PubServe' -p ${builtins.toString pubPort} ${lib.concatStringsSep " " commonArgs}";
Restart = "on-failure";
User = user;
Group = user;
};
};
privserve = {
description = "Miniserve Public File Server (Admin)";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.miniserve}/bin/miniserve -u -U -o 'overwrite' -t 'PrivServe' -p ${builtins.toString privPort} ${lib.concatStringsSep " " commonArgs}";
Restart = "on-failure";
User = user;
Group = user;
};
};
};
services.tailproxy = {
pubserve = {
enable = true;
hostname = "pubserve";
funnel = true;
port = pubPort;
authKey = "tskey-auth-kJrnknpMsL11CNTRL-ot1kkasErR2cLZZmfuKYR2b9za7fCzVR"; # One-time key
};
privserve = {
enable = true;
hostname = "privserve";
port = privPort;
authKey = "tskey-auth-kKFv865ykk11CNTRL-dfmxUREHP5evuuMsfPy55ehXECXrLF1N7"; # One-time key
};
};
}
|