a service to construct webrings and patch holes if a member goes down
Find a file
2025-12-20 00:51:02 +01:00
src fix logging for 'prev' endpoint 2025-12-20 00:51:02 +01:00
.gitignore initial commit 2025-12-05 00:55:32 +01:00
Cargo.lock remove unneeded actix dependency 2025-12-05 01:55:58 +01:00
Cargo.toml remove unneeded actix dependency 2025-12-05 01:55:58 +01:00
flake.lock tila/nix-flake: add nixos module 2025-12-20 00:20:42 +01:00
flake.nix tila/nix-flake: add nixos module 2025-12-20 00:20:42 +01:00
module.nix tila/nix-flake: add nixos module 2025-12-20 00:20:42 +01:00
ouroboros.toml set default check_period to 300s 2025-12-05 01:46:29 +01:00
README.md Fix README typo 2025-12-20 00:23:01 +01:00
rustfmt.toml initial commit 2025-12-05 00:55:32 +01:00

ouroboros

a service to construct webrings and patch holes if a member goes down

NixOS Module

This flake provides a NixOS module for running ouroboros as a systemd service.

Configuration

Add the flake to your inputs and import the module:

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    ouroboros.url = "git+https://git.heroin.trade/marie/ouroboros";
  };

  outputs = { self, nixpkgs, ouroboros }: {
    nixosConfigurations.yourhost = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        { nixpkgs.overlays = [ ouroboros.overlays.default ]; }
        ouroboros.nixosModules.default
        {
          services.ouroboros = {
            enable = true;
            address = "0.0.0.0";
            port = 8080;
            maxTimeout = 5000;
            checkPeriod = 300;
            websites = [
              { name = "site1"; url = "https://example.com"; }
              { name = "site2"; url = "https://example.org"; }
            ];
          };
        }
      ];
    };
  };
}

Options

  • services.ouroboros.enable - Enable the ouroboros service
  • services.ouroboros.package - Package to use (defaults to pkgs.ouroboros)
  • services.ouroboros.address - Bind address (default: 127.0.0.1)
  • services.ouroboros.port - Bind port (default: 8080)
  • services.ouroboros.maxTimeout - Request timeout in milliseconds (default: 5000)
  • services.ouroboros.checkPeriod - Health check interval in seconds (default: 300)
  • services.ouroboros.websites - List of websites in the webring
    • name - Identifier for URL path
    • url - Target URL for redirection

Service Endpoints

  • /next?site=<name> - Redirect to next available site in ring
  • /prev?site=<name> - Redirect to previous available site in ring

The service runs as a dynamic user with systemd hardening enabled.