艰难的Nextcloud AIO安装过程

连祈
2024-11-04 / 0 评论 / 8 阅读 / 正在检测是否收录...

遇到的两大难题

  1. 反向代理
  2. Nextcloud配置
  3. Docker被墙
反向代理

买了个无限流量的服务器,然后使用autossh端口映射的方式映射到本地。
操作步骤及遇到的问题:

  1. 设置ssh密钥
  2. 本地主机安装LNMP
  3. 建立ssh端口映射
    出现问题:ssh端口映射后本地主机和服务器访问127.0.0.1可以显示nginx欢迎界面,访问服务器IP和域名都不可以。
    首先判断是防火墙的问题,检查wsl防火墙并关闭win防火墙故障依旧。于是通过在服务器上也安装Nginx做反向代理的方式解决。
  4. 设置SSL证书,使用DNS验证方式,同一个域名可以在不同机器上申请证书。
  5. 连接Nextcloud
Nextcloud配置
  1. 查找Nextcloud文档把参数搞明白
  2. 按照文档上通过反向代理的启动参数结合个人需求修改
  3. 把文档上Nginx配置应用到本地主机上
  4. 首先安装AIO,这时遇到了Docker被墙的问题
  5. nginx连接到AIO需要使用http而不是https因为AIO没有配置证书
  6. AIO内初次启动容器会失败,关闭后重新启动即可。
Docker被墙

核心:由于AIO会自行拉取Docker,所以常规方法行不通。
尝试了四种方法:

  1. 在win开启v2ray对wsl终端进行代理,可以进入AIO,但是AIO拉取其他容器失败
  2. 在win开启Proxifier,同上。
  3. 使用docker镜像站,同上
  4. 在AIO docker中加入代理参数,成功

以下附上部分配置

sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
--env APACHE_PORT=100 \
--env APACHE_IP_BINDING=0.0.0.0 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--env NEXTCLOUD_DATADIR="/mnt/d/AIO" \
--env http_proxy="http://ip:port" \
--env https_proxy="http://ip:port" \
--env NEXTCLOUD_UPLOAD_LIMIT=100G \
--env NEXTCLOUD_MAX_TIME=360000 \
--env NEXTCLOUD_MEMORY_LIMIT=1024M \
--env SKIP_DOMAIN_VALIDATION=true \
nextcloud/all-in-one:latest
Dockerd 代理

在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。
代码语言:javascript
复制

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:
代码语言:javascript
复制

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,proxy.example.com:8080 要换成可用的免密代理。通常使用 cntlm 在本机自建免密代理,去对接公司的代理。可参考《Linux下安装配置Cntlm 代理》。
0

评论 (0)

取消