website: caddy cloudflare package
This commit is contained in:
parent
c096dc295a
commit
a9ef09a8a4
5 changed files with 95 additions and 25 deletions
|
|
@ -24,7 +24,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
webserver = {
|
webserver = {
|
||||||
caddy.enable = mkEnableOption "";
|
caddy = {
|
||||||
|
enable = mkEnableOption "";
|
||||||
|
cloudflare.enable = mkEnableOption "";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
database = {
|
database = {
|
||||||
postgresql.enable = mkEnableOption "";
|
postgresql.enable = mkEnableOption "";
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,10 @@
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
config = mkIf (elem "website" services) {
|
config = mkIf (elem "website" services) {
|
||||||
ooknet.server.webserver.caddy.enable = true;
|
ooknet.server.webserver.caddy = {
|
||||||
|
enable = true;
|
||||||
|
cloudflare.enable = true;
|
||||||
|
};
|
||||||
systemd.tmpfiles.settings.websiteDirs = {
|
systemd.tmpfiles.settings.websiteDirs = {
|
||||||
"/var/www"."d" = websitePermissions;
|
"/var/www"."d" = websitePermissions;
|
||||||
"/var/www/ooknet.org"."d" = websitePermissions;
|
"/var/www/ooknet.org"."d" = websitePermissions;
|
||||||
|
|
@ -45,29 +48,31 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# using caddy because it makes my life easy
|
# using caddy because it makes my life easy
|
||||||
services.caddy.virtualHosts = {
|
services.caddy = {
|
||||||
"ooknet.org".extraConfig =
|
virtualHosts = {
|
||||||
# sh
|
"ooknet.org".extraConfig =
|
||||||
''
|
# sh
|
||||||
encode zstd gzip
|
''
|
||||||
|
encode zstd gzip
|
||||||
|
|
||||||
header {
|
header {
|
||||||
Strict-Transport-Security "max-age=31536000;"
|
Strict-Transport-Security "max-age=31536000;"
|
||||||
X-XSS-Protection "1; mode=block"
|
X-XSS-Protection "1; mode=block"
|
||||||
X-Frame-Options "DENY"
|
X-Frame-Options "DENY"
|
||||||
X-Content-Type-Options "nosniff"
|
X-Content-Type-Options "nosniff"
|
||||||
-Server
|
-Server
|
||||||
|
|
||||||
|
|
||||||
Referrer-Policy: no-referrer
|
Referrer-Policy "no-referrer"
|
||||||
}
|
}
|
||||||
|
|
||||||
root * /var/www/ooknet.org/
|
root * /var/www/ooknet.org/
|
||||||
file_server
|
file_server
|
||||||
|
'';
|
||||||
|
"www.ooknet.org".extraConfig = ''
|
||||||
|
redir https://ooknet.org{uri} permanent
|
||||||
'';
|
'';
|
||||||
"www.ooknet.org".extraConfig = ''
|
};
|
||||||
redir https://ooknet.org{uri}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,31 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
self',
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf mkMerge;
|
||||||
inherit (config.ooknet.server.webserver) caddy;
|
inherit (config.ooknet.server.webserver) caddy;
|
||||||
in {
|
in {
|
||||||
config = mkIf caddy.enable {
|
config = mkIf caddy.enable {
|
||||||
users.groups.www = {};
|
users.groups.www = {};
|
||||||
services.caddy = {
|
services.caddy = mkMerge [
|
||||||
enable = true;
|
{
|
||||||
group = "www";
|
enable = true;
|
||||||
};
|
group = "www";
|
||||||
|
}
|
||||||
|
|
||||||
|
(mkIf caddy.cloudflare.enable {
|
||||||
|
package = self'.packages.caddy-with-cloudflare;
|
||||||
|
globalConfig = ''
|
||||||
|
servers {
|
||||||
|
trusted_proxies cloudflare {
|
||||||
|
interval 12h
|
||||||
|
timeout 15s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
46
outputs/pkgs/caddy-with-cloudflare/default.nix
Normal file
46
outputs/pkgs/caddy-with-cloudflare/default.nix
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
buildGoModule,
|
||||||
|
cacert,
|
||||||
|
go,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
xcaddy,
|
||||||
|
caddy,
|
||||||
|
}:
|
||||||
|
caddy.override {
|
||||||
|
buildGoModule = args:
|
||||||
|
buildGoModule (args
|
||||||
|
// {
|
||||||
|
src = stdenv.mkDerivation rec {
|
||||||
|
pname = "caddy-using-xcaddy-${xcaddy.version}";
|
||||||
|
inherit (caddy) version;
|
||||||
|
dontUnpack = true;
|
||||||
|
dontFixup = true;
|
||||||
|
nativeBuildInputs = [cacert go];
|
||||||
|
plugins = [
|
||||||
|
"github.com/WeidiDeng/caddy-cloudflare-ip"
|
||||||
|
];
|
||||||
|
configurePhase = ''
|
||||||
|
export GOCACHE=$TMPDIR/go-cache
|
||||||
|
export GOPATH="$TMPDIR/go"
|
||||||
|
export XCADDY_SKIP_BUILD=1
|
||||||
|
'';
|
||||||
|
buildPhase = ''
|
||||||
|
${xcaddy}/bin/xcaddy build "${caddy.src.rev}" ${
|
||||||
|
lib.concatMapStringsSep " " (plugin: "--with ${plugin}") plugins
|
||||||
|
}
|
||||||
|
cd buildenv*
|
||||||
|
go mod vendor
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
cp -r --reflink=auto . $out
|
||||||
|
'';
|
||||||
|
outputHash = "sha256-O3QWqgQtLOifsibyB0/UKricEGAx/3NhSjGbgu8+qgY=";
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
};
|
||||||
|
subPackages = ["."];
|
||||||
|
ldflags = ["-s" "-w"];
|
||||||
|
vendorHash = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
repopack = callPackage ./repopack {};
|
repopack = callPackage ./repopack {};
|
||||||
live-buds-cli = callPackage ./live-buds-cli {};
|
live-buds-cli = callPackage ./live-buds-cli {};
|
||||||
website = callPackage ./website {};
|
website = callPackage ./website {};
|
||||||
|
caddy-with-cloudflare = callPackage ./caddy-with-cloudflare {};
|
||||||
|
|
||||||
ook-vim = mkNeovim pkgs [ook-vim-config];
|
ook-vim = mkNeovim pkgs [ook-vim-config];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue