docs: def setup(addr, user, remote_path, local_key=None):
      """Setup the tunnel"""
      port = find_port(addr, user)
  
      if not port or not is_alive(addr, user):
          port = new_port()
  
          scp(addr, user, __file__, '~/unixpipe', local_key)
  
          ssh_call = ['ssh', '-fL%d:127.0.0.1:12042' % port,
                      '-o', 'ExitOnForwardFailure=yes',
                      '-o', 'ControlPath=~/.ssh/unixpipe_%%r@%%h_%d' % port,
                      '-o', 'ControlMaster=auto',
                      '%s@%s' % (user, addr,), 'python', '~/unixpipe',
                      'server', remote_path]
          if local_key:
              ssh_call.insert(1, local_key)
              ssh_call.insert(1, '-i')
  
          subprocess.call(ssh_call)
          # XXX Sleep is a bad way to wait for the tunnel endpoint
          time.sleep(1)
  
      return port