A worker cooperative · open source · NixOS

Your home server.Your data. Your rules.

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.

Own your dataRemote access built inOne login for everythingNo subscription lock-in
Replaces:
Google DocsCryptPadNetflixJellyfin+ Radarr, Sonarr, Lidarr, ProwlarrNextcloudsoon

Your keys, your hardware

01

TLS and WireGuard keys never leave your house. Nobody else can decrypt your traffic — not even us.

Reachable anywhere

02

One encrypted tunnel to a box in the cloud. Jellyfin, docs, photos — from any phone, on any network, no port forwarding.

One login for everything

03

Every service signs in with the same account. Add a user once, they get every app — no per-app password sprawl.

Two ways in

Zero setup

Buy a box

We assemble, install and ship a pre-configured Fortress. Plug it in, connect ethernet, and claim it with your account in under five minutes.

  • Pre-installed NixOS + all services
  • Encrypted offsite backups included
  • Support from real humans
Bring your own hardware

Install on your machine

Fortress is a NixOS module. Point your flake at it, enable the services you want, rebuild. No setup wizard, no app store.

  • Free forever, AGPL-3.0
  • Run as many machines as you like
  • Same remote access as a box

Install on your own machines

macOS or regular Linux: the container tier in one command. NixOS: each machine is one file in your flake.

1

macOS or Linux — no Nix yet

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.

2

Add the flake input

{
  inputs = {
    fortress.url = "github:ElementalPlaneOfAir/cococoir";
    inputs.nixpkgs.follows = "nixpkgs";
  };
}
3

Import the module

{
  imports = [ inputs.fortress.nixosModules.default ];
}
4

Enable services and rebuild

fortress.services.jellyfin = { enable = true; public = true; };
fortress.services.dex      = { enable = true; public = true; };

sudo nixos-rebuild switch --flake .#mybox

Each service gets its own Caddy vhost with automatic TLS. Enable a service next to Dex and every user signs in with one account.

5

Repeat per machine

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.