# circus-register Register a new companion ## Setup First, build an image: ``` $ docker build . -t circus-register ``` Then run the container: ``` $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --net circus -p 8081:8081 circus-register:latest ``` ## Function This container should only show a small registration form for the user. The user inputs a name and recieves an access token and a link to a companion container. All this contains does is run this command with a few custom values: ``` $ docker run \ --net circus \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(pwd)/companion.json:/etc/companion.json \ -p 8086:8080 \ -d circus-companion:latest \ -username "Player 1" \ -accessCode theoneandonlyplayeroneisready \ -sessionSalt salty \ -vpnRemoteAddress 127.0.0.1 \ -vpnRemotePort 1193 ``` What this command does: - starts a circus companion - inserts the companion into the circus network - mounts the docker socket - mounts the companion.json seeding the challenges - exposes port 8080 to the outside world - defines the name of the player - defines the access-token the player can use to login - defines a salt for the session - defines where the remote vpn is running - defines behind which port the vpn can be found That's a lot, but all we need to do is to get a name for the user, generate a random access code, start the container and return the access code to the user. ## Overall procedure: ![](https://git.darknebu.la/circus/circus-register/raw/branch/master/imgs/Procedure.png)