登录

自用的升级 cloudflared 的脚本(二进制 + docker/debian/alpine)

582
  • 楼主 编辑于

    直接贴图省事;希望有用。今天要搞的太多了🙃

    image.webp
    image.webp

    项目:

    https://github.com/offzen/cf-upgrade/tree/main

    运行:也可以先加‘--dry-run’;

    URL=https://raw.githubusercontent.com/offzen/cf-upgrade/main/cloudflared-upgrade.sh; F=/tmp/cfu.sh; \
    if command -v curl >/dev/null 2>&1; then curl -fsSL "$URL" -o "$F"; \
    elif command -v wget >/dev/null 2>&1; then wget -qO "$F" "$URL"; \
    else echo "需要 curl 或 wget:apt-get install -y curl  或  apk add curl" >&2; exit 1; fi; \
    sh "$F"
    
    收藏支持反对打赏

2 条回复

  • 编辑于
    #1

    看看 官方文档?


    description: Update cloudflared in Zero Trust networking.
    title: Update cloudflared

    Update cloudflared

    Last updated Aug 25, 2026

    Updates will cause cloudflared to restart which will impact traffic currently being served. You can perform zero-downtime upgrades by using Cloudflare's Load Balancer product or by using multiple cloudflared instances.

    Update the cloudflared service

    Refer to the following commands to update cloudflared for a remotely-managed tunnel or a locally-managed tunnel. Locally-managed tunnels must be set up to run as a service for the following commands to execute successfully.

    Run the following command:

    cloudflared update
    

    After running cloudflared update to update cloudflared, you must restart the service for it to take effect. Run:

    net start cloudflared
    
    1. Update the cloudflared package:
    brew upgrade cloudflared
    
    1. Restart the service:
    sudo launchctl stop com.cloudflare.cloudflared
    sudo launchctl unload /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
    sudo launchctl load /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
    sudo launchctl start com.cloudflare.cloudflared
    

    If installed via apt:

    1. Update the cloudflared package:
    sudo apt-get update && sudo apt-get install --only-upgrade cloudflared
    
    1. Restart the service:
    sudo systemctl restart cloudflared.service
    

    If installed via dpkg -i:

    Use the following commands if you installed cloudflared using the dpkg package manager.

    You can check if cloudflared was installed by a package manager by running ls -la /usr/local/etc/cloudflared/ and looking for .installedFromPackageManager in the output.

    1. Update the cloudflared package:
    curl --location --output cloudflared.deb "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-$(dpkg --print-architecture).deb" && sudo dpkg -i cloudflared.deb
    
    1. Restart the service:
    sudo systemctl restart cloudflared.service
    
    1. Update the cloudflared package:
    sudo yum update cloudflared
    
    1. Restart the service:
    sudo systemctl restart cloudflared.service
    

    If you created a remotely-managed tunnel using the dashboard:

    1. In the Cloudflare dashboard, go to Networking > Tunnels. Go to Tunnels ↗
    2. Select your tunnel to open its detail page.
    3. On the Overview tab, copy the Docker installation command. The copied command will contain your token.
    4. Paste this command into a terminal window.

    This command creates a new container from the latest cloudflared image. You can now delete the old container.

    Caution

    Cloudflare recommends creating remotely-managed tunnels when working with Docker.

    If you created a remotely or locally-managed tunnel using the API, run the following command:

    docker run --pull always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TOKEN>
    

    If you created a locally-managed tunnel using the CLI:

    1. Mount your local .cloudflared directory into the Docker container using a volume.

    2. Run the following command to update cloudflared:

      docker run --pull always -v <PATH-TO-YOUR-LOCAL-CLOUDFLARED>:/home/nonroot/.cloudflared cloudflare/cloudflared:latest tunnel --no-autoupdate run <TUNNEL-ID>
      

    If you installed cloudflared from GitHub-provided binaries or from source, run the following command:

    cloudflared update
    

    If you installed cloudflared with a package manager, you must update it using the same package manager.

    You can check if cloudflared was installed by a package manager by running ls -la /usr/local/etc/cloudflared/ and looking for .installedFromPackageManager in the output.

    Update with Cloudflare Load Balancer

    You can update cloudflared without downtime by using Cloudflare's Load Balancer product with your Cloudflare Tunnel deployment.

    1. Install a new instance of cloudflared and create a new Tunnel.
    2. Configure the instance to point traffic to the same locally-available service as your current, active instance of cloudflared.
    3. Add the address of the new instance of cloudflared into your Load Balancer pool as priority 2.
    4. Swap the priority such that the new instance is now priority 1 and monitor to confirm traffic is being served.
    5. Once confirmed, you can remove the older version from the Load Balancer pool.

    Update with multiple cloudflared instances

    If you are not using Cloudflare's Load Balancer, you can use multiple instances of cloudflared to update without the risk of downtime.

    1. Install a new instance of cloudflared and create a new Tunnel.
    2. Configure the instance to point traffic to the same locally-available service as your current, active instance of cloudflared.
    3. In the Cloudflare DNS dashboard, replace the address of the current instance of cloudflared with the address of the new instance. Save the record.
    4. Remove the now-inactive instance of cloudflared.

    Traffic handling

    When the old replica is stopped, it will drop long-lived HTTP requests (for example, WebSocket) and TCP connections (for example, SSH). UDP flows will also be dropped, as they are modeled based on timeouts. When the new replica connects, it will handle all new traffic, including new HTTP requests, TCP connections, and UDP flows.

    Run multiple instances in Windows

    Windows systems require services to have a unique name and display name. You can run multiple instances of cloudflared by creating cloudflared services with unique names.

    1. Install and configure cloudflared.
    2. Next, create a service with a unique name and point to the cloudflared executable and configuration file.
    sc.exe create <unique-name> binPath='<path-to-exe>' --config '<path-to-config>' displayname="Unique Name"
    
    1. Proceed to create additional services with unique names.
    2. You can now start each unique service.
    sc.exe start <unique-name>
    
    楼主:

    看了;以后我准备设为自动更新。 这个脚本是为了自己省事,有多个小鸡要手动去升级,想偷懒。

    #2
    共 1 条回复

发表回复