Fortress replaces Google Docs, Dropbox, Netflix and Ring with a self-hosted box in your house — reachable from anywhere, with every key on your own hardware.
TLS and WireGuard keys never leave your house. Nobody else can decrypt your traffic — not even us.
One encrypted tunnel to a box in the cloud. Jellyfin, docs, photos — from any phone, on any network, no port forwarding.
Every service signs in with the same account. Add a user once, they get every app — no per-app password sprawl.
We assemble, install and ship a pre-configured Fortress. Plug it in, connect ethernet, and claim it with your account in under five minutes.
Fortress is a NixOS module. Point your flake at it, enable the services you want, rebuild. No setup wizard, no app store.
macOS or regular Linux: the container tier in one command. NixOS: each machine is one file in your flake.
Detects your OS, installs Docker (a warning + no-op if it's already there), writes a small deployment flake into a config folder you choose, builds the image, and boots the demo stack.
curl https://proletariat.tech/install.sh | bash
Then visit https://jellyfin.vmtest.local:8443 (the script adds the hosts entries; self-signed demo cert). Runs the demo tier in Docker — the full NixOS module below is the native path.
{
inputs = {
fortress.url = "github:ElementalPlaneOfAir/cococoir";
inputs.nixpkgs.follows = "nixpkgs";
};
}{
imports = [ inputs.fortress.nixosModules.default ];
}fortress.services.jellyfin = { enable = true; public = true; };
fortress.services.dex = { enable = true; public = true; };
sudo nixos-rebuild switch --flake .#myboxEach service gets its own Caddy vhost with automatic TLS. Enable a service next to Dex and every user signs in with one account.
One flake, many machines. Each machine is its own nixosConfiguration importing the same module — give it a hostname, a fortress.baseDomain , and enable the services it should run. Storage, TLS and DNS follow automatically.
# flake.nix — one module, N machines
outputs = { self, nixpkgs, fortress, ... }: {
nixosConfigurations = {
living-room = nixpkgs.lib.nixosSystem {
modules = [
fortress.nixosModules.default
({ pkgs, ... }: {
networking.hostName = "living-room";
fortress.baseDomain = "alice.example.com";
fortress.services.jellyfin.enable = true;
fortress.services.dex.enable = true;
})
];
};
garage = nixpkgs.lib.nixosSystem {
modules = [
fortress.nixosModules.default
({ pkgs, ... }: {
networking.hostName = "garage";
fortress.baseDomain = "alice.example.com";
fortress.services.cryptpad.enable = true;
})
];
};
};
};Each machine gets its own Caddy vhosts under your domain. Claim them all under one account for a single set of remote-access routes.