Nextcloud aio 非标准端口 非443端口安装

Nextcloud aio 非标准端口 非443端口安装

第一步:创建并编辑compose.yml

创建一个【compose.yml】文件在当前目录。下面的test.com要改成自己的域名。这里我是映射到了38001端口,有需要可以自己改。

services:
  nextcloud-aio-mastercontainer:
    image: ghcr.io/nextcloud-releases/all-in-one:latest
    init: true
    restart: always
    container_name: nextcloud-aio-mastercontainer # 不可以改
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - nextcloud-aio
    ports:
      - "0.0.0.0:8080:8080"
      - "[::]:8080:8080"
    environment:
      APACHE_PORT: 11000
      APACHE_IP_BINDING: "0.0.0.0"
      SKIP_DOMAIN_VALIDATION: true
      NEXTCLOUD_MEMORY_LIMIT: 4096M
      NEXTCLOUD_UPLOAD_MAX_FILESIZE: 25G
      NEXTCLOUD_POST_MAX_SIZE: 25G
      NEXTCLOUD_MOUNT: /mnt/storage # 改成你自己的外部存储
      APACHE_MEMORY_LIMIT: 4096M
      NC_DOMAIN: test.com:38001 # 改成你自己的域名
      OVERWRITEHOS: test.com:38001# 改成你自己的域名
      OVERWRITEPROTOCOL: https

  caiddy:
    build:
      context: .
      dockerfile: Caddy.Dockerfile
    restart: unless-stopped
    volumes:
      - type: bind
        source: ./Caddyfile
        target: /etc/caddy/Caddyfile
      - type: bind
        source: ./fullchain.cer #挂载你自己的证书和key
        target: /certs/fullchain.cer #挂载你自己的证书和key
      - type: bind
        source: ./test.com.key #挂载你自己的证书和key
        target: /certs/test.com.key #挂载你自己的证书和key
      - type: volume
        source: caddy_data
        target: /data
      - type: volume
        source: caddy_config
        target: /config
    networks:
      - nextcloud-aio
    ports:
      - "0.0.0.0:38000:38000"
      - "[::]:38000:38000"
      - "0.0.0.0:38001:38001"
      - "[::]:38001:38001"
volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer # 不可以改
  caddy_certs:
  caddy_config:
  caddy_data: 
networks:
  nextcloud-aio:
    name: nextcloud-aio
    driver: bridge
    enable_ipv6: false
    driver_opts:
      com.docker.network.driver.mtu: "1280" # Can be set to 9001 for jumbo frames
      com.docker.network.bridge.host_binding_ipv4: "127.0.0.1" # Security hardening
      com.docker.network.bridge.enable_icc: "true"
      com.docker.network.bridge.default_bridge: "false"
      com.docker.network.bridge.enable_ip_masquerade: "true"

第二步:创建并编辑Caddyfile

创建一个【Caddyfile】文件在当前目录。下面的test.com要改成自己的域名。

{
    layer4 {
        127.0.0.1:3478 {
            route {
                proxy {
                    upstream nextcloud-aio-talk:3478
                }
            }
        }
        127.0.0.1:3479 {
            route {
                proxy {
                    upstream nextcloud-aio-talk:3479
                }
            }
        }
    }
}

https://test.com:38001 {
    tls /certs/fullchain.cer /certs/test.com.key
    reverse_proxy nextcloud-aio-apache:11000 {
        header_up X-Forwarded-Proto "https"
        header_up Host {host}
    }
}

http://test.com:38000 {
    reverse_proxy nextcloud-aio-apache:11000 {
        header_up X-Forwarded-Proto "http"
        header_up Host {host}
    }
}

第三步:创建并编辑Caddy.Dockerfile

创建一个【caddy.Dockerfile】文件在当前目录

FROM caddy:2.9.1-builder-alpine AS builder
RUN xcaddy build --with github.com/mholt/caddy-l4@87e3e5e2c7f986b34c0df373a5799670d7b8ca03

FROM caddy:2.9.1-alpine
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

第四步:运行

1、运行docker compose

docker compose up -d

2、访问8080端口,https://192.168.0.2:8080/完成初始化,初始化的时候会要求填域名,域名一定要填带端口的,比如test.com:38001,否则只能重装。

常见问题解决方案

问题1:没有外网域名怎么办?

答:上https://dynv6.com/免费申请一个,非常快。

问题2:没有证书怎么办?

答:申请一个证书。拿到dynv6域名之后,登录dynv6的页面,拿到token,再回到服务器输入以下命令:

curl https://get.acme.sh | sh -s email=你的email@email.com
export DYNV6_TOKEN="你的Token"
acme.sh --issue --dns dns_dynv6 -d 你的域名.dynv6.net

问题3:初始化下载页面非常慢,怎么办

答:因为镜像都在国外,所以下载非常慢,自己挂个代理即可。

问题4:没有公网IPV4地址怎么办?

答:现在的运营商一般都会有IPv6地址,申请到域名之后再在服务器上面配置DDNS动态解析即可。如果需要IPv4访问则试下花生壳或者FRP。

参考

[1] [知乎]: https://zhuanlan.zhihu.com/p/2027174873110253955

[2] [github]:
https://github.com/nextcloud/all-in-one/discussions/5439

posted @ 2026-08-16 20:38  Désiré  阅读(5)  评论(0)    收藏  举报