Unix

Vanilla Forums

Debian GNU/Linux 10 Buster をインストールした VPS に、nginx を入れて、Vanilla Forums を立ち上げたので、そのメモ。Web サーバーに Apache を使う場合は、.htaccess のひな形が予め仕込まれてるので、注意点はない。 まずは、nginx と php をインストール sudo apt install nginx sudo apt install php php-apcu php-bz2 php-cli php-curl php-fpm php-gettext php-imagick php-imap php-mbstring php-mdb2-driver-mysql php-mdb2-driver-pgsql php-mysql php-pgsql php-readline php-tokenizer php-xml php-xmlrpc php-zip Github からリリース版を取得。適切な位置 (仮に、/srv/vanilla とする) へ展開。 nginx の server {} ディレクティブ内で以下のように設定。 root /srv/vanilla; # Add index.php to the list if you are using PHP index index.php; # Block some folders as an extra hardening measure.
Read more

Newspipe のインストール

Feedbin の設置には成功したものの、どうやってもフィードを更新してくれなくて、使用を断念したが、他によさげなアグリゲーターがないか、😎 Awesome lists about all kinds of interesting topics で探したところ、Newspipe が使いやすそうだったので、これをインストールしてみた。 結果から言うと、丸二日かかって稼働に成功。やったね!😁 まず、Python 3.7以上が必要だが、Debian 9 (Stretch)に入っているのは、3.5。ということで、ソースからインストールする。現時点での最新版は、3.7.3。 最初に、前提となるパッケージをインストールしておく。 sudo apt install -y build-essential python-dev python-setuptools python-pip python-smbus libssl-dev libffi-dev zlib1g-dev libreadline-gplv2-dev libsqlite3-dev libbz2-dev libncursesw5-dev libgdbm-dev liblzma-dev uuid-dev tk-dev zlibc libpq-dev libmariadbclient-dev sudo apt install -y apache2-dev sudo pip install pipenv 次に、適当なところでアーカイブを展開し、以下を実行する。 ./configure --enable-shared --enable-optimizations make sudo make altinstall sudo ldconfig –enable-sharedオプションって推奨されてないんじゃないの?と思う人もいるかも知れませんが、mod_wsgiに共有ライブラリが必要なので、指定せざるを得ません。最後の ldconfigは、Python共有ライブラリを認識させるためのおまじない。やっておかないと実行時にエラーが起きます。 Pythonがインストールできたら、PostgreSQLも必要なので、インストールしておく。うちは、別インスタンスにインストール済みなので、パス。いずれにせよ、データベースを作成しておく。 su - postgres createuser -D -A -P newspipe (パスワードを入力する) createdb -O newspipe newspipe Newspipeを GitLabからクローンする。
Read more

Feedbin のインストール

結果的に、動作しなかったが、勿体ないので、記事は残しておく。ニュースサイトの閲覧に、サーバー設置型であるニュースフィーダーの Fever を使っているのだが、ディスコンになってしまって、乗り換え先を探していたところ、オープンソースで公開されている Freebin がよさげだったので、Debian GNU/Linux 9 Stretch にインストールしてみた。Feedbin に月 $5 払えば、インストールなどいらないのだが、ドキュメントに書かれていない設定が多数あって、試行錯誤に丸一日費やしたので、どこかに残しておかないと勿体なかったというのもある。😁 まず、Stripe.com のアカウントが必要なので、サインアップする。 ダッシュボードの「テスト API キーの取得」に、公開可能キーとシークレットキーがあるので、これをいったんコピーしておく。 次に、サイドバーの Billing → 商品から、商品を 9 種類追加する。商品ごとの料金プランで、API ID に以下の値をひとつずつ設定する。面倒だが、Stripe.com に該当の API ID を持つ商品(料金プラン)がないとエラーになるので、頑張って設定する。 basic-monthly basic-yearly basic-monthly-2 basic-yearly-2 basic-monthly-3 basic-yearly-3 free timed trial 設定が終わったら、インストール作業に入る。まず、Feedbin を実行するユーザーを作成する。 sudo useradd -m feedbin 実行には、memcahed、elasticsearch、ruby が必要なので、インストールする。ただし、システムデフォルトの ruby は、バージョンが古い (2.3) ので、rvm から必要なバージョンを導入しなくてはならない。(無論、rbenv から導入してもよい) sudo apt install dirmngr sudo apt install apt-transport-https sudo apt install curl sudo apt install memcached sudo apt install -t stretch-backports redis sudo gpg --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E37D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.
Read more

Pydio Cells の隠し仕様

ファイル共有サーバーソフト、Pydio が、内容を一新、Go でスクラッチから書き直されて、Pydio Cells となった。 最近になって、更新のための時間が取れたので、インストールしてみた。ところ、このブログも乗っかってる専鯖上の VM には問題なくインストール完了。ところが、ストレージ目的で借りている VPS で、所謂ヌルポインタエラーが出た。フォーラムで質問しても解決しなかったが、うまくいったケースとそうでないケースを見比べて違いを埋めていった結果、Pydio Cells は、プライベート IP アドレスがないとセグメンテーションフォールトを起こす仕様になっていることがわかった。 ドキュメントのどこにも書いてないが、ソースではしっかりチェックされてて、確かにプライベートアドレスがないとエラーになる箇所があった。ところがそのエラーをチェックせずに実行を継続しているので所謂ぬるぽになっている。明らかなバグ。フォーラムで報告しておいた。 [2019/03/15 追記] バージョン 1.4 でこの問題が解決されていることを確認しました。

メールサーバー間の SMTP 通信を暗号化する

メールサーバー間の通信で、TLSを使った暗号化が可能なのは知っていたが、面倒なので放置していた。 が、Gmail などで暗号化通信で送られてきたメールにはその旨記載があったり、世の中も動いてきてるので、今回、対応することにした。 Debian の場合 apt install ca-certificates で、CA証明書を導入しておくことを忘れない。 /etc/postfix/main.cf に以下の行を挿入。 smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_tls_security_level = may smtp_tls_loglevel = 1 FreeBSD の場合 pkg install ca_root_nss で、CA証明書を導入しておくことを忘れない。 /usr/local/etc/postfix/main.cf に以下の行を挿入。 smtp_tls_CAfile = /usr/local/etc/ssl/cert.pem smtp_tls_security_level = may smtp_tls_loglevel = 1 これで、送信時に暗号化通信を行える相手には、暗号化して送信し、そうでない相手には平文で送信するようになる。 共通 次に受信時の暗号化通信だが、メールのヘッダに暗号通信の記録を残すことを含め、main.cf へ次の行を挿入。 smtpd_use_tls=yes smtpd_tls_received_header = yes 無論、SSL 証明書を Let’s Encrypt などから取得して、設定しておくことを忘れない。 以上で対応は終了だった。簡単すぎて拍子抜け。もっと早くに対応しておくべきだった。

NetBSD の virtio は、vhost-net に対応していない

調子に乗って、NetBSD もインストールしてみた。 最初、ネットワークアダプタを認識してるのに外部へも外部からも通信できなくて頭を捻ったのだが、kvm の vhost-net を off にしたら問題なく通信するようになった。他の BSD が vhost-net に対応していたので、これはちょっと意外。

最近のBSD の virtio 対応状況

NetBSD は試していないのでわからないけれども、FreeBSD、OpenBSD、DragonFly BSD はすべてデフォルトで virtio ドライバを搭載しているので、普通に kvm 上でインストールできる。進歩したものだ。

OpenBSD のインストールについて覚え書き

OpenBSD をインストールする際、カーネルやブートストラッパが / に置かれるため、ディスクパーティションの先頭は必ず / になるよう配置しなくてはならない。Linux の癖で swap を先頭にしてブートせずに嵌まったので、覚え書き代わりにメモ。

CentOS 7 の firewalld

気分が乗ったので、CentOS 7 をインストールした。ファイアウォールの設定が結構手間だったので、備忘録代わりに記録しておく。 まず、定番のサービスポートを開けておく。 sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --permanent --zone=public --add-service=pop3 sudo firewall-cmd --permanent --zone=public --add-service=pop3s sudo firewall-cmd --permanent --zone=public --add-service=imap sudo firewall-cmd --permanent --zone=public --add-service=imaps sudo firewall-cmd --permanent --zone=public --add-service=smtp sudo firewall-cmd --permanent --zone=public --add-service=smtps sudo firewall-cmd --permanent --zone=public --add-service=smtp-submission sudo firewall-cmd --permanent --zone=public --add-service=ftp 自宅は固定アドレスで、かつ ipv6 も割り当てられているので、そこからは全ポートを受け付けてもらえるように開放する。 sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="118.243.217.235" accept' sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2405:6584:7840:800::/64" accept' 内部通信用のインターフェースは無条件で信頼する。
Read more

Debian Stretch – GRUB 2 のバグ?

KVM のシリアルポート経由で、ブートメッセージをチェックするようにしているのだが、Debian Stretch をゲストにすると、なぜか GRUB 2 がシリアルコンソールにメニューを表示しない問題があった。 実用上さして気にするほどでもなかったので放置してたのだが、他のディストリビューション (CentOS 7, Ubuntu 16) ではちゃんと表示されるので、いっちょ修正するか、と手を出してみた。 結論。sid の GRUB 2 と入れ替えたら問題なく表示された。なぜ Stretch では直さないのかよくわからない。バックポートが難しいのだろうか。 使用しているスクリプトで kvm の起動待ちをしている部分が悪さをしていることがわかった。起動確認をしている間に grub メニューが表示されるため、シリアルコンソールに制御が移ったときには表示済みのため、一見表示されていないように見えただけだった。反省。