Web

Inboxen

Inboxen のインストールに嵌まったので、そのメモ。 といっても、Web 画面に辿り着くのは、簡単で、Postfix の設定に手こずった。 まずインストール/実行用のアカウント inboxen を作成し、pyenv で Python 3.9.0 をインストール。 pyenv install 3.9.0 リポジトリをクローン。 git clone https://github.com/Inboxen/Inboxen.git pip を実行。gunicorn もインストールする。 cd Inboxen pip install -r requirements.txt pip install gunicorn inboxen.config を作成する。 cp -i inboxen/config_defaults.yaml inboxen.config vi inboxen.config inboxen.config の内容は以下のようにした。 secret_key: "secret" admins: - - Koichi MATSUMOTO - mzch@example.com allowed_hosts: ['example.com','www.example.com'] cache: backend: "django.core.cache.backends.filebased.FileBasedCache" location: "inboxen_cache" timeout: 300 database: host: "127.0.0.1" name: "inboxen" password: "password" port: "5432" user: "inboxen" debug: false enable_registration: false inbox_length: 6 language_code: "en-gb" media_root: "media_content" per_user_email_quota: 0 ratelimits: inbox: count: 100 window: 1440 login: count: 5 window: 60 register: count: 5 window: 30 single_email: count: 100 window: 60 server_email: "no-reply@example.
Read more

続: Ptorx

昨日記事にあげた Ptorx だが、Nginx で妥協したのがモヤモヤするので、Apache でも構成してみた。 が、どうしても、Nginx の try_files ディレクティブと同等のことが、サイト設定だけでは完結せず、以下のような内容の .htaccess を web/dist/ accownt/web/dist ccashcow/web/dist yalcs/web/dist に配置せざるをえなかった。知識の乏しさに泣きそうになる。 <Files ".htaccess"> Require all denied </Files> RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [L] その上でサイト設定は以下のようにした。 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com RewriteEngine On RewriteCond %{SERVER_NAME} =www.example.com [OR] RewriteCond %{SERVER_NAME} =example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@example.com Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.
Read more

Ptorx

Ptorx は、メール転送サービスを構築できるサーバーアプリ。似たようなソフトに、SimpleLogin や、AnonAddy があるが、モダンなインターフェースが特徴。例によってインストールに手こずった。 最初、ウェブサーバーは、Apache でやろうとしたのだが、全然うまく動いてくれないので、まずはドキュメントに書かれている環境で試すべき、と考えて、Nginx が動いている鯖にインストールし直した。 ところが、ユーザー登録はまではこぎつけたものの、ログインできない。むろん、Issue で質問しまくったが、作者にも不明だった。 そこで、ソースをよく見てみると、なんと server/.env と accownt/server/.env (あと多分、ccashcow/server/.envも) で JWT_KEY の値を同じにしなくてはならないことが判明。そこを修正すれば、するっとログインできてしまった。 あと、production 環境では、メールの送信に sendmail コマンドを使っているが、少なくとも Postfix を入れている環境では、パスが指定されていないのでエラーになる。これは PR を送ってみた。 あと、From: ヘッダと Envelope-From が異なるので、iCloud といったサービスでは、DKIM チェックが unknown になってしまう。これは質問中。

Scoold と Apache

Scoold のインストールに手こずったのでその備忘録。必須モジュールとして、Apache、OpenJDK、Node.js が必要。事前に導入しておく。 まず前提として、Para をインストール。バックエンドのデータベースはいろいろ選べるが、今回は MongoDB をチョイス。MongoDB 用の DAO モジュール も併せてダウンロードしておく。ただし、面倒くさかったら、ホスティングサービス もあるので、それを利用してもよし。 Para 起動用のユーザーを作成して、su する。ホームディレクトリは、仮に /srv/para とする。 Para の jar モジュールをホームディレクトリに配置。plugins ディレクトリを作成し、DAO モジュールをそこに配置する。 設定ファイル application.conf を作成。以下のような感じ。 # the name of the root app para.app_name = "Para" # or set it to 'production' para.env = "production" # Plugins para.plugin_folder = "plugins/" # database para.dao = "MongoDBDAO" para.mongodb.host = "127.0.0.1" para.mongodb.database = "para" para.mongodb.user = "para" para.mongodb.password = "para_mongo_password" # Google para.gp_app_id = "xxxx" para.
Read more

Formspree

例によって例のごとく、ドキュメントが未整備なオープンソースアプリをインストールしたので、そのメモ。 Formspree は、静的サイトなどにメールフォームを設置するためのサーバーアプリケーションである。設置が面倒な方は、ホスティングサービスもあるので、そちらを利用された方がよいかと。 まず、Python をインストールする。Python は、個人的に pyenv を使うので、そのように。 git clone https://github.com/pyenv/pyenv.git ~/.pyenv .profile を編集して、以下を追記。 PYENV_ROOT="$HOME/.pyenv" export PYENV_ROOT if [ -d "$PYENV_ROOT/bin" ] ; then PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" fi 前提ファイルをインストール sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libmariadb-dev-compat libpq-dev Node.js もインストールしておく。 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt install -y nodejs Python をインストール。その後、pipenv をインストール。
Read more

Apache で php-fpm を使う

やっぱり、Apache でも http2 を有効にしたい!ということで、慣れ親しんだ、php_module からおさらばして、php-fpm で構成し直した。Debian & php 7.3 での例を示す。 まず、php-fpm をインストール。まあ、php_module を削除すれば、勝手に php-fpm が入るんですが。ダウンタイムを極力避けるなら、この手順で。 sudo apt install php-fpm 次に proxy_fcgi を有効にする。 sudo a2enmod proxy_fcgi そうしたら、php_module を削除する。 sudo apt purge libapache2-mod-php libapache2-mod-php7.3 prefork モジュールが読み込まれているのをやめて、event モジュールに差し替える。ついでに、http2 モジュールを有効にする。 sudo a2dismod mpm_prefork sudo a2enmod mpm_event http2 最後に、Apache の php-fpm 設定を有効にする。 sudo a2enconf php7.3-fpm あとは、Apache を再起動するだけ。 sudo systemctl restart apache2 うむ。簡単だった。

ドメイン名を変更しました

旧来の daybook.biz から、新たに loginterests.com にドメイン名を変更しました。気分転換というか、既に(というか、最初から)日誌になってなかったので、興味のあることをつらつら記録していく、という現状に近い意味を持たせようか、と。 あと、サーバーを Debian Buster にアップグレードしたんですが、なぜか daybook.biz だけ不調になりまして、ここも心機一転。Wordpress から、Hugo へプラットホームを変えました。サイトジェネレータ型のいいところは、素の HTML/CSS/Javascript を置くだけなので、システムの変更に強い点。今回、図らずも Wordpress はその弱点を晒してしまったということで。Worddpress 本体は、PHP のバージョンが上がってもきちんと対応してるので、まあ、使ってるプラグインとかテーマが悪いのでしょう。 細々続いているこのサイトですが、今後ともよろしくお願いします。はい。 なお、一応、旧来のサイトも残してあります。見てみたいという奇特な方は、こちらからどうぞ。

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