diff --git a/funkwhale_network/index.html b/funkwhale_network/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..5d50dc90f56116b1a1834e32fda548aab585a691
--- /dev/null
+++ b/funkwhale_network/index.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <title>Funkwhale Network</title>
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="stylesheet" type="text/css" media="screen" href="/static/pure.min.css" />
+  <link rel="stylesheet" type="text/css" media="screen" href="/static/main.css" />
+  <script src="/static/main.js"></script>
+</head>
+<body>
+  <main>
+    <header class="header">
+      <h1>Funkwhale Network</h1>
+    </header>
+    <p>Welcome on the Funkwhale Network Observatory, where you can get information about the Funkwhale Network!</p>
+    <p>This project aims to gather anonymous data and statistics about existing Funkwhale servers, to monitor the state of the network.</li>
+    <section>
+      <h2>Submit a new instance</h2>
+      <p>If you own an instance and want to see it tracked, simply fill in the instance domain name in the form below.</p>
+      <form id="domain-form" action="/api/domains" method="POST">
+        <label for="domain-input">Domain name</label>
+        <input type="text" name="name" id="domain-input" placeholder="example.com" required />
+        <button type="submit" class="pure-button">Submit</button>
+        <p id="form-error" class="message error hidden"></p>
+        <p id="form-success" class="message success hidden"></p>
+      </form>
+    </section>
+    <section>
+      <h2>Frequently Asked Questions</h2>
+      <h3>How can I remove my instance from the statistics?</h3>
+      <p>If you'd rather not have your instance tracked, you can easily opt-out from the statistics. Visit your instance settings, enable "Private mode" in the "Statistics" section and that's it! Existing data will be removed next time we try to collect data from your instance.</p>
+      <h3>How does it work?</h3>
+      <p>Our crawler gather data from Funkwhale instances NodeInfo endpoints, such as <a href="https://open.audio/api/v1/instance/nodeinfo/2.0/" target="_blank">https://open.audio/api/v1/instance/nodeinfo/2.0/</a>.</p>
+      <h3>What kind of data is collected?</h3>
+      <p>We collect instance-level data as it's displayed in the NodeInfo endpoint, this includes:</p>
+      <ul>
+        <li>Instance version</li>
+        <li>Instance name, description and important settings (are registration status? Is streaming available to anonymous users?)</li>
+        <li>Basic user activity: number of accounts, number of active accounts past month and past 6 months</li>
+        <li>Basic library aggregated data: number of available artists, albums and tracks</li>
+      </ul>
+      <h3>Why do you collect this data?</h3>
+      <p>Collecting data about Funkwhale instances can help everyone understand how the network is growing, and how active are users. </p>
+      <p>Storing software versions is helpful to assess potential security issues and contact instance owners.</p>
+      <p>Finally, this data will be reused to help people finding an instance and join the network.</p>
+
+
+    </section>
+  </main>
+</body>
+</html>
diff --git a/funkwhale_network/routes.py b/funkwhale_network/routes.py
index 6c6f06c321346ccd16d0188198c4a357ae2e93cd..86ea8d4fb9813973cf14b6d8a0759f1ade7eeba2 100644
--- a/funkwhale_network/routes.py
+++ b/funkwhale_network/routes.py
@@ -1,8 +1,37 @@
+import aiohttp
 from aiohttp import web
+import json
+import os
+import urllib.parse
 
+from . import crawler
 from . import db
+from . import exceptions
 from . import serializers
 
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+STATIC_DIR = os.path.join(BASE_DIR, "static")
+
+
+def validate_domain(raw):
+    if not raw:
+        raise ValueError()
+
+    if not isinstance(raw, str):
+        raise ValueError()
+
+    url = f"http://{raw}/"
+    v = urllib.parse.urlparse(url).hostname
+    if not v:
+        raise ValueError()
+    return v
+
+
+async def index(request):
+    with open(os.path.join(BASE_DIR, "index.html"), "r") as f:
+        index_html = f.read()
+    return web.Response(text=index_html, content_type="text/html")
+
 
 async def domains(request):
     if request.method == "GET":
@@ -18,7 +47,25 @@ async def domains(request):
         return web.json_response(payload)
 
     if request.method == "POST":
-        payload = await request.json()
+        try:
+            payload = await request.json()
+        except json.decoder.JSONDecodeError:
+            payload = await request.post()
+        try:
+            payload = {"name": validate_domain(payload["name"])}
+        except (TypeError, KeyError, AttributeError, ValueError):
+            return web.json_response(
+                {"error": f"Invalid payload {payload}"}, status=400
+            )
+        try:
+            kwargs = crawler.get_session_kwargs()
+            async with aiohttp.ClientSession(**kwargs) as session:
+                await crawler.fetch_nodeinfo(session, payload["name"])
+        except (aiohttp.client_exceptions.ClientError, exceptions.CrawlerError) as e:
+            return web.json_response(
+                {"error": f"Invalid domain name {payload['name']}"}, status=400
+            )
+
         domain = await serializers.create_domain(request["conn"], payload)
         await request.app["crawler"].poll(payload["name"])
         if domain:
diff --git a/funkwhale_network/server.py b/funkwhale_network/server.py
index 50626eb53d347ce4657a7ce78c4618bf77786316..e387f71145450ab1f1bc10602773e3233a008580 100644
--- a/funkwhale_network/server.py
+++ b/funkwhale_network/server.py
@@ -7,9 +7,10 @@ from aiohttp import web
 
 
 def prepare_app(app, pool):
+    app.router.add_get("/", routes.index)
     app.router.add_get("/api/domains", routes.domains)
     app.router.add_post("/api/domains", routes.domains)
-
+    app.add_routes([web.static("/static", routes.STATIC_DIR)])
     app["pool"] = pool
     app["crawler"] = worker.Crawler(
         redis_settings=arq.RedisSettings(**settings.REDIS_CONFIG)
diff --git a/funkwhale_network/static/main.css b/funkwhale_network/static/main.css
new file mode 100644
index 0000000000000000000000000000000000000000..2a919190a1ab5c60a683955825381bda29a44294
--- /dev/null
+++ b/funkwhale_network/static/main.css
@@ -0,0 +1,26 @@
+main {
+  max-width: 650px;
+  margin: 1em auto;
+  line-height: 1.5;
+}
+
+section {
+  margin-top: 3em;
+}
+.hidden {
+  display: none;
+}
+
+.message {
+  background-color: whitesmoke;
+  padding: 1em;
+
+}
+.error.message {
+  color: darkred;
+  border: 1px dashed darkred;
+}
+.success.message {
+  color: darkgreen;
+  border: 1px dashed darkgreen;
+}
diff --git a/funkwhale_network/static/main.js b/funkwhale_network/static/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..16410940fb01c4f85d11266755699ba3bab7204f
--- /dev/null
+++ b/funkwhale_network/static/main.js
@@ -0,0 +1,30 @@
+
+function submit () {
+  document.getElementById('form-error').classList.add('hidden')
+  document.getElementById('form-success').classList.add('hidden')
+  var XHR = new XMLHttpRequest();
+  var FD  = new FormData();
+  var payload = {
+    name: document.getElementById('domain-input').value
+  }
+  XHR.onreadystatechange = function () {
+    if (XHR.readyState === 4 && XHR.status === 400) {
+      var json = JSON.parse(XHR.responseText);
+      document.getElementById('form-error').innerHTML = 'Error: ' + json.error
+      document.getElementById('form-error').classList.remove('hidden')
+    } else if (XHR.readyState === 4 && (XHR.status === 200 || XHR.status === 204)) {
+      document.getElementById('form-success').innerHTML = 'Success: domain ' + payload.name + ' was submitted successfully :)'
+      document.getElementById('form-success').classList.remove('hidden')
+    }
+  };
+  XHR.open('POST', '/api/domains', true);
+  XHR.setRequestHeader("Content-Type", "application/json");
+  XHR.send(JSON.stringify(payload));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+  document.getElementById('domain-form').addEventListener('submit', function (event) {
+    event.preventDefault();
+      submit()
+  })
+});
diff --git a/funkwhale_network/static/pure.min.css b/funkwhale_network/static/pure.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..8445bc14a8d360d981c09602309924bf706040a7
--- /dev/null
+++ b/funkwhale_network/static/pure.min.css
@@ -0,0 +1,11 @@
+/*!
+Pure v1.0.0
+Copyright 2013 Yahoo!
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.pure-button:focus,a:active,a:hover{outline:0}.pure-table,table{border-collapse:collapse;border-spacing:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.pure-button,input{line-height:normal}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}.pure-button,.pure-form input:not([type]),.pure-menu{box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend,td,th{padding:0}legend{border:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u,.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto;display:inline-block;zoom:1}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;zoom:1;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);border:1px solid #999;border:transparent;background-color:#E6E6E6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{filter:alpha(opacity=90);background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000\9}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto;margin:0;border-radius:0;border-right:1px solid #111;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=tel],.pure-form input[type=color],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=text],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px}.pure-form input[type=color]{padding:.2em .5em}.pure-form input:not([type]):focus,.pure-form input[type=password]:focus,.pure-form input[type=email]:focus,.pure-form input[type=url]:focus,.pure-form input[type=date]:focus,.pure-form input[type=month]:focus,.pure-form input[type=time]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=week]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=color]:focus,.pure-form input[type=number]:focus,.pure-form input[type=search]:focus,.pure-form input[type=text]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129FEA}.pure-form input[type=file]:focus,.pure-form input[type=checkbox]:focus,.pure-form input[type=radio]:focus{outline:#129FEA auto 1px}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input:not([type])[disabled],.pure-form input[type=password][disabled],.pure-form input[type=email][disabled],.pure-form input[type=url][disabled],.pure-form input[type=date][disabled],.pure-form input[type=month][disabled],.pure-form input[type=time][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=week][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=color][disabled],.pure-form input[type=number][disabled],.pure-form input[type=search][disabled],.pure-form input[type=text][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input:not([type]),.pure-form-stacked input[type=password],.pure-form-stacked input[type=email],.pure-form-stacked input[type=url],.pure-form-stacked input[type=date],.pure-form-stacked input[type=month],.pure-form-stacked input[type=time],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=week],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=color],.pure-form-stacked input[type=file],.pure-form-stacked input[type=number],.pure-form-stacked input[type=search],.pure-form-stacked input[type=text],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-aligned .pure-help-inline,.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=tel],.pure-form input[type=color],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=text],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=password],.pure-group input[type=email],.pure-group input[type=url],.pure-group input[type=date],.pure-group input[type=month],.pure-group input[type=time],.pure-group input[type=datetime],.pure-group input[type=datetime-local],.pure-group input[type=week],.pure-group input[type=tel],.pure-group input[type=color],.pure-group input[type=number],.pure-group input[type=search],.pure-group input[type=text]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0}.pure-form .pure-help-inline,.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;zoom:1;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;padding:.5em 0}.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar{display:none}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#000}.pure-table{empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td,.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}
diff --git a/tests/test_routes.py b/tests/test_routes.py
index fb6b4d35294d69e2a358c0dcdfa32065f824f63d..4fbb86da71d4f2e703c63396caa774cc4a6b723c 100644
--- a/tests/test_routes.py
+++ b/tests/test_routes.py
@@ -5,9 +5,9 @@ async def test_domains_get(client, factories):
 
     checks = sorted(
         [
-            await factories["Check"].c(),
-            await factories["Check"].c(),
-            await factories["Check"].c(),
+            await factories["Check"].c(private=False),
+            await factories["Check"].c(private=False),
+            await factories["Check"].c(private=False),
         ],
         key=lambda o: o["domain"],
     )
@@ -21,8 +21,10 @@ async def test_domains_get(client, factories):
     }
 
 
-async def test_domains_create(client):
+async def test_domains_create(client, coroutine_mock, mocker):
     payload = {"name": "test.domain"}
+    mocker.patch("funkwhale_network.crawler.fetch_nodeinfo", coroutine_mock())
+
     resp = await client.post("/api/domains", json=payload)
     assert resp.status == 201
     assert await resp.json() == {"name": payload["name"]}