37 使用nextcloud搭建私有云服务 - xiaoxin01/Blog GitHub Wiki

文本介绍如何使用nextcloud搭建私有云服务

使用docker-compose启动

配置文件如下:

version: '3'

services:
  db:
    image: mariadb
    restart: always
    volumes:
      - /data/project/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      # 持久化存储数据
      - /data/project/nextcloud/html:/var/www/html
      # 配置文件
      # - ./appconfig/config.php:/var/www/html/config/config.php
    restart: always

此时已经可以通过 ip:8080来访问 nextcloud 了。

如果需要自定义host,则需要更改 config.php 文件的trusted_domains字段:

  'trusted_domains' => array (
    0 => 'xxx.xxx.xxx.xxx:8080',
    1 => 'example.com',
  ),

另外也可以通过NGINX来做Web Proxy:

  web:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    links:
      - app
    volumes:
      - /data/project/nginx/log:/var/log/nginx
      - ./conf.d:/etc/nginx/conf.d

在conf.d下面添加配置文件:

server {
    listen       80;
    server_name  host;

    #charset koi8-r;
    access_log  /var/log/nginx/access.host.log  main;

    location / {
        proxy_pass http://app;
        # 必须,否则Nextcloud无法获取真实的host而阻止访问
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}