注:本文是只在本机建立portainer,并不涉及portrainer agent。
换句话说,它只能自己管自己。

考虑到之前没有用compose,本文也用docker run先。

debian12,oneinstack
docker安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

尝试先通过官方一键安装,先创建数据库。
docker volume create portainer-data

用官方的数据造一下。

docker run -d -p 8000:8000 -p 9443:9443 \
   --name portainer \
   --restart=always \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v portainer-data:/data \
   portainer/portainer-ce:latest

来用https来访问一下IP+端口。OK没问题,让他走吧。
docker stop portainer
docker rm portainer

按照termix的想法,就+1,本地端口用8008,IP用 172.18.1.2,反正内网不缺,就加/24就行了。
再来创建个docker网络。
docker network create --subnet=172.18.1.0/24 portainer-network
如果创建错了可以删掉
docker network rm portainer-network
看一眼创建好没有。
docker network ls
也可以用这个来看详细的数据
docker network inspect portainer-network
还有个问题,就是termix的数据端口是8081-8085。
但是我们也要考虑到之后agent的管理端口,我希望管理agent的数据端口要用8086。不过很可惜的是你并不能更改容器内部的通信端口到匹配8086,因为portainer ce没有提供这个环境变量。你可以用iptables转发等方式来实现,不过太麻烦了,等之后遇到问题再说。

好了,让我们更改一下官方的docker数据吧。

docker run -d -p 8086:8000 -p 8008:9443 \
   --name portainer \
   --restart=always \
   --network portainer-network \
   --ip 172.18.1.2 \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v portainer-data:/data \
   portainer/portainer-ce:latest

看起来这个数据没问题。让我们通过IP+端口8008尝试注册admin,看起来是ok的,那就证明数据库也ok。
接下来进入反代,进/usr/local/nginx/conf/vhost来找到相关配置。

要做的比termix少的多。
注释掉这些东西

#  root /data/wwwroot/docker.wingsrabbit.com;

#  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
#    expires 30d;
#    access_log off;
#  }
#  location ~ .*\.(js|css)?$ {
#  expires 7d;
#   access_log off;
#  }

在localtion well know之后加这一段。

#Nginx-443-Start
  location / {
      proxy_pass https://127.0.0.1:8008;
      proxy_ssl_verify off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
  }

好了,搞定。

最后修改:2025 年 10 月 19 日
如果觉得我的文章对你有用,请随意赞赏