カテゴリー: PC

  • docker-compose で imgur を使わない HackMD 環境を構築

    docker-compose で imgur を使わない HackMD 環境を構築

    HackMD(https://hackmd.io/) は Webブラウザで動く Markdown エディタです。

    HackMD の素晴しい特徴として複数のクライアントによるリアルタイム同時編集機能があります。1人でも Web ブラウザを複数起動させれば試せるのでぜひ実際に試してみていただきたいのですが、複数の編集がリアルタイムに画面に反映されるのは今までにない体験で、かなり楽しいです。使いどころを問われると答えに窮しますが、それはこれから探っていくとして……。

    この HackMD の OSS として CodiMD があります。CodiMD は公式が docker-compose.yaml を提供してくれているので自分でも簡単に環境構築を行えます。

    この際、一つだけ落し穴があって注意する必要があります。HackMD は編集画面上に画像をそのままペーストできるのですが、その時の画像の保存先がデフォルトで imgur なので Ctrl + V した瞬間に全世界に公開されてしまうのです。これはうっかり大惨事を引き起しかねません。

    docker-compose.yaml を数行変更するだけでこれを回避できるので、今回はその手順で環境を構築してみます。普段は Debian なのですが、今回は使っているサーバの都合で Ubuntu 18.04 LTS です。

    ubuntu@dev:~$ cat /etc/os-release | grep VERSION=
     VERSION="18.04.2 LTS (Bionic Beaver)"
    ubuntu@dev:~$ git clone https://github.com/hackmdio/docker-hackmd.git
     Cloning into 'docker-hackmd'…
     remote: Enumerating objects: 731, done.
     remote: Total 731 (delta 0), reused 0 (delta 0), pack-reused 731
     Receiving objects: 100% (731/731), 222.28 KiB | 702.00 KiB/s, done.
     Resolving deltas: 100% (343/343), done.

    docker-hackmd/docker-compose.yml を編集します。app の environment 下に CMD_IMAGE_UPLOAD_TYPE と CMD_DOMIN を追加します。CMD_IMAGE_UPLOAD_TYPE の指定だけではエラーを吐くらしいので CMD_DOMAIN も指定します。

    もう一つ、自分の場合は CMD_URL_ADDPORT = false を追加しました。これを入れないとすべての URL に :3000 が付加されてしまい、サイトの表示が崩れてしまいました。直接ポートを指定して使う場合は問題になりませんが、今回は Nginx によるリバースプロキシを経由してサブドメインで運用する予定なのでポートの指定は不要でした。

       - HMD_DB_URL=postgres://hackmd:hackmdpass@database:5432/hackmd
       - CMD_IMAGE_UPLOAD_TYPE = filesystem
       - CMD_DOMAIN = hmd.kuratsuki.net
       - CMD_URL_ADDPORT = false
     ports: 

    編集が完了したら docker-compose up して HackMD を起動します。

    ubuntu@dev:~/docker-hackmd$ sudo docker-compose up -d
     [sudo] password for ubuntu:
     Pulling database (postgres:9.6-alpine)…
     9.6-alpine: Pulling from library/postgres
     bdf0201b3a05: Pull complete
     365f27dc05d7: Pull complete
     bf541d40dfbc: Pull complete
     2042c4eafdd8: Pull complete
     925cd0367a3b: Pull complete
     47c141dded4c: Pull complete
     751c0956cd65: Pull complete
     a9a85eacf5bb: Pull complete
     ba84e9ab01c0: Pull complete
     Pulling app (hackmdio/hackmd:1.2.0)…
     1.2.0: Pulling from hackmdio/hackmd
     f189db1b88b3: Pull complete
     3d06cf2f1b5e: Pull complete
     687ebdda822c: Pull complete
     99119ca3f34e: Pull complete
     e771d6006054: Pull complete
     b0cc28d0be2c: Pull complete
     7225c154ac40: Pull complete
     7659da3c5093: Pull complete
     8138c3c27b70: Pull complete
     3ac8c3e5ade3: Pull complete
     b2c8cd9cc032: Pull complete
     53f21b305291: Pull complete
     bb60fd15638c: Pull complete
     6b6e9067f162: Pull complete
     Creating docker-hackmd_database_1 … done
     Creating docker-hackmd_app_1      … done

    起動したら http://CMD_DOMAINで指定した名前またはIPアドレス:3000/ を開きましょう。ここで CMD_DOMAIN とは異なる名前でアクセスすると画面が思いっきり崩れます。CSS を相対 URL 指定ではなく絶対 URL 指定しているようです。

    docker-compose up は初回だけで、2回目以降は docker-compose start/stop を使いましょう。環境を再構築したいときは docker-compose rm で一旦削除するだけです。docker-compose は便利ですね。

    参考

    • https://github.com/hackmdio/codimd/blob/master/README.md
  • Raspbian (Debian 9 Stretch) の SSH 有効化

    Raspbian (Debian 9 Stretch) の SSH 有効化

    user/password = pi/raspberry でログインして “sudo raspi-config” を実行します。

    “5 Interfacing Options” の “P2 SSH” を開いて “YES” を選択して完了です。

  • Debian 9 Stretch で IP アドレスの固定化

    Debian 9 Stretch で IP アドレスの固定化

    普段は DHCP で問題ないのですが、Raspberry Pi をサーバ用途で使うことが多いため、IP アドレスを固定します。Debian 8 Jessie 以前とは方法が変っているため、注意が必要です。Raspbian で実行しています。

    編集するのは “/etc/dhcpcd.conf” です。今回は有線 LAN のみ設定するので、コメントアウトを外して次のように記述します。

    interface eth0
    static ip_address=192.168.0.100/24
    static routers192.168.0.1
    static domain_name_servers=192.168.0.1 8.8.8.8

    domain_name_servers は基本的に routers と同じにしておけばいいと思いますが、1.1.1.1(Cloudflare) や 8.8.8.8(Google) 等を使ってもいいでしょう。スペース区切りで複数指定できます。

    無線 LAN は interface wlan0 で設定できると思いますが未検証です。

  • Ubuntu 18.04 に apt で Nginx をインストールしたら “[emerg] socket() [::]:80 failed (97: Address family not supported by protocol)”

    Ubuntu 18.04 に apt で Nginx をインストールしたら “[emerg] socket() [::]:80 failed (97: Address family not supported by protocol)”

    IPv4 環境なのに IPv6 の設定があるために発生します。/etc/nginx 下に “:80” の記述があるファイルがないか grep してみます。

    $ grep -R ":80" /etc/nginx/*
    sites-available/default: listen [::]:80 default_server;
    sites-available/default:# listen [::]:80;
    sites-enabled/default: listen [::]:80 default_server;
    sites-enabled/default:# listen [::]:80

    ありました。Debian のお作法的に /etc/nginx/sites-enable/default => /etc/nginx/sites-available/default のシンボリックリンクになっているはずなので sites-available/default を編集します。

    $ sudo vi /etc/nginx/sites-available/default
    .....
    listen 80 default_server;
    - listen [::]:80 default_server;
    + # listen [::]:80 default_server;
    .....

    “listen [::]:80 default_server;” をコメントアウトして保存します。

    Nginx が正常に起動するか確認します。

    $ sudo systemctl start nginx
  • Ubuntu 18.04 で Apache2 の HTTP 待ち受けポートを変更する

    Ubuntu 18.04 で Apache2 の HTTP 待ち受けポートを変更する

    Debian 系統は同様の方法で行えると思います。

    “/etc/apache2/ports.conf” をエディタで開いて “Listen 80” を書き換えます。

    $ sudo vi /etc/apache2/ports.conf
    .....
    - Listen: 80
    + Listen: 8000
    ....

    編集後に Apache2 を再起動して設定を反映します。

    $ sudo systemctl restart apache

    または

    $ sudo apache2ctl reload

  • Ubuntu 18.04 に最新の Docker CE をインストール

    Ubuntu 18.04 に最新の Docker CE をインストール

    公式が用意している apt のリポジトリを登録して、普通に apt install するだけです。

    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    gnupg-agent \
    software-properties-common
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    $ sudo apt update
    $ sudo apt install docker-ce

    一度、間違えて Debian のリポジトリを登録してしまいましたが、/etc/apt/sources.list を編集して該当行を消せば元に戻せます。

    docker-compose のインストール

    docker-compose の GitHub から最新版をダウンロードして、実行権限を与えます。以下は現時点での最新版 docker-compose 1.23.2 の場合です。

    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    $ sudo chmod +x /usr/local/bin/docker-compose

    参考