Author Archives: orbit

Rental Orbit Space サービス終了と今後について

昨日報告させていただきました通り、Rental Orbit Space につきましては、ひとまず2024/11/30を持ちましてサービスを終了する運びとなりました。今までありがとうございました。

今まで殆どお話しすることのなかった運営方針と発生していた課題と葛藤、今後についてお話しできればと考えています。

活動開始時期の状況と運営方針

Rental Orbit Space は、2008年12月、当時高校生だった私が趣味と勉強目的で立ち上げたサーバを、自身と同じ学生の勉強場所として、創作活動で生まれた作品の公開場所として、なるべく好条件(機能・容量)で貸し出すというのを目標として始めました。

というのも、当時は企業が提供する無料サービスでサイトを公開しようとすると静的なファイル(HTMLやCSS、画像など)しか設置できなかったり、容量が非常に少なかったりと中々に選択肢が限られ、お金や決済手段の限られる学生がコンテンツを公開したり学習を開始するにはハードルが高かったという背景があります。

当時、企業ではなく個人運営のレンタルサーバーを利用するには、利用者が何の目的で何のコンテンツを公開するのかについて作文を書いて運営者に送り、運営者に厳選されたユーザにのみアカウントを提供するという「審査」と呼ばれる過程を踏むスタイルが殆どでした。また利用目的に「学習目的での利用」はあまり歓迎されず「許可しない」と明記しているケースも珍しくはなかったかと思います。ですが私自身としましては学びや作品の公開を望む人がいれば可能な限り利用してもらいたいと考えており、一貫して「審査」と呼ばれる過程を重視しないスタイルをとっていました(利用目的が「ああああ(以下略)」というような、極端に不真面目な内容については利用を許可しないこともありました)

発生していた課題と葛藤

簡潔に述べますと、想像以上に嵩む費用と不足するマンパワー、進歩し変化していく技術、そして自身と環境の変化になります。

Rental Orbit Space は設置されたサイトの下部に広告を設置することで、運用費(電気代や通信費)を確保するスタイルで運営してきました。当然運営するにあたり突然機材が故障することもあります。しかし、恥ずかしながら収益がそれらを上回ることは殆どなく常に赤字でした。これにつきましては企業であれば大問題ですが、私の目的は趣味と勉強用であっため些末な問題だと言えるでしょう。

一方で運営保守と機能追加に伴うマンパワー不足は明らかに問題があったと言わざるを得ませんでした。誰でも無料で登録できるサービスであるため、悪意のあるユーザが紛れ込むこともあります。中にはCGI Proxy(PHP Proxy)やWebShellなどを始めとする攻撃を目的としたツールを設置を試みるユーザもいました。このようなツールは悪用の仕方によっては警察・裁判沙汰になりかねません。また、未成年の閲覧にふさわしくないコンテンツが掲載されていたり掲示板にスパムボットが群がっている状況では広告代理店より広告の配信が停止されることもあるため独自に対策を行う必要がありました。

ITというのは歳月が経過しますと求められる技術は移り変わり、企業が提供するホスティングサービスも低価格化と多機能化が進みます。その中でもWeb開発の技術とインフラ関係の変化は激動といっても良いでしょう。当初はLAMP(Linux, Apache, MySQL, Perl/PHP)が求められていましたが、VPS(Virtual Private Server)が一般的となりアプリケーションサーバとNginxなどによるリバースプロキシの構成が当たり前になりました。さらに昨今ではKubernetesのようなコンテナ化技術の普及している状況です。しかし共有レンタルサーバーとなると状況は特殊になり、例えばNginxであっても.htaccessの需要を考慮しますとApacheから置き換えるのは難しいものがあります(ApacheとNginxを併用する方法はありますがそれではNginxの速度を活かせません)。アップデートもユーザーが設置した様々なものに影響が出ないよう可能な限り配慮して実施する必要があります。またVPSやコンテナ技術を利用したサービスとしてユーザに提供するとなるとグローバルIPやサーバの台数が今までと比べ物にならないほど必要となり、とても現実的ではありません。このように運営を開始した頃のサービスから中々変化を出せないのは自身も成長していないようで大変なもどかしさがありました。そして、これらの模索は運営保守における時間的・精神的リソースを多大に奪うことに繋がりました。

次に、仮想基盤(ハイパーバイザー)の移行に関する問題があります。現在利用している仮想基盤は無償提供が終了したため、移行を余儀なくされています。この移行ではサービスを稼働させたまま現在のサーバ(実機)を流用することは不可能であり、新たなサーバーの購入が必要であり刷新するとなると数十万円規模の費用と仮想マシンの変換など、多くの作業と時間を伴うことが予想されます。

今後について

今回の Rental Orbit Space としましてのサービス終了は私自身の仕事とプライベートと運営管理のバランスが取れないことが最大の理由であります。終了までのスケジュールはメールにてご案内させていただきました通りですが、私の個人用サーバを管理するのと近いスタイルでの運営であれば負担は少ないかと思います(アップデートなどで互換性などが多少損なわれる可能性があるため、それを考慮し広告などの表示は行わないつもりです)。しかしながら需要が未知数なため、現在の利用者の中でそれでも良いと思われる方や、移行先の選定に困っている方がいらっしゃいましたらメールにて連絡ください。

Rental Orbit Space を運営しました15年という時間は実に私の今日までの人生における半分に迫る時間であり、様々な学びや経験とチャンスをもたらしてもらいました。重ね重ねになりますが、ありがとうございました。

今時で高速なWordPressを楽に構築する(CentOS7 + HTTP/2 + Let’s Encrypt + HSTS + PHP7)

速度的に欲を言えばNginxの方が良さそう?なのですが
利便性(やっぱりhtaccessは使いたい)を考えてApacheにしています。

下手にソースコードをビルドするとその後に脆弱性が見つかったなどでアップデートするのが面倒になったりするのですが、既にそんなことせずとも何とかなりそうだったのでメモしておきます。

リポジトリ(epel + IUS)を追加

$ sudo yum -y install epel-release
$ sudo rpm -ivh https://centos7.iuscommunity.org/ius-release.rpm 

Apache2.4(HTTP/2対応)のインストール

$ sudo yum -y install httpd24u httpd24u-devel httpd24u-mod_ssl

設定方法は Webサーバー構築(Apache) (CentOSで自宅サーバー構築様) を参照

マルチプロセッシングモジュール (MPM)の確認

ApacheでHTTP/2を実現するためにはMPMがEVENTになっている必要がある。
以下の設定ファイルを開きMPMがEVENTになっているのを確認する。

$ sudo vi /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so

HTTP/2用の設定ファイルを作成

設定ファイルを新規追加する。

パラメータ

  • h2(TLS接続)
  • h2c(非暗号接続)
  • H2Direct(HTTP/2でのダイレクト接続の許容の可否)
$ sudo vi /etc/httpd/conf.d/http2.conf
<IfModule http2_module>
    Protocols h2 h2c http/1.1
    H2Direct on
</IfModule>

MariaDBのインストール

$ sudo yum -y install mariadb-server

設定方法は データベースサーバー構築(MariaDB) (CentOSで自宅サーバー構築様) を参照

PHP7.1のインストール(PHP-FPM)

$ sudo yum -y install php71u-mysqlnd php71u-fpm-httpd \
  php71u-cli php71u-mcrypt php71u-gd php71u-xml \
  php71u-mbstring php71u-json php71u-devel php71u-pdo \
  php71u-process

PHP-FPMの設定

実行ユーザ、グループを適切なものに変更します。

実行ユーザをユーザ毎に変えたい(suPHPの様な事をしたい)場合は、その度に設定ファイルを追加してPHP-FPMを再起動してやる必要がありそうです(未確認)。

$ sudo vi /etc/php-fpm.d/www.conf
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = apache
group = apache
$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service

Apache24への設定反映

基本はデフォルトで特に問題ないはずです。

$ sudo cat /etc/httpd/conf.d/php-fpm.conf
# This configuration requires httpd 2.4 with support for UDS (Unix domain
# sockets).  This was added upstream in version 2.4.10, and was also backported
# to 2.4.6 in EL7.

# The following lines prevent .user.ini files from being viewed by Web clients.
<Files ".user.ini">
    Require all denied
</Files>

# Allow php to handle Multiviews.
AddType text/html .php

# Add index.php to the list of files that will be served as directory indexes.
DirectoryIndex index.php

# Enable http authorization headers.
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
    #SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

Let’s Encryptで証明証を発行するためのコマンドをインストール

$ sudo yum -y install certbot python-certbot-apache

証明書発行時に利用する公開ディレクトリの作成と設定

Let’s Encryptがドメイン保有者からの発行依頼であることを確認するためにアクセスしにくるファイルを設置する公開ディレクトリを、サーバ内で共通の場所を使用するようにする(バラバラでも良いが、何かと面倒なので共通化)。

$ sudo mkdir -p /var/www/letsencrypt/.well-known
$ sudo vi /etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known /var/www/letsencrypt/.well-known

証明書の発行と自動更新

証明書を発行する
途中、色々聞かれるが特に難しい事は無い

$ sudo certbot certonly --webroot -w /var/www/letsencrypt/ -d example.net -d www.example.net

証明書を自動で更新するためにcronに以下のように設定を追加する

$ sudo vi /etc/cron.d/certbot
0 5 * * * root certbot renew --quiet

WordPressのインストール
インストール方法は ブログサイト構築(WordPress) (CentOSで自宅サーバー構築様) を参照

※ php-mysqlインストールとApacheの設定は不要

WordPressを公開するVirtual Hostの設定
HTTPで接続してきた場合はHTTPSになるようにリダイレクトします。

HSTSを指定しているので、ブラウザが覚えて常にHTTPSで接続するようになります。

$ sudo vi /etc/httpd/conf.d/virtualhost-01.www.conf
<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.net/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.net/chain.pem

    ServerName example.net
    ServerAlias www.example.net
    DocumentRoot "/var/www/html"

    Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>

Apache24を再起動します。

$ sudo systemctl restart httpd.service

参考サイト

CentOS7 MongoDB3.2 インストール

調べると、まとまったサイトを見つけ出すことが出来なかったのでメモを残しておきます。

リポジトリ追加
$ sudo vi /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

インストール
$ sudo yum install -y mongodb-org

起動と自動起動の有効化
$ sudo systemctl start mongod
$ sudo systemctl enable mongod

管理者アカウントの作成
$ mongo

db.createUser(
  {
    user: "admin",
    pwd: "パスワードを指定してください",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

mongoコマンドを実行すると警告が複数出るためそれの対策を行います
警告の内容についてはメモを残し忘れてしまいました・・・
$ sudo vi /etc/rc.local

# 以下追記
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

$ sudo chmod +x /etc/rc.d/rc.local

$ sudo vi /etc/security/limits.d/99-mongodb-nproc.conf

# ファイルを新規作成して以下を記述
*          soft    nproc     1024
root       soft    nproc     unlimited
mongod       soft    nproc     unlimited

*          soft    nofile    64000
*          hard    nofile    64000

認証の有効化 2.4系の設定が散乱しているようですが2.6系以降は以下の設定を行うようです。
$ sudo vi /etc/mongod.conf

security:
  authorization: "enabled"

未ログイン時
$ mongo

> db.system.users.find()
Error: error: {
        "ok" : 0,
        "errmsg" : "not authorized on test to execute command { find: \"system.users\", filter: {} }",
        "code" : 13
}

ログイン成功時
$ mongo admin -u admin -p

MongoDB shell version: 3.2.10
Enter password:
connecting to: admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "****************", "storedKey" : "****************", "serverKey" : "****************" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }

RTX1200でNTP(SNTP)サーバを建てる

以下のコマンドでSNTPサーバを立てられるようです。

schedule at 1 */* *:00 * ntpdate ntp.nict.jp
sntpd service on
sntpd host lan

毎日0時にNICTのNTPサーバと同期して、LAN内のNTPクライアントからリクエストがあった場合は時刻を返します。

参考サイト
うつくしくいきたい:ヤマハルータ(RTX810)で時刻合わせ – livedoor Blog(ブログ)
38.1 スケジュールの設定
SNTPサーバー機能

RTX1200 L2TP IPsec Windows10から繋げない

RTX1200でL2TPなVPNを繋げるようにしているのですがiPhone, Android, MAC OSXからは繋げるのにWindows10からは繋げない事があったので対策方法をメモしておきます。
現象としてはWindows7では正常に繋げたがWindows10アップグレード後に繋げなくなった感じです。

以下、対応手順です。

  1. 左下Windowsボタンを右クリック
  2. ネットワーク接続(W)を押下
  3. 繋ぎたいネットワークアダプタを右クリック
  4. 以下の画像にある赤枠のチェックボックスにチェックを入れOKを押下

WS000008

これで通常通りタスクトレイ内にあるネットワークインターネットアクセスよりVPNを選択して接続します。
多分、繋げると思います・・・

参考サイト
Windows10のL2TP接続 ■セカイVPN■

SMTP-AUTH設定中にSASL認証をデバッグしてみた CentOS7

SMTP-AUTHに失敗する原因が分からず調べていると、SASL認証のテストを行うコマンド(testsaslauthd)が失敗する事に気づいたので、ちょっと色々とデバッグしてみました。
※ 原因は以下の内容とは無関係でした(一応、最後にちょこっと原因を書いてます)

※ 公開できない情報は以下の伏字にしております

+++ ユーザ名
*** パスワード
ドメイン

失敗時
# testsaslauthd -u +++ -p ***
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416320.791:907): pid=3559 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=? acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=failed'

成功時
# testsaslauthd -u +++ -p *** -s smtp
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416322.210:908): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=pam_unix acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'
type=USER_ACCT msg=audit(1469416322.210:909): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting grantors=pam_unix,pam_localuser acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'

saslauthdをデバッグモードで起動してtestsaslauthdで失敗したコマンド、成功したコマンドをそれぞれ実行します
# saslauthd -d -a pam

saslauthd[3827] :do_auth         : auth failure: [user=+++] [service=imap] [realm=] [mech=pam] [reason=PAM auth error]

なぜか”/etc/pam.d/imap”を見ているらしいが、そんなものは無い・・・

とりあえず、smtpをimapにコピーします
# cp vi /etc/pam.d/smtp /etc/pam.d/imap
# saslauthd -d -a pam

saslauthd[3883] :do_auth         : auth success: [user=+++] [service=imap] [realm=] [mech=pam]

すると認証に通るようになりました
でも自分の環境ではtelnetして直接認証するとError: authentication failed: authentication failureが返ります

・・・以下、後日談・・・

SMTP-AUTHの認証をデバッグ

saslauthd[3611] :do_auth         : auth success: [user=+++] [service=smtp] [realm=...........] [mech=pam]

結論としてはSASL認証自体はしっかりimapではなくsmtpを使用しているので問題ではありませんでした

原因はテストに使用していたクライアントのhostsファイルに全然別のサーバのIPが定義されており
無関係なサーバにつないでいることが原因でした。。。

参考サイト
繰り返し的な処理を自動化する – いますぐ実践! Linuxシステム管理 / Vol.212

Raspberry Pi 3 Raspbian Jessie で Waveshare 3.5インチ タッチ液晶を動かす

Raspberry Pi3のついでにWaveshare 3.5インチ タッチパネル付き液晶を購入したのですが動作させるのに結構苦戦したので手順を残すためにメモしておきます。

このタッチパネル付き液晶モデル(3.2インチ版も含む)の使用方法を紹介しているサイトの多くは
メーカー?が提供しているISOを使ったりLCD-show.tar.gzを使っていたりしますがPi3では起動しなくなるようです・・・

Raspbian JessieのインストールはNOOBSを使いました。
インストール後はLANへの接続と日本語フォントの追加とSSHが有効であるかの確認を行っています。

SPIの有効化とBOOT時のGUIの無効化(CUI+自動ログイン)に変更します。

$ raspi-config

必要なパッケージ群をインストール。

$ sudo apt-get install xinput evtest libts-bin
$ sudo apt-get install fbi

タッチパネル付き液晶への出力設定

何も設定していない場合はfb0しか無いはずです。

$ ls -al /dev/fb*
crw-rw---- 1 root video 29, 0  4月  2 12:41 /dev/fb0

FBTFT関連のカーネルモジュールをロードさせます。
以前は自力で導入する必要があったようですが、現在は標準で含まれているようです。

$ sudo modprobe flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
$ sudo modprobe fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

カーネルモジュールをロードするとデバイスファイルが増えるはずです。

$ ls -al /dev/fb*
crw-rw---- 1 root video 29, 0  4月  2 12:41 /dev/fb0
crw-rw---- 1 root video 29, 1  4月  2 12:41 /dev/fb1

後から追加されたfb1がタッチパネル付き液晶なので試しに画像を表示してみます。

$ wget https://kernel.org/theme/images/logos/tux.png
$ sudo fbi -d /dev/fb1 -T 1 -a tux.png

image3

起動時に自動でモジュールを読み込むように指定します。

$ sudo vi /etc/modules-load.d/waveshare.conf
spi-bcm2835
flexfb
fbtft_device

$ sudo vi /etc/modprobe.d/waveshare.conf
options flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
options fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

起動時からフォントを指定してfb1に出力させるように行末へ以下を追記します。
何だろうと少し調べてみましたが、このfbcon=map:1の役割はcon2fbmapコマンドと同じようですね。

$ sudo vi /boot/cmdline.txt
fbcon=map:1 fbcon=font:ProFont6x11 # 行末に追記します

image1

デスクトップをfb1に出力させながら起動するとタッチパネル付き液晶に表示されるはずです。

$ sudo FRAMEBUFFER=/dev/fb1 startx

image2

デスクトップの出力先をfb1に変更すると再起動後もタッチパネル付き液晶に表示されるようになるのですが
この方法だと、画面が小さすぎて色々と辛いのとHDMIが表示されなくなるので変更しない方法を探しました。

$ sudo vi /usr/share/X11/xorg.conf.d/99-fbturbo.conf
# This is a minimal sample config file, which can be copied to
# /etc/X11/xorg.conf in order to make the Xorg server pick up
# and load xf86-video-fbturbo driver installed in the system.
#
# When troubleshooting, check /var/log/Xorg.0.log for the debugging
# output and error messages.
#
# Run "man fbturbo" to get additional information about the extra
# configuration options for tuning the driver.

Section "Device"
        Identifier      "Allwinner A10/A13 FBDEV"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb0" # <- fb0からfb1に変更する方法もあるけど今回はそのまま

        Option          "SwapbuffersWait" "true"
EndSection

色々と調べてみたんですが
フレームバッファをコピーするfbcpコマンドをインストールすることにより
fb0(HDMI)をfb1(タッチパネル付き液晶)に映せる事が分かったので利用することにしました。

これにより、HDMIに接続して起動しても画面が真っ暗って事もなく
ウインドウ幅が小さすぎて操作が困難という問題を解消できます。

$ sudo apt-get install cmake
$ git clone https://github.com/tasanakorn/rpi-fbcp
$ cd rpi-fbcp/
$ mkdir build
$ cd build/
$ cmake ..
$ make
$ sudo install fbcp /usr/local/bin/fbcp

起動時に実行させる方法で少し悩んだのですが
とりあえず安直にrc.localへ追記しておきます・・・

$ sudo vi /etc/rc.local
su -l pi -c fbcp &

最初で設定したのと逆にraspi-configでデスクトップに自動でログインするように設定を直すと
起動が完了するとタッチパネル付き液晶にデスクトップが映るようなります。

image2(1)

タッチパネルの有効化

このままだとタッチパネルが使えないので設定します。

マウスとキーボードをRaspberry Piに接続している場合は以下のようになっているはずです。

$ ls -al /dev/input/event*
crw-rw---- 1 root input 13, 64  4月  2 14:13 /dev/input/event0
crw-rw---- 1 root input 13, 65  4月  2 14:13 /dev/input/event1

以前はads7846_deviceだったらしいですがads7846に変わったようなので以下のように追記します。

$ sudo vi /boot/config.txt
# 末尾に追加
dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900

キャリブレーションの設定を行うついでに、画面長押しで右クリックになるように追記しておきます。

$ sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
    Identifier "calibration"
    MatchProduct "ADS7846 Touchscreen"
    Option "Calibration" "3873 272 236 3868"
    Option "SwapAxes"    "1"
    # Enable press and hold for right-clicking
    Option "EmulateThirdButton" "1"
    Option "EmulateThirdButtonTimeout" "750"
    Option "EmulateThirdButtonMoveThreshold" "30"
EndSection

ちなみに、waveshare35a-overlay.dtbというデバイスツリーを設置する方法も紹介されていたりいますが
特に設置せずとも動いているようなので私の環境では設置しておりません。

再起動するとタッチパネルを認識してデバイスファイルが増えており、タッチ操作が可能になっていると思います。

$ ls -al /dev/input/event*
crw-rw---- 1 root input 13, 64  4月  2 14:13 /dev/input/event0
crw-rw---- 1 root input 13, 65  4月  2 14:13 /dev/input/event1
crw-rw---- 1 root input 13, 66  4月  2 14:13 /dev/input/event2

image1(2)

その他、スクリーンキーボードのインストール等ありますが、そこら辺は割愛します。。。。

以下、参考サイト
raspberry pi LCDシールド(3.5) [RPiLCD035TP] [3.5inch RPi LCD (A)] 導入 waveshare – Qiita
3.5inch RPi LCD (A) – Waveshare Wiki
Home · notro/fbtft Wiki · GitHub
Raspberry Pi2 3.5inchタッチスクリーンディスプレイの設定 | 猫から星まで
Waveshare3.2インチLCDのセットアップ
Raspberry Piの小さな液晶のPiTFTを仮想画面スクロールで広く使いたかったけど挫折 | matoken’s meme
Raspberry Pi 2にディスプレイをつないでみた! | TONGARISM.COM
千石の4inchタッチディスプレイをRaspberryPi 2 につなぐ – yuki-sato.com
I am getting "FATAL: Module ads7846_device not found." · Issue #260 · notro/fbtft · GitHub
Adafruit customer service forums • View topic – [SOLVED ! ] 3.5" PiTFT resistive Touchscreen – Right-click a

Fedora 23 SELinux が有効な状態で OpenVPN サーバに接続する

setenforceコマンドでPermissiveモードにして実際にOpenVPNに繋に行かせた時のログを元に
SELinux ポリシーの許可ルールを生成します

journalctl | grep openvpn | audit2allow -M openvpn_user_home

生成された.teファイルを開くと、どのようなルールが生成されたか確認できます

cat openvpn_user_home.te
module openvpn_user_home 1.0;

require {
	type openvpn_t;
	type user_home_t;
	class file open;
}

#============= openvpn_t ==============
allow openvpn_t user_home_t:file open;

生成されたルールに問題がなければ適用します

sudo semodule -i openvpn_user_home.pp

ESXi 6.0 u2 で vSphere Web Client と似た Web UIを無料で使う方法

先日、公開されたESXi6.0 update2にESXi Embedded Host Clientが含まれているようです。

ESXi Embedded Host Client – VMware Labsで公開されていた時は無償ライセンスだと
ISOのマウントどころかVMの電源管理すらライセンスエラーとのメッセージが出て使いない状態でした。

この機能が無償ライセンスでも利用できることがわかりましたのでアップグレード方法を載せておきます。
今回は、ESXi6.0 u1b から ESXi6.0 u2にアップデートしました。

VMWareのサイトからupdate-from-esxi6.0-6.0_update02.zipという名前のパッチをダウンロードします。
② ダウンロードしたパッチをESXi上のデータストアにアップロードします。
③ ESXi上にいるVMを全てシャットダウンします。
④ SSH、ESXiシェルを起動します。
⑤ メンテナンスモードにします。
⑥ SSHで接続して以下のコマンドを実行します。

# パッチまでのパスは必ず絶対パスである必要があります。
esxcli software profile update -d /vmfs/volumes/datastore1/update-from-esxi6.0-6.0_update02.zip -p ESXi-6.0.0-20160302001-standard

⑦ パッチの適用が終わったらメンテナンスモードを解除して再起動します。

https://ESXi6.0u2のホスト名/ui/ にアクセスすると以下のような画面が表示されます。
vSphere Client で使用するアカウントでログインします。
Screenshot from 2016-03-19 23-40-47

まだ、vSphere Clientで出来る事、全てができるわけではなさそうですが一通りの機能は利用できそうです。
Screenshot from 2016-03-20 00-08-21

ESP-WROOM-02を購入してみました

Raspberry Pi Zeroが結構話題になっておりますが使い道が思いつかず手が出せていなかったところ
Wi-Fiに接続でき、Arduino IDEで手軽に開発できて500円くらいで買える凄いモジュールを教えていただいたので購入してきました。

STEINS○GATEに出てくる”未来ガジェット研究所”の近くに行けばaitendoさんの店舗だったよな・・・
と記憶を辿って行ってみるとシャッターが閉まっており、調べたら移転されていたようでした。

新店舗なのですが、いっそう店内の商品が充実しており思わず財布の紐が緩みそうでした。

いくつかピッチ変換基板が発売されていますが今回はIFB1518J-Aを購入しました。
肝心のESP-WROOM-02なのですが、店舗販売価格だと特価で500円で売られておりました。
IFB1518J-Aが120円なので10kΩのチップ抵抗ふくめると、ひとセットあたり620円とチョットで買えました。
image

半田付けするために3Dプリンター用に買っていた耐熱マスキングテープで固定しました。
半田のノリを良くするために無水エタノールで接着面を磨いてフラックスも足に塗っておきます。
image

小手先に多めに半田を盛って十分加熱しながらゆっくりスライドさせて半田を乗せれば完成です。
image

裏面にENとRSTピン用のプルアップ抵抗を取り付けるためのパターンがあるのでチップ抵抗(10kΩ)を載せます。
もちろん無水エタノールで磨いてフラックスを塗っておきます。
image

片方を適当に半田で接着したあとに、小手先で加熱しながらピンセットでズラして正しい位置に合わせます。
正しい位置で固定できたら反対側も手早く半田を盛れば完成です。

ついでに、GPIO2は常にHigh、GPIO15は常にLowで良いようなのでショートさせておきます。
というのもESP-WROOM-02にはスケッチを書き込むモードと書き込んだスケッチを実行するモードがあり以下のような操作が必要なようです。

UART Download Mode(スケッチを書き込むモード)
GPIO0(Low) GPIO2(High) GPIO15(Low)

Flash Boot Mode(書き込んだスケッチを実行するモード)
GPIO0(High) GPIO2(High) GPIO15(Low)

※ よってGPIO0とRSTにはHigh/Lowを切り替えられるようにスイッチをつなぐ必要があるようです。

image

最後に、基板に付いたフラックスを無水エタノールで拭いておくと綺麗に仕上がります。