Register a new companion
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
emile 095f3c0e26
added another decriptive image (circus)
8 months ago
hosted one dot taking down a whole container 9 months ago
imgs added another decriptive image (circus) 8 months ago
src regex the username 8 months ago
.drone.yml drone file 8 months ago
.gitignore Initial commit 9 months ago
Dockerfile added some dependencies fixing go vendor foo 9 months ago added another decriptive image (circus) 8 months ago


Register a new companion


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 -initialVPNPort 1194

initialVPNPort defines the first vpn port to be handed out to a companion container.


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 \
    -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:

Circus-container connections: