diff --git a/Keter/Postgres.hs b/Keter/Postgres.hs
--- a/Keter/Postgres.hs
+++ b/Keter/Postgres.hs
@@ -125,8 +125,8 @@
                 Nothing -> do
                     let (dbi', g') = randomDBI g
                     let dbi = dbi'
-                            { dbiName = appname ++ dbiName dbi'
-                            , dbiUser = appname ++ dbiUser dbi'
+                            { dbiName = sanitize appname ++ dbiName dbi'
+                            , dbiUser = sanitize appname ++ dbiUser dbi'
                             }
                     ex <- lift $ liftIO $ setupDBInfo dbi
                     case ex of
@@ -142,3 +142,10 @@
                                     S.put (db', g')
                                     return $ Right dbi
         lift $ f dbi
+
+    sanitize = T.map sanitize'
+    sanitize' c
+        | 'A' <= c && c <= 'Z' = c
+        | 'a' <= c && c <= 'z' = c
+        | '0' <= c && c <= '9' = c
+        | otherwise = '_'
diff --git a/Keter/Proxy.hs b/Keter/Proxy.hs
--- a/Keter/Proxy.hs
+++ b/Keter/Proxy.hs
@@ -19,7 +19,7 @@
 import Control.Concurrent (forkIO, killThread)
 import Control.Concurrent.MVar
 import Data.Char (isSpace, toLower)
-import Control.Exception (onException)
+import Control.Exception (finally)
 import Keter.PortManager (Port)
 import Control.Monad.Trans.Class (lift)
 import qualified Data.ByteString.Lazy as L
@@ -52,8 +52,8 @@
   where
     withServer rsrc fromServer toServer = do
         x <- newEmptyMVar
-        tid1 <- forkIO $ (rsrc $$+- toServer) `onException` putMVar x True
-        tid2 <- forkIO $ (fromServer $$ toClient) `onException` putMVar x False
+        tid1 <- forkIO $ (rsrc $$+- toServer) `finally` putMVar x True
+        tid2 <- forkIO $ (fromServer $$ toClient) `finally` putMVar x False
         y <- takeMVar x
         killThread $ if y then tid2 else tid1
 
diff --git a/keter.cabal b/keter.cabal
--- a/keter.cabal
+++ b/keter.cabal
@@ -1,5 +1,5 @@
 Name:                keter
-Version:             0.2.0
+Version:             0.2.0.1
 Synopsis:            Web application deployment manager, focusing on Haskell web frameworks
 Description:         Handles deployment of web apps, using Nginx as a reverse proxy to achieve zero downtime deployments. For more information, please see the README on Github: <https://github.com/snoyberg/keter#readme>
 Homepage:            http://www.yesodweb.com/
