Compare commits

...

9 commits

Author SHA1 Message Date
Chandler Swift efb6bc7b95
bert: Add stjohnscccc.com manual redirect page 2025-02-08 12:20:16 -06:00
Chandler Swift 3928a5b44d
bert: Rephrase site-not-found message
This gives me a bit of repudiability in case someone decides to point
someunsavorydomain.net at my server -- I don't want to automatically
respond indicating "yep, this is mine!"
2025-02-08 12:16:53 -06:00
Chandler Swift a0ed02d158
bert: Add www redirect for stjohnscccc.org 2025-02-08 12:13:12 -06:00
Chandler Swift 384f965b3b
bert: Refactor stjohnscccc.org config 2025-02-08 12:13:12 -06:00
Chandler Swift 54c4b7136d
bert: redir stjohnscccc.org/downloads -> downloads/ 2025-02-08 11:39:04 -06:00
Chandler Swift 71368d5081
bert: Add (ancient) blog.chandlerswift.com redirects
Cool URLs don't change, as they say; let's keep these working!
2025-02-07 22:05:19 -06:00
Chandler Swift 437097a71b
bert: Add chandlerswift.com cloudflare compat redir
Cloudflare Pages, the previous home of this site, strips the `.html`
suffix from filenames (no small part of the reason this site was moved!)
e.g. a recent post would be served on

https://chandlerswift.com/2024/11/12/install-lineageos-on-lemonade

and not on

https://chandlerswift.com/2024/11/12/install-lineageos-on-lemonade.html

and the latter would be redirected to the former.

To me, this seems like a perversion of file paths for no good reason,
and it seems that a not-insubstantial chunk of the internet agrees:

https://community.cloudflare.com/search?q=%22.html%22%20%23developers%3Acloudflare-pages

This has been repeatedly considered "feature not bug" (despite examples
of use cases the feature breaks), e.g.

https://github.com/cloudflare/workers-sdk/issues/1488

This PR used AI assistance (and manual verification) for Caddyfile
syntax:

https://chatgpt.com/share/67a6d4e5-a464-800c-9c4d-910faa53b2dd
2025-02-07 21:53:37 -06:00
Chandler Swift 510672f779
bert: Add gotosocial on social.chandlerswift.com 2025-02-07 21:50:13 -06:00
Chandler Swift f2e7d24b2f
bert: Add chandlerswift.com 2025-02-07 21:48:24 -06:00
6 changed files with 133 additions and 32 deletions

View file

@ -0,0 +1,45 @@
{
services.caddy.virtualHosts."chandlerswift.com".extraConfig = ''
encode zstd gzip
file_server
root * /srv/www/chandlerswift.com
# hide .git # ???
@html_redirect {
file {path}.html
not path *.html
}
redir @html_redirect {path}.html 301
redir /.well-known/host-meta* https://social.chandlerswift.com{uri} permanent
redir /.well-known/webfinger* https://social.chandlerswift.com{uri} permanent
redir /.well-known/nodeinfo* https://social.chandlerswift.com{uri} permanent
handle_errors {
respond "{err.status_code} {err.status_text}"
}
'';
services.caddy.virtualHosts."blog.chandlerswift.com".extraConfig = ''
redir /2018/auto-timed-fish-tank-light/ https://chandlerswift.com/projects/fish-tank-light.html permanent
redir /2018/using-a-5-25-floppy-as-a-midi-instrument/ https://chandlerswift.com/projects/midi-floppy.html permanent
redir /2017/building-a-midi-pedalboard/ https://chandlerswift.com/projects/midi-pedalboard.html permanent
redir /2017/esp8266-light-switch-a-few-revisions/ https://chandlerswift.com/projects/light-switch.html permanent
redir /2016/new-relic-and-appfog-2/ https://chandlerswift.com/2016/02/18/new-relic-appfog-v2.html permanent
redir /2015/piano-heatmap-analysis-part-1/ https://chandlerswift.com/2015/09/10/piano-heatmap-part-1.html permanent
redir /2015/solving-windows-update-error-8024402f/ https://chandlerswift.com/2015/08/31/solving-8024402F.html permanent
redir /2015/enable-hotspot-rooted-s6/ https://chandlerswift.com/2015/08/30/enabling-s6-hotspot.html permanent
redir /* https://chandlerswift.com/
handle_errors {
respond "{err.status_code} {err.status_text}"
}
'';
services.caddy.virtualHosts."www.chandlerswift.com".extraConfig = "redir https://chandlerswift.com{uri}";
systemd.tmpfiles.settings."10-chandlerswift-com" = {
"/srv/www/chandlerswift.com" = {
d = {};
};
};
}

View file

@ -2,6 +2,7 @@
imports = [
./0hats.com.nix
./bannergen.chandlerswift.com.nix
./chandlerswift.com.nix
./files.chandlerswift.com.nix
./git.chandlerswift.com.nix
./harborpaperco.com.nix
@ -12,6 +13,8 @@
./maps.chandlerswift.com.nix
./music.chandlerswift.com.nix
./preview.chandlerswift.com.nix
./social.chandlerswift.com.nix
./stjohnscccc.com.nix
./stjohnscccc.org.nix
./swiftgang.net.nix
./whereis.chandlerswift.com.nix
@ -44,8 +47,11 @@
</head>
<body>
<h1>not found - chandlerswift.com</h1>
<p>This page is hosted with <a href="https://chandlerswift.com/">chandlerswift.com</a>,
but the site couldn't be found.</p>
<p>
You've reached a server at
<a href="https://chandlerswift.com/">chandlerswift.com</a>,
but the requested site couldn't be found.
</p>
</body>
</html>
EOF 404

View file

@ -0,0 +1,28 @@
{
services.gotosocial = {
enable = true;
settings = {
landing-page-user = "chandler";
protocol = "https";
host = "social.chandlerswift.com";
account-domain = "chandlerswift.com";
bind-address = "127.0.0.1";
port = 8001;
# log-timestamp-format = "";
storage-local-base-path = "/srv/gotosocial/storage";
db-type = "sqlite";
db-address = "/srv/gotosocial/database.sqlite";
};
};
systemd.tmpfiles.settings."10-social-chandlerswift-com" = {
"/srv/gotosocial" = {
d = {
user = "gotosocial";
};
};
};
services.caddy.virtualHosts."social.chandlerswift.com".extraConfig = ''
encode zstd gzip
reverse_proxy localhost:8001
'';
}

View file

@ -0,0 +1,19 @@
{
services.caddy.virtualHosts."stjohnscccc.com" = {
serverAliases = ["www.stjohnscccc.com"];
extraConfig = ''
encode zstd gzip
file_server
root * /srv/www/stjohnscccc.com
handle_errors {
respond "{err.status_code} {err.status_text}"
}
'';
};
systemd.tmpfiles.settings."10-stjohnscccc-com" = {
"/srv/www/stjohnscccc.com" = {
d = {};
};
};
}

View file

@ -1,11 +1,6 @@
{ pkgs, lib, config, ... }:
let
app = "stjohnscccc";
domain = "${app}.chandlerswift.com"; # TODO
dataDir = "/srv/www/stjohnscccc.org";
in {
services.phpfpm.pools.${app} = {
user = app;
{ pkgs, lib, config, ... }: {
services.phpfpm.pools.stjohnscccc = {
user = "stjohnscccc";
settings = {
"listen.owner" = config.services.caddy.user;
"pm" = "dynamic";
@ -20,32 +15,37 @@ in {
};
# phpEnv."PATH" = lib.makeBinPath [ pkgs.php ];
};
services.caddy.virtualHosts.${domain}.extraConfig = ''
root * ${dataDir}/public
services.caddy.virtualHosts."stjohnscccc.org" = {
serverAliases = ["www.stjohnscccc.org"];
extraConfig = ''
root * /srv/www/stjohnscccc.org/public
handle /downloads/* {
file_server {
browse ${./caddy-browse-template.html}
hide .gitignore
redir /downloads /downloads/
handle /downloads/* {
file_server {
browse ${./caddy-browse-template.html}
hide .gitignore
}
}
}
handle {
encode zstd gzip
php_fastcgi unix/${config.services.phpfpm.pools.${app}.socket}
file_server
}
handle {
encode zstd gzip
php_fastcgi unix/${config.services.phpfpm.pools.stjohnscccc.socket}
file_server
}
handle_errors {
respond "{err.status_code} {err.status_text}"
}
'';
users.users.${app} = {
isSystemUser = true;
home = dataDir;
group = app;
handle_errors {
respond "{err.status_code} {err.status_text}"
}
'';
};
users.groups.${app} = {};
users.users.stjohnscccc = {
isSystemUser = true;
home = "/srv/www/stjohnscccc.org";
group = "stjohnscccc";
};
users.groups.stjohnscccc = {};
systemd.tmpfiles.settings."10-stjohnscccc.org" = {
"/srv/www/stjohnscccc.org" = {
d = {};

View file

@ -189,7 +189,10 @@
programs.thunderbird.enable = true;
programs.bash.enable = true;
programs.bash = {
enable = true;
historyControl = [ "ignoredups" "ignorespace" ];
};
programs.direnv = {
enable = true;