カテゴリー: ガジェット Page 17 of 85

保護と装飾。

中古ノートPC、普段使いに耐えうる性能だということが改めて判明したので、更に使い回すための準備を行いました。

PCバッグ

過日の統率者&ボードゲーム会に行く際に見つけたものです。

クッション地が入っているキャリングケース。

この、13.3型が余裕ではいるサイズを備え、

持ち手が収納できるのでインナーとしても手提げとしても利用可能です。

マウス、アダプターの収納スペースも有する破格の500円商品でした。

天板装飾

こちらはお約束のシール貼り。

緑をベースにした装飾です。パームレストにフィットするサイズのものがあって助かりました。

汚れをある程度隠し、自分のものだと主張もできるので、これは割と必要な措置でした。

ノートPCの追加アクセサリ。

こちらの中古Let's note、OSの設定が完了したので持ち歩くための準備を行いました。

Bluetoothスピーカー

AnkerのSoundcoreです。デタッチャブルという構造上、スピーカーが弱かったので買い足すことにしました。

小型ながら迫力のサウンドで、バッテリー駆動というのもポイントが高いです。

Bluetoothマウス

ホイールパッドに不慣れなのでマウスも追加。色が好みであることと、消耗品であると割り切ったものを選びました。

上記2つ、出先での検証は間を置いてから書ければいいなと思っています。

ペンケースのハードポイント。

こちらに素敵な機能が備わっていました。

ストラップやキーホルダーを付けられる留め具です。

作成者の「色々と飾りたいでしょう」という心遣いに感謝すると共に、早速、

取り付けです。熊の爪は昨年、温泉に訪れた折に買ったものだったりします。

こういう、思い入れの小物やらが側にあると、モチベーション維持に発揮してくれます。

Redmine 5.1でのリマインダー設定。

概要

Redmine 4.1と同じような仕組みが構築できました。

前提

Redmineでメール送信ができることです。

手順

スクリプトを作成します。

  • ファイル名 `redmine_reminder.sh`
  • スクリプト内容
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

cd /home/www-data/redmine
# 自分が格納しているRedmineのルートディレクトリ
bundle exec rake redmine:send_reminders days=7 RAILS_ENV=production
# この例では7日前に通知します。days=nの部分を変えることで日数を指定できます

作成後、以下を実行して実行権限を付与します。

sudo chmod +x redmine_reminder.sh

  • Crontab編集
sudo crontab -l -u -root
  • 記入例
30 15 * * * /path/to/script/directory/redmine_reminder.sh
# スクリプトを格納したディレクトリを指定します

編集後、指定した時刻にメールが送られてくれば成功です。

ペンケース、新調。

10年以上にわたって使っていたペンケース。こちらのへたりや汚れが目立ってきたので、どうしたものかと思っていたところに

作ってもらいました。大きなペンケースです。

マチは十分に広がり、そのままペントレーとしても使えます。

  • 容量
  • 視認性
  • 機能性

バッチリで文句なしです。

それ以上に嬉しいのが、

以前作ってもらった手帳ケースと同じ生地ということ。鞄の中でも見つけやすく、机でも存在感が増します。

BookStackをnginxで動かす場合の設定。

デスクトップPCとしてのLinux利用(Kubuntu 22.04インストール後にやったこと) – Manualmaton's Laboratory

こちら、ローカルサーバとして運用することにしています。

公開しているサイトと異なりnginxで動かしているので、その場合のメモです。

環境

  • Ubuntu 22.04
  • 適切に名前解決できる
  • ドメイン名に沿った証明書がある
    • 筆者はmkcertでローカル証明書を作っています

インストールして最初の設定が終わっている状態です。

nginxインストール

sudo aptitude install nginx

mysqlインストール

sudo aptitude install mysql-server mysql-client libmysqlclient-dev

sql設定変更

sudo cp -pi /etc/mysql/mysql.conf.d/mysqld.cnf /path/to/backup/mysqld.cnf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。
# .$(date +%Y%m%d)をつけることで、バックアップファイルは当日日付(YYYYMMDD形式)で記録されます

diff -u /etc/mysql/mysql.conf.d/mysqld.cnf /path/to/backup/mysqld.cnf.$(date +%Y%m%d)
# バックアップが取れていることを「差分が存在しないこと」で確認します

echo -e "default_authentication_plugin=mysql_native_password" | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf
# mysqld.cnfに追記をします

MySQL再起動

sudo systemctl restart mysql.service

MySQLのrootパスワード変更

sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;
exit

運用に合わせて適切なパスワードを設定します。

mysql-secure-installation

sudo mysql_secure_installation

詳しい設定は以下に記しています。

https://atelier.reisalin.com/projects/zettel/questions/5-mysql_secure_installation

phpのインストール

https://barrel.reisalin.com/books/nextcloud/page/1-1-nextcloud

自サイトを参考にしていますが、一部異なります。

PHPレポジトリを追加して必要パッケージをインストールします。

  • レポジトリ追加
sudo add-apt-repository ppa:ondrej/php

Ubuntu20.04系ではこれを行わないとPHP7.4系しかインストールされません。

  • パッケージアップデート
sudo aptitude update
  • php インストール
sudo aptitude install php8.1
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml,dev,fpm}
#fpmを入れる必要あり

nginx環境でも動かすため、php(バージョン)-.fpmを入れます。

  • apache無効化
sudo disable apache2.service

依存関係でapache2も一緒にインストールされるので、ここで停止させます。

Composerインストール

https://barrel.reisalin.com/books/bookstack/page/bookstackubuntu2004

同じくこちらにメモを残しています。

  • インストール
  • ディレクトリ移動
cd /hoge

任意の作業ディレクトリに移動します

  • インストーラーのダウンロード
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  • インストール
sudo php composer-setup.php
  • インストーラーのリンク解除
sudo php -r "unlink('composer-setup.php');"
  • コマンドのパスを移動
sudo mv composer.phar /usr/local/bin/composer
  • composerに実行権を付与
sudo chmod +x /usr/local/bin/composer
  • バージョン確認
composer --version

バージョンが表示されることを確認します。

DBを作成します。

  • mysqlログイン
mysql -u root -p
CREATE DATABASE bookstack character set utf8mb4;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON bookstack.* TO 'bookstackuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

DB名/パスワードはポリシーに応じて適切なものを指定します。

BookStackの配置

  • プログラム配置
cd /home/www-data
# パーティションの都合上、/home/www-dataに置いています。
# 環境に合わせて適切なWebサービス公開ディレクトリを指定してください。

sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch 
sudo chown -R www-data:www-data BookStack
cd BookStack
  • 設定ファイル編集
sudo cp -pi .env.example .env

教義・信仰に沿ったエディタで以下を編集します。

APP_URL=https://hoge.example.com
# 公開用URLを指定します

# Database details
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=password
# DB名、パスワードなどは先ほど作成したものです。
  • マイグレート
sudo -u www-data composer install --no-dev --optimize-autoloader
sudo -u www-data php artisan key:generate
sudo -u www-data php artisan db:seed --force
sudo -u www-data php artisan migrate --force

Nginx設定

  • 設定ファイル作成
    • /etc/nginx/site-available/bookstack.conf
  • ファイル内容
server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    # サーバ名を指定します。
    server_name  hoge.example.com;
        server_tokens off;
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
        add_header Strict-Transport-Security 'max-age=63072000';

    # 任意のログディレクトリを指定します。
    access_log  /var/log/nginx/bookstack/access.log;
    error_log   /var/log/nginx/bookstack/error.log;
    # SSL証明書を指定します。
    ssl_certificate      /path/to/ssl_certificate/hoge.crt;
    # SSL秘密鍵を指定します。
    ssl_certificate_key  /path/to/ssl_key/hoge.key;

    # BookStackが置かれているディレクトリです。/publicは必ず指定します。
    root /home/www-data/BookStack/public;
    index index.php index.html;

    location / {
      try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param PATH_INFO $fastcgi_path_info;
      fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

# 強制的にhttps通信
server {
    listen       80;
    listen       [::]:80;
    server_name  veritas.lumos;
    return 301   https://$host$request_uri;
}

nginx設定を有効化します。

  • ディレクトリ移動
cd /etc/nginx/sites-enabled
  • 初期設定ファイルを無効
sudo unlink default
  • 設定有効化
sudo ln -sf /etc/nginx/site-available/bookstack.conf bookstack.conf
  • 構文チェック
sudo nginx -t

エラーがないことを確認します。

  • nginx再起動
sudo systemctl restart nginx.service

インストール確認

設定したドメインにブラウザでアクセスし、ログイン画面が出てくれば成功です。

Linuxを入れたLet’s noteにWebアプリを導入。

週末はこちらの設定をずっと行っていました。

Growiのインストール

これは絶対に行いたいものでした。「個人のWiki/メモサイト」という性質上、宅内NWにしか置けなかったものです。

しかし、階層ごとに文書を管理したり、各種Markdownの入力補助が豊富なこのシステムは一丁目一番地として導入したいと考えていました。

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/77

のサイトを参考に、ローカルホストでのみ動くGrowiがようやく完成です。

BookStack

これもこれで入れておきたいシステム。Growiが日付ごとの記録を行ってくれるなら、こっちは分野ごとの整理にちょうどいいのです。

https://barrel.reisalin.com/books/bookstack/chapter/1bookstack

こちらの自サイトを参考にインストールしていったものの、Growiのリバースプロキシにnginxを利用したため、導入は少し勝手が違いました。

その当たりのルールは改めて記述するとして

無事、動いたことが確認できて良かったです。

デスクトップPCとしてのLinux利用(Kubuntu 22.04インストール後にやったこと)

概要

中古のLet's noteにKubuntu 22.04を入れたので、デスクトップPCのセットアップを行いました。

デスクトップ側での手順-1-

SSHのインストール

同一NW内のデスクトップなので、リモートアクセスで操作しやすいようにします。

sudo aptitude install ssh

リモート側(クライアント)でのSSHを利用してのインストール

ここからはSSHでログインして作業を行います。

パッケージ一新

sudo aptitude upgdate && sudo aptitude upgrade
  • 再起動
sudo reboot

日本語入力化

Kubuntuは何故か日本語入力システムがインストールされていません。

sudo aptitude install fcitx-mozc

Edgeインストール

好みの問題でEdgeを入れます。

  • 必須パッケージを入れる
 sudo aptitude install git build-essential apt-transport-https 

この機会に開発パッケージも入れます。

  • リポジトリ鍵追加
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
  • リポジトリ追加
 sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main"
  • リポジトリ追加後のパッケージアップグレード
sudo aptitude update
  • インストール
sudo aptitude install microsoft-edge-stable

Linuxデスクトップ再起動

sudo reboot

デスクトップ側での手順-2-

  1. Linuxデスクトップにログインします。
  2. 日本語入力ができることを確認します。
  3. ブラウザがインストールできることを確認します。

中古PCの入手とLinuxインストール。

きっかけ

ChromebookでのLinux運用が厳しくなってきたことがまずありました。

Play Storeでアプリは揃えられるものの、一部がスマートフォン専用だったり、ファイル操作に難があるというのにも難がありました。

そんな矢先、Windows10のサポート終了が近づいているのでWindows11未対応のノートPCが市場にかなり出回るようになってきたという話を聞き、秋葉原で発見。

Let's note CF-XZ

Let's noteのCF-XZです。

  • Core i-5 7300
  • 8GB Memory
  • 256GB SSD

と、基本的なスペックはあります。

こちらのRELEASEが示すように画面自体が取り外せる(つまり、画面自体をタブレットとして利用可能。

Linuxインストール

  • 通常と異なる機能が備わっている
  • 画面タッチは対応しているのか
  • そもそもインストールできるのか

がLinux化の懸念点ではありましたが、Kubuntu 22.04は正常にインストールできました。

  1. 公式サイトからイメージをダウンロード
  2. Rufusを使ってブートドライブ作成
  3. ノートPCのBIOSを起動
  4. ブートドライブから起動
  5. インストーラーの指示に従う(デュアルブートは考えていません)

で、無事にインストール完了。無線LANは確認しました。(優先はこれから確認です)

画面の切り離しやタッチ操作なども可能でした。

これから

  • 完全なローカルサーバ化
  • Webアプリのインストール
  • その他、検証

など、すき煮やっていく予定です。

シェルスクリプト:秘密鍵を用いたLinuxサーバへのログインスクリプト。

概要

SSH接続しているLinuxクライアントから別のLinuxサーバにSSHログインする際の効率化を図るスクリプトです。

通常のコマンドを用いた秘密鍵を用いたアクセス

ssh -i /path/to/private_key username@server_host

と、-iの後に秘密鍵を指定し、ユーザ名@サーバ名/IPアドレスを入力するのはちょっと面倒なので、コマンド一発で接続できるようにします。

前提

  • Linuxサーバの秘密鍵を有していること。
  • 秘密鍵に適切なパスワードがかけられていること。

スクリプト

  • ssh_server.sh

serverの部分を任意のホスト名にすると便利です

#!/bin/bash

# 変数定義
## 接続先のサーバ名/IPアドレス
server_host="your_server_host"
## 接続先でログインするアカウント名
username="your_username"
## 秘密鍵のファイルパスを絶対パスで表記
private_key_path="/path/to/private_key"
## 接続時間を記録するログのディレクトリパスを絶対パスで表記
log_directory="/path/to/logs"


# ログディレクトリが存在しない場合は作成する
if [ ! -d "$log_directory" ]; then
    mkdir -p "$log_directory"
fi

# 現在の日付と時刻を取得
current_datetime=$(date +"%Y%m%d%H%M")

# ログファイルのパス
log_file="$log_directory/$server_host$current_datetime.log"

# 秘密鍵の存在チェック
if [ ! -f "$private_key_path" ]; then
    echo "$(date): Error - 秘密鍵ファイルが見つかりません: $private_key_path" >> "$log_file"
    exit 1
fi

# 秘密鍵のパーミッションが600であるかのチェック
if [ $(stat -c %a "$private_key_path") -ne 600 ]; then
    echo "$(date): Error - 秘密鍵のパーミッションが正しくありません (600 である必要があります): $private_key_path" >> "$log_file"
    exit 1
fi

# SSH接続
echo "$(date): SSH接続を試行します: ssh -i $private_key_path $username@$server_host" >> "$log_file"
ssh -i "$private_key_path" "$username@$server_host"
echo "$(date): SSH接続が正常に終了しました" >> "$log_file"
  • 実行権付与
chmod +x ssh_server.sh

動き

./ssh_server.sh

を実行後、秘密鍵のパスワード入力画面が出てきます。認証後、接続先のプロンプトが返ってくれば成功です。

Page 17 of 85

Powered by WordPress & Theme by Anders Norén