docker-composeを使ってNextcloudの個人雲盤を構築し、https教程を開く.


はじめに
以前はLANMPを使って直接サービスを構築していましたが、後でdockerを使ってデータの構築と移転がとても便利になりましたので、サービスを全部容器化しました.docker-composeを使用してNextcloudを構築し、Ngixの逆エージェントを使用してhttpsを開く方法を紹介します.
直接構築した文章は私のこのブログを参考にしてもいいです.Centos 7.6 Nextcloud 17.0.0個人の雲盤詳細教程を構築します.
二、環境準備
基礎環境の構築はここでは詳しく説明しないで、デフォルトの環境はすでにインストールされていますか?または下記のサービスとファイルを持っています.
  • NFGIXサーバ
  • docker
  • docker-compse
  • ドメイン名証明書(Ngix適用)
  • dockerのインストールは私のこのブログを参考にしてもいいです.UbuntuはDockerを使って環境保全教程をコンパイルします.
    三、docker-composeの配置
    (一)docker-compose.yml注意点:
  • データベースは、現在./dbフォルダ
  • にマウントされています.
  • Nextcloudアプリケーションは、現在./appフォルダ
  • にマウントされています.
  • ホスト・ポータブルは、19080ポートを使用しており、自分で修正することができます.このポート
  • に逆エージェントが必要です.
  • ./init_secretsフォルダの各ファイルはユーザ名、パスワードなどのパラメータを初期化しています.自分で設定して
  • を作成する必要があります.
    version: '3.2'
    
    services:
      db:
        image: postgres:12
        container_name: nextcloud_db
        restart: always
        volumes:
          - ./db:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB_FILE=/run/secrets/postgres_db
          - POSTGRES_USER_FILE=/run/secrets/postgres_user
          - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
        secrets:
          - postgres_db
          - postgres_password
          - postgres_user
    
      app:
        image: nextcloud
        container_name: nextcloud
        restart: always
        ports:
          - 19080:80
        volumes:
          - ./app:/var/www/html
        environment:
          - POSTGRES_HOST=db
          - POSTGRES_DB_FILE=/run/secrets/postgres_db
          - POSTGRES_USER_FILE=/run/secrets/postgres_user
          - POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
          - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password
          - NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user
        depends_on:
          - db
        secrets:
          - nextcloud_admin_password
          - nextcloud_admin_user
          - postgres_db
          - postgres_password
          - postgres_user
    
    secrets:
      nextcloud_admin_password:
        file: ./init_secrets/nextcloud_admin_password.txt # put admin password to this file
      nextcloud_admin_user:
        file: ./init_secrets/nextcloud_admin_user.txt # put admin username to this file
      postgres_db:
        file: ./init_secrets/postgres_db.txt # put postgresql db name to this file
      postgres_password:
        file: ./init_secrets/postgres_password.txt # put postgresql password to this file
      postgres_user:
        file: ./init_secrets/postgres_user.txt # put postgresql username to this file
    
    (二)運転を開始するdocker-compose.ymlにあるフォルダで以下のコマンドを実行して起動します.
    docker-compose up -d
    
    次のコマンドを使って実行ログを確認できます.
    docker-compose logs -f
    
    Nexcloudのインストールが完了したら、ブラウザにhttp://127.0.0.1:19080を入力すればログイン画面が見えます.ユーザ名のパスワードは./init_secretsが設定したユーザ名とパスワードです.
    しかし、ドメイン名でのアクセスが一般的であり、本論文ではhttpsも起動していますので、Ngix逆エージェントを構成する必要があります.
    四、Ngix配置/etc/nginx/conf.dNextcloud.confを作成します.
    注意点:
  • server_nameをあなたのドメイン名に変えます.
  • ssl_certificatessl_certificate_keyをあなたのドメイン名証明書
  • に両替します.
  • client_max_body_size最大アップロードファイルサイズ
  • を設定します.
  • proxy_passをリンク番号
  • に変えます.
    server {
        listen 80;
        listen [::]:80;
    
        server_name yasin.store www.yasin.store;
    
        # redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
        return 301 https://yasin.store$request_uri;
    }
    
    server {
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      server_name yasin.store;
      
      ssl on;
      ssl_certificate /yasin/ssl/nginx/yasin_store/yasin.store.crt;
      ssl_certificate_key /yasin/ssl/nginx/yasin_store/yasin.store.key;
      client_max_body_size 10G;
      
      add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    
      location = /.well-known/carddav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
      }
      location = /.well-known/caldav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
      }
    
      location / {
          proxy_redirect off;
          proxy_pass http://127.0.0.1:19080;
          proxy_set_header Host $http_host;
      }
      location = /.htaccess {
          return 404;
      }
    }
    
    NFgixを再起動すると、設定が有効になります.
    systemctl restart nginx
    
    五、問題解決
    上記の手順ですべて正しいと、ブラウザにドメイン名を入力すると、自動的にhttps:// に遷移するはずです.しかし、次の最初のエラーが発生するはずです.
    (一)信頼されていないドメイン名で訪問する
    これはNextcloudのデフォルトはlocalhostを通じてしかアクセスできないので、ドメイン名を信頼する必要があります.
    次のファイルを編集します.
    vim ./app/config/config.php
    
    下の内容を修正して、二行目はあなたのドメイン名に変えてください.
    'trusted_domains' =>
      array (
        0 => 'localhost',
        1 => 'yasin.store',
      ),
    
    (二)ログイン後は自動的にジャンプしません.
    修正が完了したら、ページを更新します.ログイン画面が見えます.ユーザー名のパスワードは./init_secretsで設定したユーザ名とパスワードです.
    しかし、ページは自動的にジャンプしません.手動で更新したらアクセスできます.
    自動ジャンプをするには、以下のファイルを変更する必要があります.
    vim ./app/config/config.php
    
    下記の内容を追加します.
    'overwriteprotocol' => 'https',
    
    この時、あなたの雲盤は正常に使えますが、もし強迫症であれば、設置の中で概観を見る時、次の二つの間違いを解決したいと思います.
    もしあなたが気にしないなら、本文はここで終わります.
    (三)dav設定が正しくない
    エラーメッセージは以下の通りです.
  • あなたのウェブサーバは正しく設定されていません.詳細はドキュメントを参照してください.
  • あなたのウェブサーバは正しく設定されていません.詳細はドキュメントを参照してください.
  • 解決方法は、インテンx逆エージェントの場合、以下の構成を追加します.
    location = /.well-known/carddav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
    } 
    
    (四)データベースエラー
    エラー1:
  • データベースからインデックスが失われました.大きなデータテーブルにインデックスを追加すると時間がかかりますので、プログラムは自動的に修復されませんでした.Nextcloud運転中に、コマンドラインを介して手動で「occ db:add-missing-inds」コマンドを実行して、失われたインデックスを修復できます.インデックス修正後、対応するテーブルのクエリ速度が大幅に向上します.
  • データテーブル「ocucalendarobjects uprops」にインデックス「careendarobject ucalidudex」が見つかりません.
  • データテーブル「occhedulinggobjects」にインデックス「schedulobjupurcipuidx」が見つけられません.
  • 解決方法:
    コンテナに入る:
    docker exec -u www-data -it nextcloud bash
    
    以下のコマンドを実行します.
    /var/www/html/occ db:add-missing-indices
    
    エラー2:
  • データベースの一部の列は、長い整数変換のために欠けています.大きいデータテーブルで列の種類を変更すると時間がかかりますので、プログラムは自動的に変更されませんでした.コマンドラインを介して手動で「occ db:convert-filecache-bigint」コマンドを実行して、保留中の変更を適用できます.この動作は、インスタンス全体がオフライン状態に変化したときに実行する必要がある.関連文書を参照して詳細を取得します.
  • mounts.storge_id
  • mounts.root_id
  • mounts.mount_id
  • 解決方法:
    コンテナに入る:
    docker exec -u www-data -it nextcloud bash
    
    以下のコマンドを実行します.
    /var/www/html/occ db:convert-filecache-bigint
    
    yを選択して、車に戻ります.
    この時にホームページを更新すると、すべてのエラーと警告が解決されたことが分かります.
    六、Nextcloudをアップグレードする
    ヒントが新しいバージョンでアップグレードできます.次のコマンドでアップグレードできます.
    docker-compose down
    docker-compose pull
    docker-compose up -d
    
    アップグレードする前にデータをバックアップしておくことを強く推奨します.
    终わります
    直接構築すると、dockerを使うと簡単に多くなり、データの移動に便利です.
    マシンの配置を変更したい場合は、現在のフォルダ内のすべてのファイルをパッケージ化し、新しいマシンにNgix逆エージェントを配置すればいいです.
    オフィシャルミラーのドキュメントを参考にして、Ngixもコンテナ展開が可能になりましたので、ここでは詳しく紹介しません.
    Enjoy it now.