Nextcloud aio 非标准端口 非443端口安装
第一步:创建并编辑compose.yml
创建一个【compose.yml】文件在当前目录。下面的test.com要改成自己的域名。这里我是映射到了38001端口,有需要可以自己改。
services:nextcloud-aio-mastercontainer:image: ghcr.io/nextcloud-releases/all-in-one:latestinit: truerestart: alwayscontainer_name: nextcloud-aio-mastercontainer # 不可以改volumes:- nextcloud_aio_mastercontainer:/mnt/docker-aio-config- /var/run/docker.sock:/var/run/docker.sock:ronetworks:- nextcloud-aioports:- "0.0.0.0:8080:8080"- "[::]:8080:8080"environment:APACHE_PORT: 11000APACHE_IP_BINDING: "0.0.0.0"SKIP_DOMAIN_VALIDATION: trueNEXTCLOUD_MEMORY_LIMIT: 4096MNEXTCLOUD_UPLOAD_MAX_FILESIZE: 25GNEXTCLOUD_POST_MAX_SIZE: 25GNEXTCLOUD_MOUNT: /mnt/storage # 改成你自己的外部存储APACHE_MEMORY_LIMIT: 4096MNC_DOMAIN: test.com:38001 # 改成你自己的域名OVERWRITEHOS: test.com:38001# 改成你自己的域名OVERWRITEPROTOCOL: httpscaiddy:build:context: .dockerfile: Caddy.Dockerfilerestart: unless-stoppedvolumes:- type: bindsource: ./Caddyfiletarget: /etc/caddy/Caddyfile- type: bindsource: ./fullchain.cer #挂载你自己的证书和keytarget: /certs/fullchain.cer #挂载你自己的证书和key- type: bindsource: ./test.com.key #挂载你自己的证书和keytarget: /certs/test.com.key #挂载你自己的证书和key- type: volumesource: caddy_datatarget: /data- type: volumesource: caddy_configtarget: /confignetworks:- nextcloud-aioports:- "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-aiodriver: bridgeenable_ipv6: falsedriver_opts:com.docker.network.driver.mtu: "1280" # Can be set to 9001 for jumbo framescom.docker.network.bridge.host_binding_ipv4: "127.0.0.1" # Security hardeningcom.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.keyreverse_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@87e3e5e2c7f986b34c0df373a5799670d7b8ca03FROM 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