diff --git a/.dockerignore b/.dockerignore
index fad29fc260f0278be29e6e6aa377578361f12c2a..7892e503c9232f6cb4a25186c3fefb673fc24e51 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -4,3 +4,4 @@ public/system
 public/assets
 node_modules
 storybook
+neo4j
diff --git a/.env.production.sample b/.env.production.sample
index 070aa0c3a4f40ece672a0a1ba9e01f0c9ea22f46..b68ba523cd26c880faa708c77e120a4d518062c2 100644
--- a/.env.production.sample
+++ b/.env.production.sample
@@ -6,6 +6,8 @@ DB_USER=postgres
 DB_NAME=postgres
 DB_PASS=
 DB_PORT=5432
+NEO4J_HOST=neo4j
+NEO4J_PORT=7474
 
 # Federation
 LOCAL_DOMAIN=example.com
diff --git a/app/models/follow.rb b/app/models/follow.rb
index 95b6bd146bfd9ac8435e270813aef8ffc525f18e..656b28d354d8dbc752b3fb5509665b0152f26747 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -26,6 +26,10 @@ class Follow < ApplicationRecord
   after_create  :add_to_graph
   after_destroy :remove_from_graph
 
+  def sync!
+    add_to_graph
+  end
+
   private
 
   def add_to_graph
diff --git a/db/seeds.rb b/db/seeds.rb
index c2bf6a16e9d2b38e5ea859020dd4ad47adc21a13..7e8ee8e4452261c01cb8fe9e86fc663042f52260 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,2 +1,2 @@
 web_app = Doorkeeper::Application.new(name: 'Web', superapp: true, redirect_uri: Doorkeeper.configuration.native_redirect_uri)
-web_app.save(validate: false)
+web_app.save!
diff --git a/docker-compose.yml b/docker-compose.yml
index b3b233713e9b92f7988b15ebf7bbbcdde240a507..18af16b6045c9663dd5cd42062f5291f7364a60f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,6 +4,10 @@ services:
     image: postgres
   redis:
     image: redis
+  neo4j:
+    image: neo4j
+    environment:
+      - NEO4J_AUTH=none
   app:
     build: .
     env_file: .env.production
@@ -15,6 +19,7 @@ services:
     depends_on:
       - db
       - redis
+      - neo4j
     volumes:
       - ./public/assets:/mastodon/public/assets
       - ./public/system:/mastodon/public/system
@@ -24,5 +29,6 @@ services:
     depends_on:
       - db
       - redis
+      - neo4j
     volumes:
       - ./public/system:/mastodon/public/system
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 29e4494c4023b0d59393a3fca00b0e77e27b0f58..aa07c07385ad6e8d789f0ad4a76ab4ab36399775 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -41,4 +41,11 @@ namespace :mastodon do
       $redis.keys('feed:*').each { |key| $redis.del(key) }
     end
   end
+
+  namespace :graphs do
+    desc 'Syncs all follow relationships to Neo4J'
+    task sync: :environment do
+      Follow.find_each(&:sync!)
+    end
+  end
 end