nextcloud缺少插件和权限不足问题解决

221021
vscode的ssh插件连接主机后会占用很大内存,使内存占用从0.69G升到1.28G。

nextcloud问题


-   This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them.
`-   intl`
-   The PHP module "imagick" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module.

上述两个问题安装intl和imagick并启用即可。
在php的dockerfile中安装

“`

libmagickwand-dev \

    && docker-php-ext-configure intl \

    && docker-php-ext-install intl
   
&& pecl install imagick-beta \

    && echo “extension=imagick.so” <!–autointro–>

关于PHP执行用户和docker路径挂载的问题

关于PHP执行用户的问题

对于通过SFTP上传文件搭建的网站,有时会遇到权限问题。要么权限没给够,提示没有权限。一般遇到这种直接给全部权限,也就是‘777’权限可以解决。但对于安全设置严格的web程序这么操作会提示文件夹或文件可以被其他用户读取不安全,这就需要改文件夹或文件的所属用户了。
然而并不知道,用户是谁。下面是我在解决该问题时学习的一些方法。不过到目前位置还是没有理解透彻。
我在搭建nextcloud的时候就遇到了上面提到的问题,参考官方镜像搭建成功的web程序,发现很多文件夹所属用户是‘33’,但是主机系统中并没有这个用户。

php配置文件中的用户组如下,如果不存在,会使用默认用户执行。

user = www-data
group = www-data
www-data

获取nginx和php用户和组

[root@iZ8vbajg9wo8iwynfb1lgeZ data]# ps axu|grep nginx
root     1322844  0.0  0.3  37772  6232 ?        Ss   15:12   0:00 nginx: master process nginx -g daemon off;
101      1322890  0.0  0.3  38364  6740 ?        S    15:12   0:00 nginx: worker process
root     1331548  0.0  0.0  12108  1052 pts/0    S+   15:36   0:00 grep --color=auto nginx
[root@iZ8vbajg9wo8iwynfb1lgeZ data]# ps axu|grep php
root     1322682  0.0  1.4 216796 26416 ?        Ss   15:12   0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
admin    1323298  0.1  2.3 223656 44364 ?        S    15:13   0:01 php-fpm: pool www
admin    1323731  0.1  2.3 223592 43104 ?        S    15:14   0:01 php-fpm: pool www
admin    1324200  0.1  2.2 223484 42808 ?        S    15:15   0:01 php-fpm: pool www
root     1331742  0.0  0.0  12108  1076 pts/0    S+   15:36   0:00 grep --color=auto php

**

docker路径挂载问题

build成功之后的部分日志


117668470    0 drwxr-xr-x 2 root root      24 Sep 21 14:37 /tmp/pear/temp/pear-build-defaultuser6thOCT/install-mongodb-1.11.1/usr/local/lib/php/extensions/no-debug-non-zts-20210902
117668471 8396 -rwxr-xr-x 1 root root 8595192 Sep 21 14:37 /tmp/pear/temp/pear-build-defaultuser6thOCT/install-mongodb-1.11.1/usr/local/lib/php/extensions/no-debug-non-zts-20210902/mongodb.so
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20210902/mongodb.so'
install ok: channel://pecl.php.net/mongodb-1.11.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mongodb.so" to php.ini
Removing intermediate container 237ce43c5051
---<!--autointro-->

dockercompose+traefik安装wordpress

yml文件`wordpress-docker-compose.yml

version: "3.7"
services:
  wordpress:
    image: wordpress
    restart: always
    # ports:
    #   - 8080:80
    environment:
      WORDPRESS_DB_HOST: mariadb #这里的数据库用的时lnmp中的,在同一个网络
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: SQLroot77
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress.entrypoints=websecure"
      - "traefik.http.routers.wordpress.rule=Host(`wp.weiyoun.com`)"
      - "traefik.http.routers.wordpress.tls.certresolver=lets-encr"
volumes:
  wordpress:
networks:
  default:
    external:
      name: traefik

运行

docker-compose -f wordpress-docker-compose.yml up
用域名访问,提示数据库连接错误
这是因为数据库中没有创建wordpress数据库
进入数据库容器docker exec -it dc1_mariadb_1 bash 进入数据库mysql -u root -p
创建并查询数据库


MariaDB [(none)]<!--autointro-->

docker搭建nps

yml文件nps-docker-compose.yml

version: "3.7"
services:
  frps:
    image: ffdfgdfg/nps
    container_name: nps
    hostname: frps
    restart: unless-stopped
    ports:
      - "7443:8080"
    #   # - 7400:7400
    #   - 7000:7000
    #   - 8888:8888
    volumes:
      - nps:/conf
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nps.entrypoints=websecure"
      - "traefik.http.routers.nps.rule=Host(`nps.weiyoun.com`)"
      - "traefik.http.routers.nps.tls.certresolver=lets-encr"
      - traefik.http.routers.nps.service=nps #多路由必须定义不同的服务名
      - "traefik.http.services.nps.loadbalancer.server.port=8080"
      - "traefik.docker.network=proxy"
      # - "traefik.http.routers.frpshttp.entrypoints=websecure"
      # - "traefik.http.routers.frpshttp.rule=Host(`frpshttp.weiyoun.com`)"
      # - "traefik.http.routers.frpshttp.tls.certresolver=lets-encr"
      # - traefik.http.routers.frpshttp.service=frpshttp #多路由必须定义不同的服务名
      # - "traefik.http.services.frpshttp.loadbalancer.server.port=8888"
      # - "traefik.http.routers.a.entrypoints=websecure"
      # - "traefik.http.routers.a.rule=Host(`a.weiyoun.com`)"
      # - "traefik.http.routers.a.tls.certresolver=lets-encr"
      # - traefik.http.routers.a.service=a #多路由必须定义不同的服务名
      # - "traefik.http.services.a.loadbalancer.server.port=8888"
      # # - "traefik.docker.network=proxy"
networks:
  default:
    external:
      name: traefik
volumes:
  nps:

下载配置文件放入映射的文件夹下:

-   下载[conf文件夹](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/ehang-io/nps/tree/master/conf)并解压,或前往[项目主页](https://github.com/ehang-io/nps)自行下载**(升级请忽略)**
-   继续阅读[文档](https://ehang-io.github.io/nps/#/example)按照不同的启动方式启动**(升级请忽略)**

就可以用域名访问了。

wagtail使用域名访问报错

CSRF verification failed. Request aborted.

setting文件增加
**CSRF_TRUSTED_ORIGINS = ['https://wagtail.weiyoun.com/']**
就可以了

改完后记得保存,wagtail会自动重新加载,域名外的方括号是必须的。

参考下面这个很可能可以解决上面问题


> echo "from django.contrib.auth import get_user_model; get_user_model().objects.create_superuser('admin', '', 'changeme')" | python manage.py shell
<!--autointro-->

docker安装wagtail核心配置文件

docker安装wagtail核心配置文件

yml文件

version: '3.7'
services:
  wagtail:
    container_name: wagtail
    # restart: unless-stopped
    image: wagtail:selfV1
    build:
      context: .
      dockerfile: Dockerfile  
    # stdin_open: true
    # tty: true
    volumes:
      - wagtailpython:/usr/local/lib/python3.11
      - wagtailapp:/app
    # ports:
    #   - "5212:8000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wagtail.entrypoints=websecure"
      - "traefik.http.routers.wagtail.rule=Host(`wagtail.weiyoun.com`)"
      - "traefik.http.routers.wagtail.tls.certresolver=lets-encr"
      - traefik.http.routers.wagtail.service=wagtail #多路由必须定义不同的服务名
      - "traefik.http.services.wagtail.loadbalancer.server.port=8000"
networks:
  default:
    external:
      name: traefik
volumes:
  wagtailpython:
  wagtailapp:

dockerfile


FROM python:3.11-alpine3.17
LABEL maintainer="weiyoun.com"
# 为了及时输出日志
# 221205报错Watching for file changes with StatReloader
# ENV PYTHONUNBUFFERED 0
ENV PYTHONUNBUFFERED 1
# 保持运行,在docker-compose中添加也可以,放在具体服务的子集中。不添加会因为没有任务而退出容器
ENV stdin_open true
ENV tty true
# pip安装列表,里面写需要pip安装的包
ADD requirements.txt ./
# 安装,构建网站,设置超级用户
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \
    && wagtail start app \
    && cd app \
    && python manage.py migrate \
    && echo "from django.contrib.auth.models import User; User.objects.create_superuser('myadmin', 'myemail@example.com', 'wagtailadmin')" | python manage.py shell
# 运行网站不能写入RUN,否则不能成功构建镜像  
    # && python manage.py runserver 0.0.0.0:8000
EXPOSE 8000
VOLUME /app   /usr/local/lib/python3.11
# VOLUME ["/app"]
# VOLUME ["/usr/local/lib/python3.11"]
# VOLUME ["/app","/usr/local/lib/python3.11"]
# VOLUME [/usr/local/lib/python3.11]
# ADD . ./
CMD cd /app \
    && python manage.py runserver 0.0.0.0:8000
# sh: manage.py,: unknown operand
# CMD cd /app \
#     && [ "python", "manage.py", "runserver", "0.0.0.0:8000" ]
# 报错python: can't open file '//manage.py': [Errno 2] No such file or directory
# CMD [ "python", "manage.py", "runserver", "0.0.0.0:8000" ]
# 下面命令导致进入/app/app,wagtail exited with code 0
# CMD cd app \
#     && [ "python manage.py runserver 0.0.0.0:8000" ]
# 会在根目录执行,找不到命令
# CMD [ "python manage.py runserver 0.0.0.0:8000" ]
# 报错python: can't open file '//manage.py': [Errno 2] No such file or directory
# CMD python manage.py runserver 0.0.0.0:8000
# 下面的形式无法正常运行,把"manage.py runserver 0.0.0.0:8000"当成了一个参数,提示没有文件
# CMD [ "python", "manage.py runserver 0.0.0.0:8000" ]

用自己的服务器搭建nextcloud网盘方案

背景

最近换了服务器,准备再搭建一下网盘用于以后的使用。
以前用的cloudreve,功能比较简单,由于用得少,渐渐停用了。
这次尝试了nextcloud和seafile。
这次搭建网盘花费了不少时间,因为总是不太顺利。这可能和我对docker不够熟悉有关,另外网盘的搭建教程多少有点不完善。
单单是搭建LNMP环境找合适的dockerfile和yml文件就很不容易。要找到适合自己的只能一步一步学习探索。幸运的是最后终于写出了适合自己的php8.0的dockerfile文件,并且可以正常使用。该文件也已经附在文章当中。希望对你有用。
虽然nextcloud用户比较多,但自己去搭建网盘服务的毕竟是少数。所以有很多问题找不到答案。
因此我把我的搭建过程写下来,给后来的人一些参考,少走一些弯路。不过需要说明的是,本片文章是我对探索出来可用的配置做一个记录,方便今后直接使用。内容比较简单,因此不适合新手当作教程用,因为可能会遇到其他问题不知道怎么解决。这篇文章供有一定基础的人参考,作用在于提供一个核心配置和一点思路。
seafile直接使用官方的方法搭建成功了。但是再启用https的时候又坑,虽然官方说新版本已经解决,但实际上并没有。并且官方给的解决办法不起作用。
seafile整体功能还可以,不过它会创建很多数据库,还有不少服务,再加上界面我也不太喜欢,所以就没用。
nextcloud功能很丰富,界面比较喜欢,不过用了很多方法去搭建,只有一种能完全成功的运行,并且还不确定如果让我再搭建一次还能不能成功。其他的都会有部分功能不正常。已经查明的原因有:

  1. 权限设置不符合程序要求,
  2. nginx配置设置不完善。
    还有些也不知道具体原因,感觉程序日志不完善。
    下面是我安装nextcloud安装方式中的两种方案,一个是使用官方的应用镜像,一个是自己搭好LNMP环境用单文件脚本装的。
    两种方式都是用到docker-compose工具。
    第一种方案所有功能可以正常使用,但是不确定是否可以复现。
    第二种方案基本功能可以正常使用,但是有写功能不能正常加载,目前不清楚原因。

利用官方镜像安装

docker-compose使用的yml文件:

version: "3.4"
services:
  mysql:
    hostname: mysql
    restart: always
    image: mysql:5.6
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - mysql-config:/etc/mysql
      - mysql-log:/var/log/mysql
      - mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpw
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: user
      MYSQL_PASSWORD: user123
      # sort_buffer_size : 524288 #220920add no use
  cache:
    image: redis
    restart: unless-stopped
    expose:
     - "6379"
    volumes:
     - ./cache:/data
    command: redis-server --requirepass 'redis_password' # 这里的redis_password换成你要配置的redis密码
    # command指的是启动容器后代替默认启动指令来启动服务的指令
  app:
    image: nextcloud:fpm
    restart: unless-stopped
    expose:
     - "9000"
    volumes:
     - ./app/html:/var/www/html
     - ./app/data:/var/www/html/data
     - ./app/config:/var/www/html/config
     - ./app/custom_apps:/var/www/html/custom_apps
    links:
    # links将容器与当前容器链接起来,以使得当前容器可以访问目标容器expose的端口
    # 格式为 容器的原名:映射到当前容器中的名称
     - mysql:mysql
     - cache:cache
    depends_on:
    # 依赖的容器列表,只有这些容器都成功启动了,才会启动当前容器
     - mysql
     - cache
  nginx:
    hostname: nginx
    restart: always
    container_name: nginx
    image: nginx:1.17.0
    ports:
      - "80:80"
      - "443:443"
    links:
      #- "php:php"
      - app:app
    volumes:
      - nginx-config:/etc/nginx
      - nginx-log:/var/log/nginx
      - nginx-html:/usr/share/nginx/html    
      - ./app/html:/var/www/html
      - ./proxy/conf.d:/etc/nginx/conf.d:ro
      - ./proxy/ssl_certs:/etc/nginx/ssl_certs:ro
    depends_on:
     - app
volumes:
  mysql-config:
  mysql-log:
  mysql-data:
  nginx-html:
  php-config:
  nginx-config:
  nginx-log:

搭建LNMP环境后再安装Nextcloud

搭建LNMP环境使用的yml:

version: "3.4"
services:
  mysql:
    hostname: mysql
    restart: always
    image: mysql:5.6
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - /home/mysql-config:/etc/mysql
      - /home/mysql-log:/var/log/mysql
      - /home/mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpw
      MYSQL_USER: user
      MYSQL_PASSWORD: user123
  php:
    hostname: php
    restart: always
    image: php:8.0
    container_name: php
    build:
      context: ./php
      dockerfile: Dockerfile
    ports:
      - "9000:9000"
    links:
      - mysql:mysql
    volumes:
      - /home/nginx-html:/var/www/html
      - /home/php-workspace:/workspace
      - /home/php-config:/usr/local/etc
    depends_on:
        # 依赖的容器列表,只有这些容器都成功启动了,才会启动当前容器
        - mysql
        - redis      
  nginx:
    hostname: nginx
    restart: always
    container_name: nginx
    image: nginx:1.17.0
    ports:
      - "80:80"
      - "443:443"
    links:
      - "php:php"
    volumes:
      - /home/nginx-config:/etc/nginx
      - /home/nginx-log:/var/log/nginx
      - /home/nginx-html:/usr/share/nginx/html
      # - /home/nginx-config/conf.d:/etc/nginx/conf.d:ro
      # - /home/nginx-config/ssl_certs:/etc/nginx/ssl_certs:ro      
    depends_on:
     - php
  redis:
    image: redis
    restart: unless-stopped
    expose:
      - "6379"
    volumes:
      - /home/redis:/data
    command: redis-server --requirepass 'redis_password' # 这里的redis_password换成你要配置的redis密码
    # command指的是启动容器后代替默认启动指令来启动服务的指令

php的dockerfile:
此文件放入上面yml文件的同级目录的php文件夹下。


FROM php:8.0-fpm
#docker中php扩展安装方式
#1、PHP源码文件目录自带扩展 docker-php-ext-install直接安装
#2、pecl扩展 因为一些扩展不包含在PHP源码文件中,PHP 的扩展库仓库中存在。用 pecl install 安装扩展,再用 docker-php-ext-enable 命令 启用扩展
#3、其他扩展 一些既不在 PHP 源码包,也不再 PECL 扩展仓库中的扩展,可以通过下载扩展程序源码,编译安装的方式安装
#redis扩展 仓库地址 https://pecl.php.net/package/redis
ENV PHPREDIS_VERSION 5.3.4
#memcached扩展 仓库地址 https://pecl.php.net/package/memcached
ENV MEMCACHED_VERSION 3.1.5
#mongodb扩展 https://pecl.php.net/package/mongodb
ENV MONGODB_VERSION 1.11.1
# 设置时间
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' <!--autointro-->

误删docker映射文件夹

使用lsof命令查看已经被删除的dc1目录

lsof | grep dc1

报了很多如下错误
lsof: no pwd entry for UID 201
加上-w参数

[root@host dc1]# lsof -w | grep dc1
rsyslogd      958                               root  mem       REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
rsyslogd      958                               root   13r      REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
rsyslogd      958     967 in:imjour             root  mem       REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
rsyslogd      958     967 in:imjour             root   13r      REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
rsyslogd      958     973 rs:main               root  mem       REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
rsyslogd      958     973 rs:main               root   13r      REG              253,1   8388608   19328181 /var/log/journal/20200914151302543507749550121287/system@648eeedc1a184078a509085b963bf9c5-0000000000000001-0005eb62d7d08cb7.journal
bash      1513232                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1515153                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1515153 1515352 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1515153 1515353 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1518112                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1518112 1518233 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1518112 1518234 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1525311                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1525311 1525413 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
docker-co 1525311 1525415 docker-co             root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
lsof      1537283                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
grep      1537284                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)
lsof      1537285                               root  cwd       DIR              253,1         6    6274715 /var/lib/docker/volumes/dc1 (deleted)

[root@host dc1]# cd /proc/1513232/fd
[root@host fd]# ll
total 0
lrwx------ 1 root root 64 Dec  3 15:35 0 -<!--autointro-->

基于docker搭建kodcloud与“Mixed Content”问题解决

221021

布置好后直接用https访问,但一直卡在环境检查部分

按下F2才发现有很多错误
其中一个错误很关键

Mixed Content: The page at 'https://cloud.weiyoun.com/' was loaded over HTTPS, but requested an insecure stylesheet 'http://kodcloud/static/style/dist/main.css'. This request has been blocked; the content must be served over HTTPS.

很明显这是在https条件下访问了http的css资源所以被阻止了。
为了顺利安装,我把防火墙的1111端口开放然后用http访问进入正常的界面。

然后修改配置文件`config/config.php
将【大概在95行代码】:

if(!defined('HOST')){ define('HOST',rtrim(get_host(),'/').'/');} 修改为: if(!defined(‘HOST’)){ define(‘HOST’,’https://你的域名/‘);}
后https可以正常访问了。
![[Pasted image 20221021144104.png]]

整体感觉kodbox这款网盘不错,功能比较丰富,同时速度很快并且资源占用少,搭建问题也少。

搭建使用traefik

1. 创建文件夹和文件

mkdir ~/traefik
cd ~/traefik
mkdir -p data/configurations
touch docker-compose.yml
touch data/traefik.yml
touch data/acme.json
touch data/configurations/dynamic.yml
chmod 600 data/acme.json

2. 配置 docker-compose.yml

文件路径为 ~/traefik/docker-compose.yml

version: '3.7'
services:
traefik:
image: traefik:v2.4
container_name: traefik
restart: always
security_opt:
- no-new-privileges:true
ports:
- 80:80
- 443:443
volumes:
# 如果宿主机是标准 linux 系统,可以设置一下localtime
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro # 映射静态配置文件
- ./data/acme.json:/acme.json # 映射证书文件,SSL 证书申请成功后,就会存在这个文件中
- ./data/configurations:/configurations # 映射动态配置文件
networks:
- traefik
labels:
# 下面这些标签,可以帮助 traefik 正确处理该服务
- 'traefik.enable=true'
- 'traefik.docker.network=traefik' # 指定 docker network
# 指定服务入口为 websecure,websecure 会在静态配置文件traefik.yml中定义
- 'traefik.http.routers.traefik-secure.entrypoints=websecure'
# 定义访问域名,需要做 DNS 解析
- 'traefik.http.routers.traefik-secure.rule=Host(`traefik.yourdomain.com`)'
- 'traefik.http.routers.traefik-secure.middlewares=user-auth@file'
- 'traefik.http.routers.traefik-secure.service=api@internal'
networks:
traefik:
external: true

创建 docker-compose.yml 内需要的 network

docker network create traefik

3. 修改静态配置文件

文件路径为 ~/traefik/data/traefik.yml

api:
  dashboard: true
entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          to: websecure
  websecure:
    address: :443
    http:
      middlewares:
        - secureHeaders@file
        - nofloc@file
      tls:
        certResolver: lets-encr
pilot:
  dashboard: false
providers:
  docker:
    endpoint: 'unix:///var/run/docker.sock'
    exposedByDefault: false
  file:
    filename: /configurations/dynamic.yml # 动态配置文件位置
certificatesResolvers:
  lets-encr:
    acme:
      #caServer: https://acme-staging-v02.api.letsencrypt.org/directory
      storage: acme.json
      email: xxxxxx
      httpChallenge:
        entryPoint: web

4. 修改动态配置文件

文件路径为 ~/traefik/data/configurations/dynamic.yml

# Dynamic configuration
http:
middlewares:
nofloc:
headers:
customResponseHeaders:
Permissions-Policy: 'interest-cohort=()'
secureHeaders:
headers:
sslRedirect: true
forceSTSHeader: true
stsIncludeSubdomains: true
stsPreload: true
stsSeconds: 31536000
# UserName : admin
# Password : qwer1234
user-auth:
basicAuth:
# users 选项是认证用户的列表
# 使用 echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
# 来创建 user:password 键值对
users:
- 'admin:$apr1$tm53ra6x$FntXd6jcvxYM/YH0P2hcc1'
tls:
options:
default:
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
minVersion: VersionTLS12

5. 解析域名

在 docker-compose.yml 中,我们指定了使用 traefik.yourdomain.com 作为访问域名。因此,我们需要将 traefik.yourdomain.com 解析至 traefik 服务入口 IP 地址。