投稿者: atmark

  • Redmine の初期設定と簡単な使い方

    Redmine の初期設定と簡単な使い方

    管理者でログイン

    インストール直後は次のように表示されます。
    右上からログインできます。

    初期管理者は次の通りです。

    • ログインID: admin
    • パスワード: admin

    ログインすると即パスワードの変更を求められるので変更してください。

    パスワードを変更すると管理者の登録情報編集画面になります。
    タイムゾーンを GMT+09:00 にして、他は適宜変更します。
    編集し終えたら「保存」を押します。

    最低限必要な設定

    管理者(admin)でログインした状態で、左上の「管理」を開きます。

    ロール、トラッカー、チケットのステータス、ワークフローがまだ設定されていません。
    デフォルト設定のロードを強くお勧めします。ロードした後、それを修正することができます。

    このような内容が表示されているはずなので「Japanese(日本語)」を選択して「デフォルト設定をロード」を開きます。

    「デフォルト設定をロードしました。」と表示されるのを確認します。

    プロジェクトの作成

    画面左上の「プロジェクト」を開きます。

    「新しいプロジェクト」を開きます。
    「名称」と「識別子」を入力し、その他は適宜入力してください。
    「モジュール」は最初は最低限で試すと良いと思います。

    「作成」を開くと「作成しました。」と表示されます。

    チケットの登録

    プロジェクトを開いた状態で「チケット」を開きます。

    「新しいチケット」を開きます。

    「題名」を入力して「作成」を開きます。
    「チケット #1 が作成されました。」と表示されたら完了です。

    用語の簡単な説明

    タスク

    調査、作成、開発といった具体的な作業のこと。

    チケット

    タスクの進捗を管理するために使う。
    ここに現在の状況や進捗を記入していく形になる。

    トラッカー

    チケットの種類。
    デフォルト設定では「バグ」「機能」「サポート」が登録されているが、これはソフトウェアの開発に関連する分類。

    ステータス

    チケットの状況。
    デフォルト設定では「新規」「進行中」「解決」「フィードバック」「終了」「却下」が用意されている。

  • M5StickC で開発を行うための Arduino IDE のセットアップ

    M5StickC で開発を行うための Arduino IDE のセットアップ

    前提

    • Arduino IDE がインストールされていること
      • 今回使ったのは 1.8.9

    ESP32 ボードマネージャのインストール

    Arduino IDE を開いてメニューから「ファイル」 – 「環境設定」を開きます。

    「追加のボードマネージャの URL」に https://dl.espressif.com/dl/package_esp32_index.json を書き加えます。

    OK を押して環境設定を閉じます。

    次にメニューから「ツール」 – 「ボード」 – 「ボードマネージャ」を開きます。

    入力欄に「ESP32」を入力し、表示された「esp32 by Espressif System」の最新版をインストールします。ファイルサイズが大きいため、ダウンロードにそこそこ時間がかかります。

    インストールが終了したらボードマネージャを閉じます。

    M5StickC ライブラリのインストール

    メニューから「スケッチ」 – 「ライブラリをインクルード」 – 「ライブラリを管理」を開きます。

    入力欄に「M5StickC」と入力し、表示された「M5StickC by M5StickC」をインストールします。

    ライブラリマネージャを閉じます。

    ここで一度 Arduino IDE を再起動しておいた方が良いようです。

    動作確認

    シリアルポート番号の確認

    M5StickC に使うポートを確認するため、Windows のデバイスマネージャを開きます。
    Windows 10 ならスタートボタンを右クリックしたメニューの中にあります。

    M5StickC を USB ケーブルで PC に接続します。

    「ポート (COM と LPT)」の下に「USB Serial Port (COM?)」が出現するので、COM? の部分を控えておきます。
    ? には数字が入ります。接続する度に確認する必要があります。

    書き込むスケッチを開く

    Arduino IDE のメニューから「ファイル」 – 「スケッチ例」 – 「M5StickC」 – 「Basics」 – 「FactoryTest」を開きます。

    ボードの選択

    メニューから「ツール」 – 「ボード」 – 「ESP32 Pico Kit」を選択します。

    ボーレートの選択

    メニューから「ツール」 – 「Upload Speed」 – 「115200」を選択します。

    シリアルポートの選択

    メニューから「ツール」 – 「シリアルポート」 – 「COM?」を選択します。
    先程デバイスマネージャで控えたものを選んでください。

    実機への書き込み

    メニューから「スケッチ」 – 「マイコンボードに書き込む」を実行します。
    タブ上の右矢印(➡)も同等の動作です。

    スケッチのコンパイルが走ります。

    コンパイル終了後に M5StickC に書き込まれます。

    書き込みが完了すると M5StickC が自動的に起動します。

    このスケッチは購入した時の初期のファームウェアと同等のようでした。

    M5StickC だけでなく ESP32 Pico Kit のサンプルスケッチも動作するので、色々試してみると世界が広がって楽しいです。

    参考

  • Let’s encrypt 証明書を使って Nginx で TLS(SSL) を有効化する

    /etc/nginx/sites-available/ の設定に次の3行を追加して reload すれば完了。

    kuratsuki.net の部分を適宜変更してください。

    server {
        # .....
        listen 443 ssl;
        ssl_certificate     /etc/letsencrypt/live/kuratsuki.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/kuratsuki.net/privkey.pem;
        # .....
    }
    
    $ sudo systemctl reload nginx
    
  • Let’s encrypt でワイルドカード証明書を新規取得する

    毎回調べてしまうので、手順をメモします。

    前提

    • certbot-auto が使える状態
      • git clone https://github.com/certbot/certbot
    • ドメインの DNS レコードが変更できる状態

    手順

    適宜、kuratsuki.net を自ドメインに置き換えてください。

    $ sudo ./certbot-auto certonly \
        --manual -d '*.kuratsuki.net' \
        -m '[email protected]' --agree-tos \
        --preferred-challenges dns-01 \
        --server https://acme-v02.api.letsencrypt.org/directory
    
    ./certbot-auto has insecure permissions!
    To learn how to fix them, visit https://community.letsencrypt.org/t/certbot-auto-deployment-best-practices/91979/
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator manual, Installer None
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Would you be willing to share your email address with the Electronic Frontier
    Foundation, a founding partner of the Let's Encrypt project and the non-profit
    organization that develops Certbot? We'd like to send you email about our work
    encrypting the web, EFF news, campaigns, and ways to support digital freedom.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (Y)es/(N)o: Y
    Obtaining a new certificate
    Performing the following challenges:
    dns-01 challenge for kuratsuki.net
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NOTE: The IP of this machine will be publicly logged as having requested this
    certificate. If you're running certbot in manual mode on a machine that is not
    your server, please ensure you're okay with that.
    
    Are you OK with your IP being logged?
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (Y)es/(N)o: Y
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Please deploy a DNS TXT record under the name
    _acme-challenge.kuratsuki.net with the following value:
    
    Ib4LVMChbn2wyQZgvfbFXOkIO5HuDi7OJ9Xxjhp9-C2
    
    Before continuing, verify the record is deployed.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Press Enter to Continue
    

    ここで一旦 DNS の設定に移ります。

    自分の場合はお名前.comなので次のように辿って設定します。

    1. 「ドメイン設定」
    2. 「ネームサーバーの設定」
    3. 「DNS 関連機能の設定」
    4. ドメインを選択して「次へ」
    5. 「DNSレコード設定を利用する」
    6. 「TYPE」を「TXT」として「ホスト名」を「_acme-challenge」にします
    7. 「VALUE」に先程 certbot-auto が出したハッシュを入力して「確認画面へ進む」
    8. 「設定する」

    DNS レコードの設定が終ったら certbot-auto に戻って Enter キーを押します。

    ここで DNS レコードの更新が反映されていないと次のような表示が出ます。

    Waiting for verification...
    Challenge failed for domain kuratsuki.net
    dns-01 challenge for kuratsuki.net
    Cleaning up challenges
    Some challenges have failed.
    
    IMPORTANT NOTES:
     - The following errors were reported by the server:
    
       Domain: kuratsuki.net
       Type:   unauthorized
       Detail: Incorrect TXT record
       "KQ08Sk3s2KCzWwsGrzJMU4GJksYY-8aGoSPuY3k1f8J" found at
       _acme-challenge.kuratsuki.net
    
       To fix these errors, please make sure that your domain name was
       entered correctly and the DNS A/AAAA record(s) for that domain
       contain(s) the right IP address.
    

    ローカルで反映されたのを確認してからやってもこの表示が出たので、別窓でもう一つ terminal を開いておいて次を試してみます。

    $ nslookup -q=txt _acme-challenge.kuratsuki.net
    Server:         127.0.0.53
    Address:        127.0.0.53#53
    
    Non-authoritative answer:
    _acme-challenge.kuratsuki.net   text = "KQ08Sk3s2KCzWwsGrzJMU4GJksYY-8aGoSPuY3k1f8J"
    
    Authoritative answers can be found from:
    

    この結果に反映されるまでは certbot-auto を続けても失敗するだけです。

    問題なければ次のような表示になります。

    Waiting for verification...
    Cleaning up challenges
    
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/kuratsuki.net/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/kuratsuki.net/privkey.pem
       Your cert will expire on 2019-09-21. To obtain a new or tweaked
       version of this certificate in the future, simply run certbot-auto
       again. To non-interactively renew *all* of your certificates, run
       "certbot-auto renew"
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le
    

    これで証明書諸々が /etc/letsencrypt/live/ に格納されました。

  • docker-compose で Wekan を構築

    docker-compose で Wekan を構築

    docker-compose.yaml

    wekan:
      image: wekanteam/wekan
      links:
        - wekandb
      environment:
        - MONGO_URL=mongodb://wekandb/wekan
        - ROOT_URL=http://kuratsuki.net/    # URLは各自変更してください
      ports:
        - 3001:8080 # 公開ポート3001を各自変更してください
      restart: always
    
    wekandb:
      image: mongo
      volumes:
        - ./mongodb/data:/data
      restart: always
    

    参考

  • docker-compose でお手軽に Redmine を構築する

    docker-compose でお手軽に Redmine を構築する

    自プロジェクトで Redmine を使う必要があって、その時の作業を記録として残します。

    前提

    • Docker が使える環境
      • docker-compose が使えること
    • Redmine のデータはコンテナを再構築しても永続化するようにしたい
      • 1サーバに複数の Redmine を構築する予定があるので、それも考慮する

    docker-compose.yaml

    version: '2'
    services:
      redmine:
        image: redmine
        ports:
          - 3000:3000
        environment:
          REDMINE_DB_MYSQL: db
          REDMINE_DB_PASSWORD: redmine
        depends_on:
          - db
        restart: always
    
      db:
        image: mariadb
        environment:
          MYSQL_ROOT_PASSWORD: redmine
          MYSQL_DATABASE: redmine
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
        volumes:
          - "./mysql/data:/var/lib/mysql"
        restart: always
    

    いきなりですが今回使った docker-compose.yaml の中身です。

    少しだけ補足すると、MariaDB のデータを docker-compose.yaml があるディレクトリ下に保存するように volume を割り当てているので、docker-compose down して再度 up してもデータが残ります。

    ポートの変更

    上記の yaml では 3000 で待ち受けていますが、8080:300080:3000 のように自分の使うポートに変更してください。
    :3000 はコンテナ内部のポートなので変更してはいけません。

    起動

    初回は次のようにしてコンテナを生成しつつ起動します。

    $ sudo docker-compose up -d
    

    stop で止めたりした時は start で再開できます。

    $ sudo docker-compose start
    

    停止

    一時的にコンテナを止めます。

    $ sudo docker-compose stop
    

    削除

    stop & rm です。

    $ sudo docker-compose down
    

    コンテナを削除しても ./mysql/* 下にデータが残っているので適宜削除してください。

    参考

  • Gemini PDA を Android 8.1 から 7.1.1 に戻す

    Gemini PDA を Android 8.1 から 7.1.1 に戻す

    OTA リリース直後から docomo LTE(4G) を掴まないやらそもそも更新ができないやらとひと悶着あった Gemini PDA の Android 8.1(OTA6) ですが、その後は特に大きなトラブルもなく普通に使っていました。

    ですが Android 7.1.1 の時と比較するするとアプリの切り替えがもたついて、とても遅く感じます。
    Android 8.1 になって特に優れた箇所も見当らないので、快適さを採って Android 7.1.1 に戻すことにしました。

    多分駄目だろうと思いながら、ダメ元で userdata を残して Android 7(OTA5) のファームウェアを焼いてみます。
    公式の Android Flashing Guide を参考にしています。

    書き込み自体は正常にできますが……

    案の定、怒られました。
    渋々 Fatctory Reset します。

    毎回キーボード回りの設定がわからなくなるので自分用のメモを貼っておきます。