Binary install without package manager


Download and install the binary

  1. Use the following command to download the calico/node image.

    docker pull calico/node:v3.12.0
  2. Confirm that the image has loaded by typing docker images.

    REPOSITORY       TAG           IMAGE ID       CREATED         SIZE
    calico/node      v3.12.0        e07d59b0eb8a   2 minutes ago   42MB
  3. Create a temporary calico/node container.

    docker create --name container calico/node:v3.12.0
  4. Copy the calico-node binary from the container to the local file system.

    docker cp container:/bin/calico-node calico-node
  5. Delete the temporary container.

    docker rm container
  6. Set the extracted binary file to be executable.

    chmod +x calico-node

Create a start-up script

Felix should be started at boot by your init system and the init system must be configured to restart Felix if it stops. Felix relies on that behavior for certain configuration changes.

If your distribution uses systemd, then you could use the following unit file:

Description=Calico Felix agent

ExecStartPre=/usr/bin/mkdir -p /var/run/calico
ExecStart=/usr/local/bin/calico-node -felix


Or, for upstart:

description "Felix (Calico agent)"
author "Project Calico Maintainers <>"

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

limit nofile 32000 32000

respawn limit 5 10

chdir /var/run

pre-start script
  mkdir -p /var/run/calico
  chown root:root /var/run/calico
end script

exec /usr/local/bin/calico-node -felix

Configure Felix

Optionally, you can create a file at /etc/calico/felix.cfg to configure Felix. The configuration file as well as other options for configuring Felix (including environment variables) are described in this document.

If etcd is not running on the local machine, it’s essential to configure the EtcdAddr or EtcdEndpoints setting to tell Felix how to reach etcd.

Felix tries to detect whether IPv6 is available on your platform but the detection can fail on older (or more unusual) systems. If Felix exits soon after startup with ipset or iptables errors try setting the Ipv6Support setting to false.

Start Felix

Once you’ve configured Felix, start it up via your init system.

service calico-felix start

Running Felix manually

For debugging, it’s sometimes useful to run Felix manually and tell it to emit its logs to screen. You can do that with the following command.

ETCD_ENDPOINTS=http://<ETCD_IP>:<ETCD_PORT> FELIX_LOGSEVERITYSCREEN=INFO /usr/local/bin/calico-node -felix

Note: Add the ETCD_ENDPOINTS Env and replace <ETCD_IP>:<ETCD_PORT> with your etcd configuration when etcd isn’t running locally.