🐳 Install Portainer + Watchtower — Docker Made Simple

In this guide, we’ll set up Docker, Portainer, and Watchtower on Arch, Debian, and Fedora. These tools make managing containers easy and ensure your images stay updated automatically. 🚀


1️⃣ Arch / CachyOS

Install Docker, enable the service, and add your user to the Docker group:

sudo pacman -Syu --needed docker docker-compose
sudo systemctl enable --now docker.service
getent group docker || sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

docker --version
docker compose version
  

Deploy Watchtower

sudo mkdir -p ~/docker/containers/watchtower
sudo chown -R $(whoami):$(whoami) ~/docker/containers/watchtower

sudo docker run -d \
  --name watchtower \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/watchtower:/config \
  --restart unless-stopped \
  containrrr/watchtower
  

Deploy Portainer

sudo mkdir -p ~/docker/containers/portainer
sudo chown -R $(whoami):$(whoami) ~/docker/containers/portainer

sudo docker run -d \
  --name portainer \
  --privileged \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/portainer:/data \
  --restart unless-stopped \
  portainer/portainer-ce

# Access Portainer:
# https://127.1.1.1:9443 (or your-server-ip:9443)
  

2️⃣ Debian / Ubuntu

Use apt to install Docker and Compose:

sudo apt update
sudo apt -y install docker.io docker-compose-plugin
sudo systemctl enable --now docker
getent group docker || sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

docker --version
docker compose version
  

Watchtower

sudo mkdir -p ~/docker/containers/watchtower
sudo chown -R $(whoami):$(whoami) ~/docker/containers/watchtower

sudo docker run -d \
  --name watchtower \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/watchtower:/config \
  --restart unless-stopped \
  containrrr/watchtower
  

Portainer

sudo mkdir -p ~/docker/containers/portainer
sudo chown -R $(whoami):$(whoami) ~/docker/containers/portainer

sudo docker run -d \
  --name portainer \
  --privileged \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/portainer:/data \
  --restart unless-stopped \
  portainer/portainer-ce
  

3️⃣ Fedora

Install Docker via dnf (Moby Engine):

sudo dnf install -y moby-engine docker-compose-plugin
sudo systemctl enable --now docker
getent group docker || sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

docker --version
docker compose version
  

Watchtower

sudo mkdir -p ~/docker/containers/watchtower
sudo chown -R $(whoami):$(whoami) ~/docker/containers/watchtower

sudo docker run -d \
  --name watchtower \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/watchtower:/config \
  --restart unless-stopped \
  containrrr/watchtower
  

Portainer

sudo mkdir -p ~/docker/containers/portainer
sudo chown -R $(whoami):$(whoami) ~/docker/containers/portainer

sudo docker run -d \
  --name portainer \
  --privileged \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/docker/containers/portainer:/data \
  --restart unless-stopped \
  portainer/portainer-ce
  

✅ You’re Done!

🎉 Portainer is live at https://127.0.0.1:9443 (or your server’s IP). Watchtower will now auto-update your containers daily. Manage your Docker setup through Portainer’s clean UI, deploy new apps, and keep your homelab running smoothly!