diff --git a/roles/network_plugin/templates/calico/calico-node.service.j2 b/roles/network_plugin/templates/calico/calico-node.service.j2
index 18fc770061fdca4274908b03b0ef9b3c63ccca1a..d4083afa8c3d1d51e689ec48937c8f4388420168 100644
--- a/roles/network_plugin/templates/calico/calico-node.service.j2
+++ b/roles/network_plugin/templates/calico/calico-node.service.j2
@@ -1,19 +1,20 @@
 [Unit]
-Description=calicoctl node
-After=etcd2.service
+Description=Calico per-node agent
+Documentation=https://github.com/projectcalico/calico-docker
+Requires=docker.service
+After=docker.service etcd2.service
 
 [Service]
 EnvironmentFile=/etc/network-environment
 User=root
 PermissionsStartOnly=true
 {%    if peer_with_router|default(false) %}
-ExecStart={{ bin_dir }}/calicoctl node --kubernetes --ip=${DEFAULT_IPV4} --as={{ local_as }}
+ExecStart={{ bin_dir }}/calicoctl node --kubernetes --ip=${DEFAULT_IPV4} --as={{ local_as }} --detach=false
 {%     else %}
-ExecStart={{ bin_dir }}/calicoctl node --kubernetes --ip=${DEFAULT_IPV4}
+ExecStart={{ bin_dir }}/calicoctl node --kubernetes --ip=${DEFAULT_IPV4} --detach=false
 {%     endif %}
-
-RemainAfterExit=yes
-Type=oneshot
+Restart=always
+Restart=10
 
 [Install]
 WantedBy=multi-user.target