minato128 blog

minato128の公開メモ帳です。

docker-compose で ownCloud を立ててみた

gyazo.com

「チープなEC2インスタンスで ownCloud 立てて S3 接続すれば、Dropbox とかより安く運用できるのでは?😆」 *1 と思ったので試した。

試してみたかったこと / わかったこと

  • docker-compose で ownCloud を立てることで気軽に再構築できるようにする
  • S3 の view として使えるか?
  • 既にデータが存在する bucket に接続しても問題なく動作するのか?
    • 問題なし
    • List API 叩いているっぽい

手順

  1. EC2 Instance 作成
    1. セキュリティグループの 80/443 を開ける
  2. DNS設定追加
    1. example.minato128.com を作った example.ap-northeast-1.compute.amazonaws.com に向ける
  3. Install docker/docker-compose
  4. docker-compose.yml をコピー
    1. Installing with Docker :: ownCloud Documentation
  5. docker-compose.yml の書き換え
    1. HTTPS-PORTALのコンテナの設定を追加
      1. https://github.com/SteveLTN/https-portal
        1. Let's Encrypt から自動的に証明書を発行して反映してくれる
        2. https://qiita.com/c18t/items/c693d5bcda2e9b82e39b
      2. Nginx のデフォルトのCLIENT_MAX_BODY_SIZEが少ないので追加
        1. https://github.com/SteveLTN/https-portal#advanced-usage
  6. docker-compose up -d
  7. example.minato128.com から初回ログイン
  8. 管理画面から S3 接続設定
    1. Amazon S3 :: ownCloud Documentation

yaml の追加部分抜粋

volumes:
  files:
    driver: local
  mysql:
    driver: local
  backup:
    driver: local
  redis:
    driver: local
  # ここを追加
  org-minato-ssl-certs:

services:
  # ここを追加
  https-portal:
    image: steveltn/https-portal:1
    container_name: proxy-https-portal
    ports:
      - '80:80'
      - '443:443'
    links:
      - owncloud
    environment:
      DOMAINS: 'example.minato128.com -> http://dockerhost:8080/'
      CLIENT_MAX_BODY_SIZE: 0
      STAGE: 'production'
    volumes:
    - org-minato-ssl-certs:/var/lib/https-portal

*1:AWS内なのでS3転送料金がかからない

Awair のログを Mackerel に送ってみた

gyazo.com

  • 目的
    • Life Metrics を一ヶ所に集約して分析することで健康管理に役立てる
      • 例えば、睡眠スコアが高いときと低いときで部屋の空気にどんな相関があるかをすぐに見られるようになる
  • Grafana+InfluxDB or Mackerel
    • 最小構成の月額費用はそこまで変わらない
    • 自分で管理するとバージョンアップとかの手間がかかりそう
    • mackerel metrics retention = 460 days
      • 分析と改善のサイクルを回すのにそこまで昔のログは要らない
        • 数年前とかと比較して眺める楽しさはありそうではある
  • 方法
    • 概要
      • Azure Function (Node.js) の Timer 実行で Awair からデータを取得して結果を Mackerel に送る
    • 流れ
      • Awair GET Devices で device_type と device_id を取得
        • 動的に増える考慮が必要なければこれは最初の1回だけ実行して保存しておけばいい
      • Awair GET Latest AirData で最新の metrics を取得
      • Mackerel Service Metrics API の形式に変換してPOST
  • 注意点
    • Mackerel *1
      • Datadog とは metrics 設計が異なる
      • Datadog metrics は tag で split (grouping) するが、Mackerel は metrics name で split させる
    • Awair
      • Hobbyist Plan だとすぐに Limit を超えてしまう
        • Awair Developer APIs
        • ドキュメントに書いてあるメールに upgrade request を送ったら、ありがたいことにすぐに上げてくれた
      • Too many requests は 429 でなく 200 で返ってくるので、body をみる必要がある

mackerel.io

docs.developer.getawair.com

参考コード

gist.github.com

*1:自分が初めて使ったからで知っている人にとっては注意点ではない