updated wedding website hosting

This commit is contained in:
fwastring 2026-03-29 14:31:10 +02:00
parent 060c40acef
commit d0a09a0744
3 changed files with 202 additions and 155 deletions

View file

@ -1,35 +1,71 @@
{
config,
inputs,
lib,
pkgs,
...
}:
let
weddingPackage =
if inputs.wedding ? packages then
inputs.wedding.packages.${pkgs.system}.default
else
pkgs.buildGoModule {
pname = "wedding";
version = "source";
src = inputs.wedding;
subPackages = [ "internal/cmd/app" ];
vendorHash = "sha256-rxaikaR4UGXu2hIuR9ZbOnITBsCq5zEDAlwrhhRudoo=";
env = {
CGO_ENABLED = 0;
};
ldflags = [
"-s"
"-w"
];
postInstall = ''
mkdir -p $out/share/wedding
cp -r public $out/share/wedding/public
'';
};
in
{
sops.secrets.github_password = { };
virtualisation.oci-containers = {
backend = "podman";
containers = {
wedding = {
login = {
username = "fwastring";
passwordFile = config.sops.secrets.github_password.path;
registry = "https://ghcr.io";
};
image = "ghcr.io/fwastring/wedding:6de68dab52d1675283b8766d401088c9c541b170";
ports = [ "127.0.0.1:8083:8080" ];
options.wedding = {
enable = lib.mkEnableOption "Wedding site";
};
config = lib.mkIf config.wedding.enable {
sops.secrets.gotify_password = { };
systemd.services.wedding = {
description = "Wedding site";
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
ExecStart = "${weddingPackage}/bin/app";
Restart = "on-failure";
DynamicUser = true;
WorkingDirectory = "${weddingPackage}/share/wedding";
Environment = [
"PUBLIC_DIR=${weddingPackage}/share/wedding/public"
"GOTIFY_URL=https://message.wastring.com"
"GOTIFY_TOKEN=AxlVMOKqqoohYxC"
"HTTP_ADDR=0.0.0.0:8083"
"PORT=8083"
];
};
};
};
services.nginx = {
virtualHosts."wedding.wastring.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8083";
proxyWebsockets = true;
services.nginx = {
virtualHosts."wedding.wastring.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:8083";
proxyWebsockets = true;
};
};
};
};