diff --git a/Gemfile b/Gemfile
index c9e6de7be0b048c75c713d975d6a9fb5efec6943..486a0e7b2f53f01af1bb7d1f01dff185f26dcf26 100644
--- a/Gemfile
+++ b/Gemfile
@@ -6,7 +6,8 @@ gem 'bundler', '>= 1.0.0'
 gem 'foreman', '0.27.0'
 gem 'whenever'
 
-gem 'thin', '~> 1.3.1', :require => false
+gem 'thin', '~> 1.3.1',    :require => false
+gem 'unicorn', '~> 4.1.1', :require => false
 
 # authentication
 
diff --git a/Gemfile.lock b/Gemfile.lock
index ae73e84c140d867f0d9a9f59461a3a09d24031c4..05050f762861e41cd31b0fa97da5f9f44bf3ada2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -218,6 +218,7 @@ GEM
       multi_json
     jwt (0.1.4)
       json (>= 1.2.4)
+    kgio (2.7.0)
     launchy (2.0.3)
     linecache (0.46)
       rbx-require-relative (> 0.0.4)
@@ -307,6 +308,7 @@ GEM
       rake (>= 0.8.7)
       rdoc (~> 3.4)
       thor (~> 0.14.4)
+    raindrops (0.8.0)
     rake (0.9.2.2)
     rbx-require-relative (0.0.5)
     rdoc (3.12)
@@ -391,6 +393,10 @@ GEM
     typhoeus (0.3.3)
       mime-types
     tzinfo (0.3.31)
+    unicorn (4.1.1)
+      kgio (~> 2.4)
+      rack
+      raindrops (~> 0.6)
     vegas (0.1.8)
       rack (>= 1.0.0)
     warden (1.0.6)
@@ -490,6 +496,7 @@ DEPENDENCIES
   timecop
   twitter (= 2.0.2)
   typhoeus
+  unicorn (~> 4.1.1)
   vanna!
   webmock
   whenever
diff --git a/config/unicorn.rb b/config/unicorn.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1da12c27a128569221d80e876ffc2138d14e6cda
--- /dev/null
+++ b/config/unicorn.rb
@@ -0,0 +1,45 @@
+rails_env = ENV['RAILS_ENV'] || 'development'
+
+# Enable and set these to run the worker as a different user/group
+#user  = 'diaspora'
+#group = 'diaspora'
+
+worker_processes 3
+
+## Load the app before spawning workers
+#preload_app true
+
+# How long to wait before killing an unresponsive worker
+timeout 30
+
+#pid '/var/run/diaspora/diaspora.pid'
+#listen '/var/run/diaspora/diaspora.sock', :backlog => 2048
+
+# Ruby Enterprise Feature
+if GC.respond_to?(:copy_on_write_friendly=)
+  GC.copy_on_write_friendly = true
+end
+
+
+before_fork do |server, worker|
+  # If using preload_app, enable this line
+  #ActiveRecord::Base.disconnect!
+
+  old_pid = '/var/run/diaspora/diaspora.pid.oldbin'
+  if File.exists?(old_pid) && server.pid != old_pid
+    begin
+      Process.kill("QUIT", File.read(old_pid).to_i)
+    rescue Errno::ENOENT, Errno::ESRCH
+      # someone else did our job for us
+    end
+  end
+end
+
+
+after_fork do |server, worker|
+  # If using preload_app, enable this line
+  #ActiveRecord::Base.establish_connection
+
+  # Enable this line to have the workers run as different user/group
+  #worker.user(user, group)
+end