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
浙公网安备 33010602011771号