In this post we’ll show how to run the Portainer Edge Agent on a computer using docker-compose and systemd. In case you haven’t installed docker
or docker-compose
, see How to install docker and docker-compose on Ubuntu in 30 seconds.
If you don’t have a Portainer instance running to which the Edge Agent can connect, see Running Portainer using docker-compose and systemd!
First, create the directory where the docker-compose.yml
will live and edit it:
sudo mkdir -p /var/lib/portainer-edge-agent sudo nano /var/lib/portainer-edge-agent/docker-compose.yml
Now paste this config file:
version: "3" services: portainer_edge_agent: image: portainer/agent command: -H unix:///var/run/docker.sock restart: always volumes: - /:/host - /var/lib/docker/volumes:/var/lib/docker/volumes - /var/run/docker.sock:/var/run/docker.sock - portainer_agent_data:/data environment: - CAP_HOST_MANAGEMENT=1 - EDGE=1 - EDGE_ID=[YOUR EDGE ID] - EDGE_KEY=[YOUR EDGE KEY] volumes: portainer_agent_data:
Don’t forget to fill in [YOUR EDGE ID]
and [YOUR EDGE KEY]
. You can find those by creating a new endpoint in your Portainer instance.
Now we can create the systemd service that will automatically start the Edge Agent:
sudo nano /etc/systemd/system/PortainerEdgeAgent.service
[Unit] Description=PortainerEdgeAgent Requires=docker.service After=docker.service [Service] Restart=always User=root Group=docker WorkingDirectory=/var/lib/portainer-edge-agent # Shutdown container (if running) when unit is stopped ExecStartPre=/usr/local/bin/docker-compose -f docker-compose.yml down # Start container when unit is started ExecStart=/usr/local/bin/docker-compose -f docker-compose.yml up # Stop container when unit is stopped ExecStop=/usr/local/bin/docker-compose -f docker-compose.yml down [Install] WantedBy=multi-user.target
Now we can can enable and start the agent:
sudo systemctl enable PortainerEdgeAgent.service sudo systemctl start PortainerEdgeAgent.service