I use NixOS containers to run multiple relays: # > sudo systemctl -M tor-1 status tor # > sudo journalctl -M tor-1 -eu tor.service containers = let mkTorContainer = { stateDir, orPort, controlPort, }: { autoStart = true; ephemeral = true; # impermanence bindMounts = { "/var/lib/tor/" = { hostPath = stateDir; isReadOnly = false; }; }; config = {...}: { services.tor = { enable = true; relay = { enable = true; role = "exit"; }; settings = { Nickname = "DXV7520"; ContactInfo = "admin@caspervk.net"; ORPort = [ { addr = "31.133.0.235"; port = orPort; } { addr = "[2001:67c:2044:c141::1:6431:1]"; port = orPort; } ]; ControlPort = controlPort; ExitRelay = true; IPv6Exit = true; ExitPolicy = [ "reject *:22" "reject *:25" "accept *:*" ]; MyFamily = builtins.concatStringsSep "," [ "1B9D2C9E0EFE2C6BD23D62B2FCD145886AD242D1" # /var/lib/tor-1/fingerprint "293CE00D11B1D8B99AE8811CBDFDA3F353353710" # /var/lib/tor-2/fingerprint "27FF3E6979EF6570B9EB3B53B11964FE08F36F19" # /var/lib/tor-3/fingerprint "C2041A1CE9FDFDB13572D946A3055310FD48A595" # /var/lib/tor-4/fingerprint ]; }; }; system.stateVersion = config.system.stateVersion; }; }; in { tor-1 = mkTorContainer { stateDir = "/var/lib/tor-1/"; orPort = 443; controlPort = 9051; }; tor-2 = mkTorContainer { stateDir = "/var/lib/tor-2/"; orPort = 444; controlPort = 9052; }; tor-3 = mkTorContainer { stateDir = "/var/lib/tor-3/"; orPort = 445; controlPort = 9053; }; tor-4 = mkTorContainer { stateDir = "/var/lib/tor-4/"; orPort = 446; controlPort = 9054; }; }; Full config: https://git.caspervk.net/caspervk/nixos/src/branch/master/hosts/tor/tor.nix