kouga
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # やったこと ## 環境 - さくらVPS - CPU : 2Core - RAM : 1G - SSD : 100G - OS : ubuntu20.04LTS - リージョン : 石狩 - ドメイン - DNS : Xdomain - domain : kouga.info ## 初期セットアップ - OSインストール(ubuntu20.04LTS) - SSHでログイン - (初期化しなおした場合)known-hostsの上書きをする - ルートにいって - `sudo su -` - 個人のアカウントとマキニスタアカウント作成 - `sudo adduser <username>` - sudo権限与えて - `sudo usermod -aG sudo <username>` - マキグループに追加 - `sudo usermod -aG maquinista <username>` - マキグループでの編集権限与えた - `sudo chmod 777 -R /home/maquinista/` ## dockerインストール [URL](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja) - docker公式ホームページ https://docs.docker.com/engine/install/ubuntu/ - 上のURLのInstall using the repositoryと、Install Docker Engineをやった。 - sudo usermod -aG docker maquinistaってやってdockeコマンド打つたびにsudoを付けなくても済むようになった - 一度ログアウトする必要あり ## dockerにコンテナイメージDL - [ドッカーとは](https://qiita.com/KeitaMoromizato/items/ae1a57fc62b41b942d71)←わかりやすい - [ドッカーとは2](https://qiita.com/etaroid/items/b1024c7d200a75b992fc)←これもわかりやすい - dockerにテストとして、シンプルなコンテナイメージを作成 - https://github.com/KeitaMoromizato/docker-sample-1 - ↑起動したコンテナのコマンドを叩くところの説明が間違っている。コンテナIDはdocker imagesで取得するのではなくdocker ps -a - node - mongo ## docker-composeのインストール 公式ページ https://docs.docker.jp/compose/install.html によるとdocker-composeのバージョンを https://github.com/docker/compose/releases ここから取得する ここによると1.29.1が最新だからdownload/のあとに1.29.1を指定すれば良さそう uname ``` sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose ``` を打てばよい つまり ``` sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose ``` さくら ``` # curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # chmod +x /usr/local/bin/docker-compose ``` さくらの方法でも出来た ### 確認 ``` docker-compose -v docker-compose version 1.29.1, build c34c88b2 ``` ## composeの使い方 ### イメージを作成 docker-compose.ymlがあるディレクトリで ``` sudo docker-compose build ``` - https://github.com/KeitaMoromizato/docker-sample-2 をやってみた ### コンテナの起動 ``` sudo docker-compose up -d ``` -dはバックグラウンド処理 (-dつけないとログみたいなものターミナルに出力され続けた) ### コンテナの入り方 sudo docker-compose exec -it <コンテナID> bash ↑dockerじゃね? ## crowi/crowi ``` maquinista/workspace/ $git clone https://github.com/crowi/crowi.git ``` ``` sudo docker-compose up -d ``` masterでやってみたけどエラーが出た。 それに対処しようとして実行したコマンドがつぎ ``` sudo apt install npm ``` ``` npm install ``` 参考:https://kenyo--c.com/web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3/2173/ うまくいかなかったので v1.7.2-patchブランチに移ってdocker-compose.development.ymlでコンテナを立ち上げてみた ``` $ git checkout v1.7.2-patch $ docker-compose -f docker-compose.development.yml up ``` 結果 npmのところでうまくいかなかった >npm WARN notice [SECURITY] npm has the following vulnerabilities: 4 low. Go here for more details: https://www.npmjs.com/advisories?search=npm&version=5.10.0 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info. >Step 8/9 : RUN npm install --unsafe-perm ---> Running in d5ad13de38b4 (node:8) Warning: a promise was created in a handler at /usr/local/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/tarball.js:39:25 but was not returned from it, see http://goo.gl/rRqMUw とか > npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) みたいなエラーが起きた ### npm自身のバージョンが上げられない ↑のエラーがnpmのバージョンあげろと書いてあったのでバージョンを上げたい。ユーザーがバージョンを確認すると、6.14.4と表示される。 >kouga@ik1-431-47918:~$ npm -v 6.14.4 ここで ``` npm install npm@latest -g ``` を実行しても正常に終了するがバージョンが上げられない。 次にroot権限を使って同じことをやるとバージョンが7.12.0になった。しかし、ユーザーが確認すると6.14.4のままであった。 ``` sudo npm install -g npm ``` でももちろんダメ。 #### 追記 ``` npm install --unsafe-perm ``` ↑--unsafe-permを書けばいけるらしい[ソース](https://qiita.com/niina/items/3d4238dfd3cd31fee7c7) あとでやるbakudankun/crowiではうまくいったし、もともと書いてあった。 ## bakudankun/crowiでやったらうまくいった bakudankun/crowiにあったymlファイルのサンプル ```dockerfile= version: '2' services: crowi: image: bakudankun/crowi:latest links: - mongo:db - redis:redis - elasticsearch:es ports: - 8080:3000 mongo: image: mongo redis: image: redis:alpine elasticsearch: image: elasticsearch:2 # プラグインのKuromojiが必要 entrypoint: - bash - -c - >- bin/plugin list | grep -q analysis-kuromoji || bin/plugin install analysis-kuromoji && exec /docker-entrypoint.sh $$0 $$@ command: elasticsearch ``` これどのタイミングで作るのかわからなかった。 色々やってみたけど結局このymlファイルだけあればcrowiの構築はできた。 1. maquinista/crowi_test/直下で上の内容docker-compose.ymlを作った。 1. sudo docker-compose up -dでコンテナを立ち上げた。 1. そしたら下のコンテナが動いて ``` bash CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2dff0202c8ab bakudankun/crowi:latest "/entrypoint.sh npm …" About a minute ago Up About a minute 0.0.0.0:8080->3000/tcp, :::8080->3000/tcp crowi_test_crowi_1 265d382157f9 redis:alpine "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp crowi_test_redis_1 e180feb7c7b7 mongo "docker-entrypoint.s…" About a minute ago Up About a minute 27017/tcp crowi_test_mongo_1 0abd4e3556ef elasticsearch:2 "bash -c 'bin/plugin…" About a minute ago Up About a minute 9200/tcp, 9300/tcp crowi_test_elasticsearch_1 d1ed7b621f6f crowi_crowi "bash -c 'npm instal…" 6 hours ago Created ``` 4. ブラウザから`<ドメイン>:8080`打ち込むとcrowiのセットアップにいけた 5. こんなかんじ(ここで管理者アカウント作成した) ![](https://i.imgur.com/lH55RYX.png) 6. ログインした ![](https://i.imgur.com/HCGr6d8.png) 7. いつものwikiの画面に入った 8. アプリ設定は特になにもやらなかった ![](https://i.imgur.com/8x06LDO.png) 9. 検索機能 > Build Now をやった。いったんコンテナStop `sudo docker-compose stop` してからもう一度`sudo docker-compose up -d`で起動しなおした 10. 検索機能使えなかった →adminの検索管理からBuild now押したらできた ![](https://i.imgur.com/IcVbJ96.png) ### 気づいたこと - wikiの名前がMaquiTestになってた - 変えたからでした - bakudankun/crowiはcrowi v1.6.3 - dockerfileより ## このあとやること - nginx経由してみる? - ymlの書き換え - 検索機能を使えるようにする - きれいな環境を作りなおしたい - 本家crowi/crowiのv1.7.2 ## うまくいかなかったやつのDockerfile書き換えてみる ↑(npm自身のバージョン上げれない)でnpmのインストール方法変えたら行けそう?みたいな説がわかったので、うまくいかなかったdocker-compose(crowi_v1.6.4)のDockerfileを ``` RUN npm install --unsafe-perm ``` に書き換えてdocker-composeを実行してみる。 1. すでに動いてるbakudankun/crowiを停止する ymlのあるディレクトリで、 ``` docker-compose stop ``` 2. ## crowi_testのdocker-compose.ymlファイルの書き換え maquinista/workspace/crowiに`git clone https://github.com/crowi/crowi.git` crowi/crowiのv1.7.9のコミットに移った `git checkout ff6e721646d842d5779e539d764837ee2b1e0876` このままだとブランチがDetatched branchなので`git checkout -b v1.7.9`でv1.7.9っていう新しいブランチを切った docker-compose.ymlファイルをmaquinista/workspace/crowiの下に作った ```dockerfile= version: '2' services: crowi: image: crowi/crowi:1.7.9 links: - mongo:db - redis:redis - elasticsearch:es ports: - 8080:3000 mongo: image: mongo:3.6.3 redis: image: redis:alpine elasticsearch: image: elasticsearch:2 # プラグインのKuromojiが必要 entrypoint: - bash - -c - >- bin/plugin list | grep -q analysis-kuromoji || bin/plugin install analysis-kuromoji && exec /docker-entrypoint.sh $$0 $$@ command: elasticsearch ``` sudo docker-compose up -d やったところ ```bash= CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7dfe3b13100 crowi/crowi:1.7.9 "/bin/sh -c 'npm run…" 44 seconds ago Exited (1) 41 seconds ago crowi_crowi_1 305ccf2bfe22 elasticsearch:2 "bash -c 'bin/plugin…" 45 seconds ago Up 43 seconds 9200/tcp, 9300/tcp crowi_elasticsearch_1 78b8ed26291d mongo:3.6.3 "docker-entrypoint.s…" 45 seconds ago Up 43 seconds 27017/tcp crowi_mongo_1 cc54c4277b74 redis:alpine "docker-entrypoint.s…" 45 seconds ago Up 43 seconds 6379/tcp crowi_redis_1 ``` crowi/crowiのコンテナが停止していた(docker-compose upでログが見れる) ```bash crowi_1 | npm ERR! code ELIFECYCLE crowi_1 | npm ERR! errno 1 crowi_1 | npm ERR! crowi@1.7.9 start: `node app.js` crowi_1 | npm ERR! Exit status 1 crowi_1 | npm ERR! crowi_1 | npm ERR! Failed at the crowi@1.7.9 start script. crowi_1 | npm ERR! This is probably not a problem with npm. There is likely additional logging output above. crowi_1 | crowi_1 | npm ERR! A complete log of this run can be found in: crowi_1 | npm ERR! /root/.npm/_logs/2021-05-08T07_51_59_431Z-debug.log ``` ## crowi/crowi:1.7.9の導入をいったんあきらめた **理由** - npmまわりのエラーがよくわからなかった - nodeのバージョン管理(nvmでバージョン管理できるらしいけどそもそもnvmがよくわからんくてインストールしなかった→maquiwikiのwiki構築記事でも使ってたから後々いれたほうがいいかも) - ymlの書き方がイマイチ理解できてない - crowi/crowi:1.7.9のコンテナを立ち上げられなかった - とりあえず簡単そうなnextcloudからやる ## NextCloud dockerhub https://hub.docker.com/_/nextcloud sudo docker pull nextcloud:latest sudo docker run nextcloud ↑で80番ポートを開放したけど、アクセスできなかった。Nextcloud単体では無理かも? ### ymlファイルをつくった 参考:https://www.virment.com/setup-nextcloud-docker/ ```dockerfile= version: '2' volumes: nextcloud: db: services: db: image: mariadb restart: always volumes: - db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root # 適当なパスワードを設定 - MYSQL_PASSWORD=root # 適当なパスワードを設定 - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud app: image: nextcloud ports: - 8000:80 links: - db volumes: - nextcloud:/var/www/html restart: always ``` Portsだけ8080:80→8000:80に変更した <ドメイン>:8000で入れた ![](https://i.imgur.com/HED7t0T.jpg) ユーザ名:admin PW:ad〇〇〇〇〇〇〇〇〇or ストレージとデータベースの設定は データベースのユーザ名:nextcloud PW:ad〇〇〇〇〇〇〇〇〇or データベース名:nextcloud データベースのホスト名:localhost:3306 ### できたこと - デスクトップクライアント - アップしたファイルの確認 - nextcloudのコンテナに入って、/var/www/html/data/admin/files/の下に作成したファイルがあった。 - ファイルの変更をコンテナの中でやったけどwebの方には変更が加わることはなさそう(一方向) - グループ「マキニスタ」を作成 - カレンダー機能を有効にすると全員にカレンダー昨日を適用できる。グループに対して共有とかもできる。 - GoogleカレンダーからデータをエクスポートしてNextCloudでインポートするとマキの予定を表示することができるが、同期ではないので変更は適用されない→使い物にならない - adminが作成したフォルダをグループで共有するのではなく、adminが共有フォルダーを作成する必要がある。(プラグインの機能を有効にする必要がある、まだやってない) ### 確認すること - カレンダー - WebDAV使えなかった - httpsじゃないからかも? - バックアップ - nginx使う - wiki, nextcloud, (owncloud), wordpressに対してそれぞれ用意するのかわかってない ### やりたいこと - コマンドラインでWebアップロード ## 今後の展望 ### 入れるもの(kouga.infoにて) - crowi/mongodb - nextcloud - owncloud - wordpress - Pstfix(メールサーバー[MTA])(おまけ) ### やること - サブドメインで移動できるように - wiki.kouga.info - blog.kouga.info - nextcloud.kouga.info - owncloud.kouga.info - みたいに - DNSサーバ確認 - SSL - 証明書 - 最後AWS借りる? - 契約 - ドメイン - .org - .jp - 両方とる ### ⭐︎⭐︎読めば読むほどわからない⭐︎⭐︎ ## 宿敵nginx ### docker network - [Docker + Nginx + Let's EncryptでHTTPS対応のプロキシサーバーを構築する](https://qiita.com/bremen/items/fcf8571fd2bae080b42b)を読むと、 >プロキシ用のネットワークを構築する プロキシサーバーとWebサーバー間のネットワークは外部との通信を行う必要がありません。そこでプロキシサーバーとWebサーバー間の 内部ネットワーク を構築するため、EC2のインスタンスにログインし、以下のコマンドを入力します。 と書かれており、ネットワークとは!?となった。 - しかし、[letsencrypt-nginx-proxy-companionを使って複数ドメイン名に無料SSL証明書を適用する](https://qiita.com/fukuyama012/items/5d4390ae4a34ba477cef)に書かれている通り、docker-composeを分けると、どうやらネットワークを作る必要が出てくるらしい。 - [docker-composeのネットワーク機能](https://docs.docker.jp/compose/networking.html)にわかりやすくネットワークについて書かれていた。ymlファイルをupすると普通、[ディレクトリフォルダ名]_[default]の名前でネットワークが作成され、自動的に各コンテナはそのネットワークを経由して情報のやりとりをするらしい。そこで別々のymlファイルを作成してそれぞれでupするとなると、同一ネットワークに参加していないので、情報のやりとりができない。だからネットワークを作成する必要がある。(この認識で合ってるかな、、) - ネットワーク関連の参考資料(全部公式ドキュメント) - [Composeのネットワーク機能](https://docs.docker.jp/compose/networking.html) - [Composeファイルリファレンス network](https://docs.docker.jp/compose/compose-file.html#compose-file-networks) - [Composeファイルリファレンス network設定リファレンス](https://docs.docker.jp/compose/compose-file.html#network-configuration-reference) - [network create](https://docs.docker.jp/engine/reference/commandline/network_create.html) - `docker network create --driver bridge shared`でドッカーネットワークを作成できることは↑の[ここ](https://qiita.com/fukuyama012/items/5d4390ae4a34ba477cef)でわかるが、ここの`--driver bridge`は意味がないことが公式ドキュメントからわかった。何も書かなければデフォルトでbridgeになるらしい。意味的にはdriverコマンドで文字通りドライバーを指定できる(外部のドライバとかも使えるらしい)。bridgeとoverlayの違いについては理解が追いついてないが、色々みた感じbridgeしか使ってないので理解は後回し。 - [Docker + Nginx + Let's EncryptでHTTPS対応のプロキシサーバーを構築する](https://qiita.com/bremen/items/fcf8571fd2bae080b42b)でdocker createのコマンドとして`--internal`が使用されていた。これはネットワーク外のコンテナと通信ができないように限定するための設定のようだが、このようにする理由がわからなかった。 - 公式ドキュメントを読んだ感じ、ymlのnetworksに何も書かなければ、[ymlのディレクトリ]_[default]でネットワークが作成するらしいが、networksに何か書くとデフォルトのネットワークは作られないらしい。→crowiとかmongoとかたくさん書かれてるymlのネットワークを変にいじると動かなくなる?→nextcloudのymlをいじってみよう。 - nginx-proxyとletsencrypt-nginx-proxy-companionの書かれたymlファイルとしては[ここ](https://tyablog.net/2019/07/14/https-using-docker-compose-and-nginx-proxy/)も参考になった。 ### 実際にネットワークを立てて、ymlを編集してupする nginxとsslのコンテナのネットワークにnextcloudをぶち込む [これ](https://qiita.com/fukuyama012/items/5d4390ae4a34ba477cef)をパクってやってみる nextcloudのdocker-compose.ymlの最後に ```dockerfile= enviroment: VIRTUAL_PORT: <ポート番号> VIRTUAL_HOST: <割り当てたいサブドメイン> LETSENCRYPT_HOST: <割り当てたいサブドメイン> LETSENCRYPT_EMAIL: <メールアドレス> networks: default: external: name: proxy_nw #ネットワークの名前はproxy_nw ``` を書き足す。 #### nginxとletsencrypt /home/maquinista/proxyのディレクトリを作成し、そこにdocker-compose.ymlを作成。内容を ```dockerfile= version: "2" services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" - "443:443" #なぜ443も必要なのかわかってない。letsencrypt関係? volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./certs:/etc/nginx/certs:ro - /etc/nginx/vhost.d - /usr/share/nginx/html restart: always networks: - proxy_nw letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./certs:/etc/nginx/certs:rw volumes_from: - nginx-proxy #vlumes_fromはバージョン3から使えなくなったらしい。バージョン3ではdepends_on? restart: always networks: - proxy_nw networks: proxy_nw: external: true ``` と記述する。 `docker network create proxy_nw`を実行してネットワークを立て、proxyのディレクトリでdocker compose upを実行。 /home/maquinista/nextcloudのディレクトリでも docker compose upでnextcloudのコンテナを立ち上げ直す。 #### nextcloudのyml ```dockerfile= version: '2' volumes: nextcloud: db: services: db: image: mariadb restart: always volumes: - db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root # 適当なパスワードを設定 - MYSQL_PASSWORD=root # 適当なパスワードを設定 - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud app: image: nextcloud ports: - 8000:80 links: - db volumes: - nextcloud:/var/www/html restart: always environment: VIRTUAL_PORT: 8000 #<ポート番号> VIRTUAL_HOST: nextcloud.kouga.info #<割り当てたいサブドメイン> LETSENCRYPT_HOST: nextcloud.kouga.info #<割り当てたいサブドメイン> LETSENCRYPT_EMAIL: yuta613soccer@gmail.com #<メールアドレス> networks: default: external: name: proxy_nw #ネットワークの名前はproxy_nw ``` **注意** portsは8000:8000としたらダメだった ### nginxとletsencryptのdockerhub - nginx-proxy - https://hub.docker.com/r/jwilder/nginx-proxy - letsencrypt - https://hub.docker.com/r/jrcs/letsencrypt-nginx-proxy-companion ### やってみた サブドメインでnextcloudにアクセスできた! ![](https://i.imgur.com/aQBUjo8.jpg) - サブドメインが信頼されたドメインリストになくてログインできない。 - SSLもできない - SSLできないのはletsencryptの設定でサブドメインに関する記述を忘れた可能性がある。まだやり方は把握していない。 - ↑は嘘。翌朝確認したらちゃんとSSLになってた。 - ↓コンテナ内はnanoもvimも入ってなくて編集できなかった。コンテナ側からホスト側にコピーして書き換え、それをコンテナ側に移してコンテナの再起動をかけてみる。 - ↓コンテナ内のconfig.phpを編集してtrust domeinにnextcloud.kouga.infoを追記する。 - ホストOSでやること - コンテナ内のファイルをホスト側にもってくる - `docker container cp <コンテナ名>:/var/www/html/config/config.php /home/maquinista/nextcloud/`ってやってホストにコピー - ![](https://i.imgur.com/LryNbxL.png) - 'trusted_domains' => array ( 0 => 'kouga.info:8000', ),ってあるところに 1 => 'nextcloud.kouga.info',を追記 - `sudo docker container cp /home/maquinista/nextcloud/config.php 05db2c584c98:/var/www/html/config/config.php`ってやってコンテナにファイルを戻す - ただこの変更だけだとまだエラーって出る。 ![](https://i.imgur.com/hNn8wWQ.png) - これはconfiとconfig.phpのパーミッションを変更しないといけないっていう意味。 - コンテナに入って権限を編集する - `docker exec -it <nextcloudのコンテナ名> babsh`で入って - `chmod 777 /var/www/html/config/config.php` - `chmod 777 /var/www/html/config/config/` - ![](https://i.imgur.com/qdjB4sj.png) ↓そしたら **キター サブドメインでnextcloud接続できた!** ![](https://i.imgur.com/xyn4G1e.jpg) →翌朝確認したらSSL適用できてた ### wikiでもやって見る /crowi_test/docker-compose.ymlを書き換え →enviroment:とnetworks:を追記 ```dockerfile= version: '2' services: crowi: image: bakudankun/crowi:latest links: - mongo:db - redis:redis - elasticsearch:es ports: - 8080:3000 environment: VIRTUAL_PORT: 8080 #<ポート番号> VIRTUAL_HOST: wiki.kouga.info #<割り当てたいサブドメイン> LETSENCRYPT_HOST: wiki.kouga.info #<割り当てたいサブドメイン> LETSENCRYPT_EMAIL: yuta613soccer@gmail.com #<メールアドレス> mongo: image: mongo redis: image: redis:alpine elasticsearch: image: elasticsearch:2 # プラグインのKuromojiが必要 entrypoint: - bash - -c - >- bin/plugin list | grep -q analysis-kuromoji || bin/plugin install analysis-kuromoji && exec /docker-entrypoint.sh $$0 $$@ command: elasticsearch networks: default: external: name: proxy_nw ``` DNSでwiki.kouga.infoを追加(wiki.kouga.infoをグローバルIPに割り当て) `$docker-compose up -d`でwiki起動 サブドメインで接続できた。SSLも同時に。 ![](https://i.imgur.com/MZ89rZ1.png) ### 開放したポートを閉じていく。 - 8080(wiki)と8000(nextcloud)のポートを閉じた - ちゃんとアクセスできた - 80と443、22だけ開放してる - 80だけあればサブドメインで各種サービスに振り分けてくれる - まじかよnginx-proxy最高だな ### Wordpress鯖立てる - 参考になりそうな[docker公式ドキュメント](https://docs.docker.jp/compose/wordpress.html) - 2つワードプレスを立てる[参考](https://teratail.com/questions/251378) - [URL](https://qiita.com/tomokei5634/items/75d2501cfb968d0cfab5)←yamlファイルの解説が載っててわかりやすい - ./maquinista/wordpressの下にhpとblogのフォルダを作った - yaml書いていく ```dockerfile= version: '3' services: db1: #dbからdb1に変更。db2を作るから同じ名前だと干渉すると思った image: mysql:5.7 container_name: 'wpdb-hp' #コンテナ名追加 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: root wordpress: depends_on: - db1 image: wordpress:latest ports: - "8888:80" #8000:80から8888:80に。 restart: always environment: WORDPRESS_DB_HOST: db1:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: root VIRTUAL_PORT: 8888 #環境変数追加 VIRTUAL_HOST: kouga.info LETSENCRYPT_HOST: kouga.info LETSENCRYPT_EMAIL: yuta613soccer@gmail.com volumes: db_data: networks: #エラー出たから後から書き足した default: external: name: proxy_nw ``` これで動いた。下のコードはwordpressのenviromentの下に書いてたけどnetwork proxy_nwが見つかりませんって言われたから消したら上手くいった。これでいけると思ったのになぁ。 ``` networks: #networksを追加最後に書くのではなくwordpress下に書いた。defaultはdbとの通信用。 - proxy_nw - default ``` kouga.infoで接続できた. ![](https://i.imgur.com/3gasILF.png) 初期設定をしてWEBサイトを公開した。 ユーザー:admin メール:yuta613soccer@gmail.com PW: ![](https://i.imgur.com/rgHiThV.png) ### 二つ目のWordpress鯖を立てる 息をするようにyamlを書く ```dockerfile= version: '3' services: db2: #dbからdb2に変更。 image: mysql:5.7 container_name: 'wpdb-blog' #コンテナ名追加 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: root wordpress: depends_on: - db2 image: wordpress:latest ports: - "8880:80" #8000:80から8880:80に。 restart: always environment: WORDPRESS_DB_HOST: db2:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: root VIRTUAL_PORT: 8880 #環境変数追加 VIRTUAL_HOST: blog.kouga.info LETSENCRYPT_HOST: blog.kouga.info LETSENCRYPT_EMAIL: yuta613soccer@gmail.com volumes: db_data: networks: #エラー出たから後から書き足した default: external: name: proxy_nw ``` blog.kouga.infoでもできた。サイト名「TEST_SITE_2」 ![](https://i.imgur.com/dQgMc2b.png) ## 一区切り 一応きりのいいところまで行けた感があるのでMDを区切る ### できたこと - docker-compose 使う - ドメインごとに各種サービスが使えることを検証 - Wiki: wiki.kouga.info - Cloud: nextcloud.kouga.info - HP: kouga.info - Blog: blog.kouga.info - 常時SSL ### できなかったこと - crowi/crowi 1.7.9を使ってwikiの立ち上げ(現状bakudankun/crowiしか立ち上げれてない) - nginxとnginx-proxyの違いの理解 - NextcloudのWebDAVが使えない - node.js周りの理解 ### 次やりたいこと - 上記のできなかったことの検証 - crowiのバージョンアップができるか - バックアップからcrowiの復元/検証 - db周りの理解(mongo,maria,mysql) - nextcloudにownのファイルをコピーしてみる - nextcloudのコンテナ内で新しくディレクトリ構成を作り直せばownのディレクトリ構成を再現できるかどうか検証してみたい - メールサーバを立てる - コンテナの内部で編集できるようにする - configファイルの編集などでコンテナ内部のオーナー権限あたりでいろいろ大変だった - [dockerでvolumeをマウントしたときのファイルのowner問題](https://qiita.com/yohm/items/047b2e68d008ebb0f001)を試したい - ついでにvscodeで編集できるようにする - コンテナ名を適当にしてたからメンテナンス性考えていい感じにしたい

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully