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

Ubuntu 22.04に資産管理システム『Snipe-IT』をインストール。

環境

前提

  • ドメインで名前解決できること
  • そのドメインに即した証明書があること

さっくりとした手順

  1. Snipe-IT用のDBを作成します。
  2. Snipe-ITをダウンロードします。
  3. Composerでインストールを行います。
  4. Apacheの設定を行います。
  5. Web画面からインストールを行います。

手順

  • Web画面以外はSSH/ターミナルで操作を行います。
  • Apacheの実行ユーザはwww-dataです。自分の環境に合わせます。

MySQLでDB作成

  • コンソールログイン
mysql -u root -p
  • DB作成
CREATE DATABASE snipeit character set utf8mb4;
CREATE USER 'snipeit'@'localhost' IDENTIFIED BY 'password';

この'password'は任意のパスワードに変更してください

GRANT ALL ON snipeit.* TO 'snipeit'@'localhost';
flush privileges;
exit
  • DB作成確認
  • 設定したパスワードでログインできることを確認
mysql -u snipeit -p
  • DB確認
SHOW DATABASES;

snipeitがあることを確認

  • ログアウト
exit

プログラム配置

  • Webサイト配置ディレクトリに移動
cd /home/www-data && pwd

自分の環境に合わせます。

  • ダウンロード
sudo -u www-data git clone https://github.com/snipe/snipe-it snipe-it
  • ディレクトリ移動
cd snipe-it
  • .envを作成
sudo cp -pi .env.example .env
  • .env修正

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

  • 修正箇所
APP_URL=http://ドメイン名

snipe-itを動かすドメイン名です。

APP_TIMEZONE='Asia/Tokyo'

タイムゾーンを指定します。

DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD= 

DB名/ユーザ名/パスワードは上述したDB作成で指定したものです。

修正後、.envを保存します。

composerでsnipe-itインストール

  • 依存関係のアップデート
sudo -u www-data composer update --no-plugins --no-scripts
  • インストール
sudo -u www-data composer install --no-dev --prefer-source --no-plugins --no-scripts
  • APPキー作成
sudo -u www-data php artisan key:generate

途中のプロンプトには「yes」を入力します。

バーチャルサイト作成

  • ログ格納ディレクトリを作成
sudo mkdir -p /var/log/snipeit

※自分の環境に合わせます。

  • ログ格納ディレクトリの権限変更
sudo chown -R www-data:www-data /var/log/snipeit
  • バーチャルファイル作成
  • Snipe-IT用の設定ファイル作成
  • 【】の箇所は、自分の環境に合わせて修正してください。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/snipeit.conf
<VirtualHost *:80>
    # ドメイン名を指定します
    servername 【hoge.example.com】
    # HTTPアクセスを強制的にHTTPSにリダイレクトします
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    # ドメイン名を指定します
    ServerName 【hoge.example.com】
    # 上述したログディレクトリを指定します。
    CustomLog /var/log/snipeit/snipeit_access.log combined
    ErrorLog /var/log/snipeit/snipeit_error.log

    # Snipe-ITのプログラムを配置したディレクトリを指定します。
    DocumentRoot 【/home/www-data/snipe-it/public】
    <Directory 【/home/www-data/snipe-it/public】>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>

#SSL設定
  SSLEngine on
    Protocols h2 http/1.1

    # SSL証明書を指定します
    SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
    # 秘密鍵を指定します
    SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】

    # 中間証明書が発行元から別ファイルで提供されている場合は、このすぐ下をコメントアウトして中間証明書を指定します
    # SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】

#セキュリティヘッダー付与

    Header always set Strict-Transport-Security "max-age=63072000"
    Header set X-Content-Type-Options "nosniff"
    Header always append X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"

</VirtualHost>

# これらのセクションはSSL暗号化強度を高めるための記述です
# </VirtualHost>の外側に書くことにご注意ください

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
__EOF__
  • コンフィグ有効化
sudo a2ensite snipeit.conf
  • コンフィグの文法確認
sudo apache2ctl configtest

Syntax OKを確認します

  • apache再起動
sudo systemctl restart apache2.service

Web画面からの設定確認

ブラウザで

https://設定したURL

にアクセスします。

ここまで来れば目前です。ガイダンスに従って管理者情報などを入力。

このようなダッシュボードが確認できればインストール成功です。

百均グッズで作るキーホルダー。

作りやすく、視認性も良かったです。

フォトホルダー

単に、フォトフレームにカラビナ風の留め具がついているだけ。

写真サイズは4.9cm×3.4cm。その写真を用意します。(Wordに貼り付けてサイズを調整するのが手っ取り早いです)

蓋を開けてカットした写真を枠内に収めます。蓋をすれば完成。

ペンケースに取り付けです。

取り付けたものが大きいので相対的に小さく見えますが、割と大きめ。

ペンケースとボトル。

アベイルでの特価品コーナーで売られていたので入手です。

弁当型ペンケース

遠目では「弁当が何故こちらに?」でしたが、実際はペンケース。

中身は街も深く、大きめのペンケースです。

メインで持ち運んでいるペンケースの他に

  • スティック糊
  • カッター
  • ハサミ

等を入れたかったので、このぐらいのサイズはちょうど良く。

蓋をするとこの形です。

中身が見えるペンケースを探していたけど、百均のようにオールクリアなのはちょっとと思っていただけに、渡りに船です。

9と3/4ステンレスボトル

こちらも入手。『ハリー・ポッター』作中、ホグワーツ特急の発着駅である9と3/4プラットフォーム。そのロゴ入りのマグボトル。

値引き額は3/4ではなく2/3引きぐらい。

実際に現地でも訪れた場所でもあるので、これもまた手元に置いて良かったヤツです。

BookStackにGoogleフォントを設定。

こちらでBookStackに任意のフォントを設定する方法を説明しましたが、

Webで公開されているGoogleフォントに置き換えます。

設定

管理者権限でログイン後、
設定>カスタマイズ>カスタムheadタグに進みます。

以下のコードを入れます。

<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap" rel="stylesheet">
<style>
body, h1, h2, h3, h4, h5, h6 {
font-family: 'Noto Sans JP', sans-serif;
}
</style>

ここでは Noto Sans JPを入れています。適宜合わせてください。

設定後、

のように、Googleフォントに変わっていれば設定完了です。

ChatGPTによるスクリプト修正。(通貨変換)

海外通販で、ドル円計算が面倒なのでスクリプト化。

以前、ChatGPTで作成した通貨変換スクリプトを、以下のようにChatGPT自身に修正してもらいました。

  1. CSVへの記録ではなく、○ドル◆円のように表示する。
  2. 通貨ペアの変換前の数値をプロンプトで尋ねる。(空白エンターは1)
  3. その数値で計算する。(例えば3ドル○円など)

修正した結果がこちらです。

スクリプト内容

  • currency_check.sh
#!/bin/bash

#### 変数定義ここから #####
# 通貨ペアの変換前の数値を取得する。
read -p "変換したい通貨の数値を入力してください(空白エンターは1): " conversion_factor
if [ -z "$conversion_factor" ]; then
    conversion_factor=1
fi

# 通貨ペアを変数化する。
# USDJPY=ドル円
# EURUSD=ユーロドル
# など、以下のURLに沿ったものを指定
base_currency="USD"
target_currency="JPY"
#### 変数定義ここまで ####

# 1. コマンドを実行してデータを取得し、標準エラー出力を/dev/nullにリダイレクトする。
data=$(wget -O - -U "" http://www.gaitameonline.com/rateaj/getrate 2> /dev/null)

# 2. 現在時刻を取得する。
date=$(date '+%Y/%m/%d')
time=$(date '+%H:%M')

# 3. 指定された通貨ペアの情報を取得する。
currency_data=$(echo "$data" | grep -o '{"high":"[0-9]*\.[0-9]*","open":"[0-9]*\.[0-9]*","bid":"[0-9]*\.[0-9]*","currencyPairCode":"'$base_currency$target_currency'","ask":"[0-9]*\.[0-9]*","low":"[0-9]*\.[0-9]*"}')

# 4. 必要な情報を取り出し、並び替える。
currencyPairCode=$(echo "$currency_data" | grep -o 'currencyPairCode":"'$base_currency$target_currency'"' | cut -d ':' -f 2 | tr -d '"')
open=$(echo "$currency_data" | grep -o 'open":"[0-9]*\.[0-9]*"' | cut -d ':' -f 2 | tr -d '"' | awk -v cf="$conversion_factor" '{printf "%'\''0.2f", $1 * cf}')
high=$(echo "$currency_data" | grep -o 'high":"[0-9]*\.[0-9]*"' | cut -d ':' -f 2 | tr -d '"' | awk -v cf="$conversion_factor" '{printf "%'\''0.2f", $1 * cf}')
bid=$(echo "$currency_data" | grep -o 'bid":"[0-9]*\.[0-9]*"' | cut -d ':' -f 2 | tr -d '"' | awk -v cf="$conversion_factor" '{printf "%'\''0.2f", $1 * cf}')
ask=$(echo "$currency_data" | grep -o 'ask":"[0-9]*\.[0-9]*"' | cut -d ':' -f 2 | tr -d '"' | awk -v cf="$conversion_factor" '{printf "%'\''0.2f", $1 * cf}')
low=$(echo "$currency_data" | grep -o 'low":"[0-9]*\.[0-9]*"' | cut -d ':' -f 2 | tr -d '"' | awk -v cf="$conversion_factor" '{printf "%'\''0.2f", $1 * cf}')

# 5. 結果を表示する。
echo "$date $time ${conversion_factor} $base_currency は $target_currency で以下の通りです。"
echo "始値: $open $target_currency"
echo "高値: $high $target_currency"
echo "売値: $bid $target_currency"
echo "買値: $ask $target_currency"
echo "安値: $low $target_currency"
  • 実行権付与
chmod +x currency_check.sh

動き

./currency_check.sh
変換したい通貨の数値を入力してください(空白エンターは1): 74
2024/03/13 14:25 74 USD は JPY で以下の通りです。
始値: 10,926.10 JPY
高値: 10,926.10 JPY
売値: 10,924.62 JPY
買値: 10,925.36 JPY
安値: 10,895.02 JPY

と、ブラウザを開くことなく結果が出るようになりました。

Linuxコマンド:ansiweatherのチートシート。

コマンドライン上から簡単な天気予報を行えるansiweatherのちょっとした早見表です。

主なオプション

オプション説明
-l location場所を指定します。city,CCの形式で、CCは国コードです
-u system単位系を指定します。metricかimperialです
-f days予報モードを切り替えます。指定した日数分の予報を表示します
-F予報モードを切り替えます。次の5日間の予報を表示します
-a valueANSIカラーの表示を切り替えます。trueかfalseです
-s value記号の表示を切り替えます。trueかfalseです
-i valueUVインデックスの表示を切り替えます。trueかfalseです
-w value風のデータの表示を切り替えます。trueかfalseです
-h value湿度のデータの表示を切り替えます。trueかfalseです
-p value気圧のデータの表示を切り替えます。trueかfalseです
-d value日の出/日の入りのデータの表示を切り替えます。trueかfalseです
-vバージョンを表示します

実行例

  • 東京の現在の天気を絵文字付きで表示
ansiweather -l Tokyo,JP -s true

 Weather in Tokyo => 9 °C ☔ - Wind => 3.6 m/s ESE - Humidity => 69 % - Pressure => 1002 hPa 
  • ロンドンの5日分の天気予報を表示
ansiweather -l London,UK -F

 London forecast => Fri Mar 08: 9/5 °C - Sat Mar 09: 12/7 °C - Sun Mar 10: 9/6 °C - Mon Mar 11: 9/6 °C - Tue Mar 12: 11/5 °C 
  • 尾道の日の出・日の入りを表示
ansiweather -l Onomichi,JP -d true

 Weather in Onomichi => 7 °C - Wind => 7.31 m/s WNW - Humidity => 50 % - Pressure => 1013 hPa - Sunrise => Mar 08 06:27:27 AM - Sunset => Mar 08 06:08:49 PM

このあたりをmotodに仕込んでおくと、ログインのたびに天気予報が表示されるので便利です。

xmlフィードから最新の見出しを表示するスクリプト。

スクリプト概要

  1. BBCのRSSフィードをcurlする
  2. そこから指定の見出しを持ってくる

スクリプトの内容

  • bbc_headline.sh
#!/bin/bash

# セクションを指定
section="world"  # ここでセクションを変更

# BBC NewsのRSSフィードから見出しを取得
url="https://feeds.bbci.co.uk/news/${section}/rss.xml"
headlines=$(curl -s "$url" | grep -E '<title>' | sed -n 's/.*<title><!\[CDATA\[\(.*\)\]\]><\/title>.*/\1/p' | sed -n '2,4p')

# 見出しを表示
echo "BBC News - ${section} section"
echo "$headlines"
  • 実行権付与
chmod +x bbc_headline.sh

実行例

  • コマンド実行
./bbc_headline.sh
  • 表示結果
BBC News - world section
'We know what's coming': East Ukraine braces for Russian advance
Trump challenges Biden to TV debates 'anytime'
Australian charged over high-profile disappearance

コマンドベースでブラウザを実行するなく見出しだけでも確認できます。

Nextcloud、Recognizeのエラー解消。(機械学習モデルのダウンロード)

環境

  • Ubuntu 22.04
  • Nextcloud 28.03

の環境で、画像の自動タグ付けアプリ『Recognize』を利用しています。

Nextcloudを28.03にアップデート後、以下のエラーが出たので対処を行います。

エラー内容

管理者権限でログイン後、管理>Recognizeと進むと以下が出てきました。

The machine learning models still need to be downloaded.

対処

こちらのサイトに出てきた方法をそのまま使いました。

https://help.nextcloud.com/t/machine-learning-models-still-need-to-be-downloaded/151566

ディレクトリ移動

cd /home/www-data/nextcloud/ && pwd

Nextcloudがインストールされているディレクトリに移動します。

occ実行

sudo -u www-data php occ  recognize:download-models

※5~10分ぐらい時間がかかりました。

エラー解消確認

上記コマンド終了後、再びNextcloudにログインして管理>Recognizeと進みます。

機械学習モデルのダウンロードが正常に終了しました。

と出たのでエラーは解消です。

平日朝の喫茶店。

やりたいことが一つ叶いました。

中古のノートPCを手に入れ、整備したのが先月の出来事。

思いの外出来が良かったので、これを持って実用に耐えられるかどうかの検証を行いました。

というのは口実で、

コメダのモーニング

朝からガッツリ、コメダで食べたいという理由付けの一つです。

モーニングセットや食事のグラタンを食べながら、PCを広げる。

相当な英気を養っています。

Markdown形式で文字色を入れる。

使う機会が発生したのでメモです。

やりかた

- <span style="color: red; ">赤い文字</span>
- <span style="color: orange; ">黄(オレンジ)文字</span>
- <span style="color: blue; ">青の文字</span>

と、`<span style="color: red; ">`のように囲んでいきます。

結果

と表示されます。

WYSIWYGエディタではなく、マークダウンでも文字色は変えられたという自分にとっての気づきでした。

Page 15 of 85

Powered by WordPress & Theme by Anders Norén