--- /dev/null
+diff --git a/cmd/greenapid/main.go b/cmd/greenapid/main.go
+index 86499e9..1589323 100644
+--- a/cmd/greenapid/main.go
++++ b/cmd/greenapid/main.go
+@@ -1,6 +1,7 @@
+ package main
+
+ import (
++ "net"
+ "net/http"
+
+ "github.com/jbowens/codenamesgreen/gameapi"
+@@ -13,6 +14,12 @@ func main() {
+ }
+
+ h := gameapi.Handler(wordLists)
+- err = http.ListenAndServe(":8080", h)
++ server := &http.Server{Handler: h}
++ ln, err := net.Listen("unix", "/run/codenamesgreen/socket.sock")
++ if err != nil {
++ panic(err)
++ }
++
++ err = server.Serve(ln)
+ panic(err)
+ }
+diff --git a/gameapi/handler.go b/gameapi/handler.go
+index d67cf94..108e7e1 100644
+--- a/gameapi/handler.go
++++ b/gameapi/handler.go
+@@ -101,7 +101,7 @@ func (h *handler) handleIndex(rw http.ResponseWriter, req *http.Request) {
+ for {
+ w1 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
+ w2 := strings.ToLower(h.allWords[h.rand.Int63n(int64(len(h.allWords)))])
+- id := fmt.Sprintf("%s-%s", w1, w2)
++ id = fmt.Sprintf("%s-%s", w1, w2)
+ if _, ok := h.games[id]; !ok {
+ break
+ }