Кто может помочь проанализировать, почему после добавления реального IP Cloudflare сборка не работает

В приложении находится журнал установки
Attached is the installation log

В файл app.yml добавлено - “templates/cloudflare.template.yml”
log.txt (167.9 KB)

[root@iZj ~]# docker info
Client: Docker Engine - Community
 Version:    26.0.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.13.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.26.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 5
  Running: 0
  Paused: 0
  Stopped: 5
 Images: 5
 Server Version: 26.0.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: false
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e377cd56a71523140ca6ae87e30244719194a521
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 5.10.134-16.3.al8.x86_64
 Operating System: Alibaba Cloud Linux 3 (Soaring Falcon)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.499GiB
 Name: iZj6cdtkubp4jn6i3drnbzZ
 ID: 7196760b-fdec-4e69-8758-9186040c032c
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
[root@iZj ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3583         224        2582           2         776        3124
Swap:             0           0           0
[root@iZj~]# df -h
Файловая система        Размер  Использовано  Доступно  Использовано%  Монтировано на
devtmpfs                1.8G          0        1.8G             0%   /dev
tmpfs                   1.8G          0        1.8G             0%   /dev/shm
tmpfs                   1.8G        540K       1.8G             1%   /run
tmpfs                   1.8G          0        1.8G             0%   /sys/fs/cgroup
/dev/vda3                79G         19G         57G            25%   /
tmpfs                   1.8G          0        1.8G             0%   /tmp
/dev/vda2               200M        5.8M       195M             3%   /boot/efi
tmpfs                   359M          0        359M             0%   /run/user/0

VPS имеет 2 ядра и 4 ГБ оперативной памяти.
Я не могу пересобрать её, так как она подключена к Cloudflare, и я пытаюсь показать реальный IP-адрес.
Добавил: “templates/cloudflare.template.yml”
Не могу заставить её пересобраться.

Судя по вашему логу, проблема вызвана неудачным выполнением шага /tmp/add-cloudflare-ips, но в скрипте не удалось определить конкретную команду, которая привела к ошибке.

Pups::ExecError: /tmp/add-cloudflare-ips failed with return #<Process::Status: pid 4229 exit 8>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params "/tmp/add-cloudflare-ips"
bootstrap failed with exit code 8

Удалите строку, связанную с Cloudflare, из файла app.yml, затем после пересборки войдите в контейнер и вручную выполните команды из templates/cloudflare.template.yml шаг за шагом. После этого выполните nginx -s reload. По моему опыту, ошибка может быть вызвана проблемами с сетью, из-за которых не удалось выполнить wget.

run:
  - file:
      path: /tmp/add-cloudflare-ips
      chmod: +x
      contents: |
        #!/bin/bash -e
        # Download list of CloudFlare ips
        wget -q https://www.cloudflare.com/ips-v4/ -O - > /tmp/cloudflare-ips
        echo >> /tmp/cloudflare-ips
        wget -q https://www.cloudflare.com/ips-v6/ -O - >> /tmp/cloudflare-ips
        # Make into nginx commands and escape for inclusion into sed append command
        CONTENTS=$(</tmp/cloudflare-ips sed '/^$/d; s/^.*/set_real_ip_from &;/' | tr '\n' '\\' | sed 's/\\/\\n/g')
        
        echo CloudFlare IPs:
        echo $(echo | sed "/^/a $CONTENTS")
        # Insert into discourse.conf
        sed -i "/sendfile on;/a $CONTENTS\n" /etc/nginx/conf.d/discourse.conf
        #sed -i "/sendfile on;/a $CONTENTS\nreal_ip_header CF-Connecting-IP;" /etc/nginx/conf.d/discourse.conf
        # Clean up
        rm /tmp/cloudflare-ips

  - exec: "/tmp/add-cloudflare-ips"
  - exec: "rm /tmp/add-cloudflare-ips"

Обязательно ли наличие swap-раздела на VPS? У моего VPS небольшой объем оперативной памяти, и по умолчанию swap не настроен.

Причина вашей неудачи не связана с памятью или swap-памятью.

Кроме того, другие пользователи уже сталкивались с вашей проблемой, поэтому перед тем как спрашивать, сначала поищите информацию. В разделе «Связанные темы» вам уже были предложены умные рекомендации, например: Failed to bootstrap (/tmp/add-cloudflare-ips)