Install Portainer on Ubuntu 22.04 with Docker - HostnExtra
Tags: portainer, ubuntu, tutorial, hostnextra
Published: 2022-09-27 11:54:23

In this article, we'll explain how to install Portainer on Ubuntu 22.04 with Docker.

Portainer is powerful, open-source toolset that allows you to easily build and manage containers in Docker, Swarm, Kubernetes and Azure ACI. It works by hiding the complexity that makes managing containers hard, behind an easy to use GUI.

#### Prerequisites

Ubuntu 22.04 installed dedicated server or KVM VPS.
A root user access or normal user with administrative privileges.
Add A record of your preferred domain like port.example.com

#### [Install Portainer on Ubuntu 22.04 with Docker](https://www.hostnextra.com/kb/how-to-install-portainer-on-ubuntu/)

#### 1. Keep server updated

Always keep your server up-to-date for security purpose.

`# sudo apt-get update -y`

#### 2. Install Docker

Install the required dependencies for Docker:

`# sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y`

Next, run the commands below to download and install Docker’s official GPG key. The key is used to validate packages installed from Docker’s repository making sure they’re trusted.

`# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88`

Add the Docker Repository

`# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"`

The following command will download Docker and install it:

`# sudo apt-get update -y`

`# sudo apt-get install docker-ce -y`

#### 3. Create a container

We'll show you two ways to deploy the container.

1. If you want to use domain name to access Portainer, use following command to deploy the container:

`# sudo docker run --restart always -d --name=portainer -v /var/run/docker.sock:/var/run/docker.sock -v /vol/portainer/data:/data -e VIRTUAL_HOST=port.example.com -e VIRTUAL_PORT=9000 portainer/portainer-ce -H unix:///var/run/docker.sock`

Note:

-v /var/run/docker.sock:/var/run/docker.sock means mounting /var/run/docker.sock to the container so portainer can control the Docker.
-v /vol/portainer/data:/data means storing data of portainer on directory /vol/portainer/data.
port.example.com is your domain to access the portainer.

#### 2. If you want to access Portainer using server IP, use following command to deploy the container:

`# sudo docker volume create portainer_data`

`# sudo docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce`

#### 4. Configure Reverse Proxy for Portainer (Optional if you will use domain name)

Caddyfile is a reverse proxy server. It is necessary to secure the connection to prevent network hijacking. Caddyfile can obtains and automatically maintains SSL certificate.

Create a Caddyfile. Caddyfile is a document containing configs for your sites:

`# sudo mkdir -p /vol/caddy/configs
# sudo vim /vol/caddy/configs/Caddyfile`

Add following content:

```
port.example.com {
tls youremail@example.com
reverse_proxy portainer:8000
}
```

Replace: port.example.com with your domain name and youremail@example.com with your actual email id.

Save and exit.

Finally, create a Caddy container using following command:

`# sudo docker run --restart always -d -p 80:80 -p 443:443 -v "/vol/caddy/data:/data/caddy" -v "/vol/caddy/configs:/etc/caddy" --link portainer --name caddy caddy`

Note:

-p 80:80 -p 443:443 means publish its 80 and 443 port to your host so you can access it with those ports.
-v "/vol/caddy/data:/data/caddy" means mount caddy working directory to your host to persist data such as certificates.
-v "/vol/caddy/configs:/etc/caddy" means mount caddy configuration directory to your host to persist configurations.
--link portainer means link container caddy with portainer so they can access with each other.
5. Access Portainer

Navigate to your browser and access the Portainer by using either your domain or server IP and set admin password and finish the installment.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gmcvvxhvsjviczvre6mx.png)

That's it. The installation has been completed successfully.

In this article, we've have seen how to install Portainer on Ubuntu 22.04 with Docker.