WPP
Linux Mint 21.3 Virginia の pipenv でエラー + Python バージョンを切り替えられるようにする

python の開発環境は pipenv を使っているのですが、Linux Mint の標準リポジトリに入っている pipenv だとエラーになって動かない。

入っている Python は 3.10 。ネットを検索してみると pipenv が古いとかなんとか。。。一旦消して pip でインストールし直すのがいいらしいのでやってみた。

$ sudo apt install pipenv-

# python3 しかはいっていないので pip3 とする必要はない pip で OK
$ pip install pipenv

これで解決。

ついでに Python バージョンを切り替えられるようにしておく。pyenv でもいいのですが、今回は update-alternatives にします。というのもこの辺のツールの移り変わり早いので廃れるとわりと放置されがち、ちょっと時間経つと面倒なことになる印象があります。

update-alternatives なら Ubuntu 系の OS では他のコマンド切り替えるためにも使われているっぽいのでだいじょぶそうじゃないかと。。。

# 末尾が優先度で多きい方が優先らしい
$ sudo update-alternatives --install /usr/bin/python python3 /usr/bin/python3.10 110
$ sudo update-alternatives --install /usr/bin/python python3 /usr/bin/python3.11 100

# リストが出てくるので [selection] の数字を選ぶと切り替わる
$ sudo update-alternatives --config python

参考

Ubuntu 22.04にPython3.xを複数インストールして切り替える方法(PPA・apt) #Python – Qiita

NoMachine をヘッドレスに設定する

以前もこのネタを書いていたのだが、WordPress を飛ばして記事ごとなくなったので再度メモする。

例によって参考リンクまんまなのだが、いちいち探すよりここにおいた方が自分が楽なので記事にします。

ポイントは

  • xserver-xorg-video-dummy をインストールする
  • /usr/share/X11/xorg.conf.d/20-dummy.conf ファイルを作成する
  • xrandr で表示したい解像度を追加する
  • PC再起動

20-dummy.conf の記述は参考リンクを見て適当に。

/usr/share/X11/xorg.conf.d のパスをいつも忘れてしまい、 /etc/X11 下に置いてしまっていたのでメモ。

参考

物理モニタなしでNoMachine → 問題発生 | JI1OREのブログ

物理モニタ無しでx11vnc #ubuntu20.04 – Qiita

NoMachine – ArchWiki

WebDAV で同期できる Floccus ブックマーク同期アプリを入れてみた

さて、今日は222で猫の日だそうです。ちょっとくるしいよね、そんな話はどうでもいい。

ブックマークを同期する為に aquatix/digimarks: Simple bookmarking service という python 製の Web アプリを使っていたのですが、スマホで Web を見ている時の保存動作がちょっと面倒でした。

また、先日 ROCK64 を OS からまるごとインストールして Bookworm に更新したのですが、インストールと設定がちょっと面倒になってきたので別のものを探してみた。

AlternativeTo を検索してみる。

移転先候補の1つに NextCloud のブックマーク機能があったが、そもそも NAS 使っているのに機能的に丸かぶりじゃね? AlternativeTo で検索してみるとこんなのが見つかった。

  • Firefox Sync
  • Floccus
  • Otter – BookmarkManager
  • Grimoire
  • Shiori Bookmark Manager
  • LinkSnatch

Firefox はそもそも使っているし、ぱっと見インストールが難しそうだったので除外。

Floccus 以外はスマホ対応がないので Floccus を試してみることにした。今回スマホネイティブを重視したのは、「スマホのブラウザ利用時にブックマークする際、Web UI しかないと、URL をコピーしてタブを行ったり来たりするのが面倒でしかたない。」と感じていたからだ。

同期データの保存先も NextCloud Bookmarks、WebDAV、Google Drive から選択できるのがいい。NAS 側に WebDAV を設定しておくだけので手軽さだ。

クライアント側にスマホアプリやブラウザ用の Extension を入れるだけで使えるようになる。

デフォルト設定では WebDAV サーバに、bookmarks.xbel というファイルが作成されるが中身は html ファイルのようだ。設定でファイルを暗号化することができる。

これ意外といいかもしれない。

参考

Private bookmarks syncing – floccus.org

Synology SFTP をアクティブにする

個人的に忘れがちなので、というのも他の Linux と異なり Synology の NAS のコントロールパネルでは、SSH をオープンにしても SFTP は使えないので別途、有効にする必要がある。
もしかすると、Linux 系サーバで使用する OpenSSH とかではデフォルト値がたまたま両方アクティブになるだけかもしれないが、いつも小ハマりするのでメモする。

操作方法

  1. コントロールパネルを開き
  2. File Services を選択し、FTP タブを表示する
  3. FTP/FTPS を通りすぎ、SFTP セクションががあるので、ここをチェックする
  4. 必要ならポートを変更する

これで SFTP できるようになるので SSHFS が使えるようになった。

DietPi で mdns をアクティブにする

ROCK64 に入れた DietPi だが、外からは .local で応答してくれるが、DietPi の中では、.local の名前解決に失敗していたので以下を追加でインストールした。

$ sudo apt install libnss-mdns

# 名前解決できるか確認してみる
$ ping rock64.local
PING rock64.local (192.168.1.250) 56(84) bytes of data.
64 bytes from 192.168.1.250 (192.168.1.250): icmp_seq=1 ttl=64 time=0.157 ms
64 bytes from 192.168.1.250 (192.168.1.250): icmp_seq=2 ttl=64 time=0.163 ms
....

無事に、.local 名を名前解決できるようになった

DietPi で SBC の LED 設定を変更する

小ネタです。

自宅で動いている ROCK64 という SBC (Single Board Computer) では DietPi という軽い SBC 向けディストリビューションを動かしています。

SBC でよくあるように ROCK64 にも LED がいくつかあり自分の状態を表示しています。

DietPi  + ROCK64 の場合は、led-1 (電源コネクタと反対側の端) が動作中はずっとハートビートする設定になっています。設置している場所が寝室なので夜間はかなり煩わしく感じていました。

internet を検索してみると、ブラウザの検索結果の脇で Copilot が教えてくれました。自分で検索結果を読み取るよりよっぽど早かったことには感動。

Copilot によると dietpi-config で設定できるとのこと。実際にやってみると

  1. sudo dietpi-config
  2. 『1: Display Options』
  3. 『 14: LED Control』
  4. 変更したいLEDを選び(今回は led-1)
  5. 表示したい機能を選択する

こんな感じでできる

iphoneショートカットアプリでlinux をシャットダウン

自宅の PC 環境には検証用に linux サーバをヘッドレスで動かしでいます。

通常は画面なしで支障ないのですが、1日の終わりに電源を切るのを忘れることがままあります。そうするとまたPC開いてシャットダウンするのですが、正直面倒に感じることも多いです。

上記を解決する為に、iphoneのショートカットアプリでssh ログインしてシェルスクリプトを実行することにしました。

シェルスクリプト

Linux側では電源を切るスクリプトを書きます。

ポイントは sudo する際、パスワードをスクリプトで渡すようにする事です。

#!/bin/bash

PASS=ユーザーのパスワード

echo $PASS| sudo -S shutdown

こんな感じでユーザー名、パスワードを指定します。

セキュリティ的にこだわるのであれば、sudo の設定ファイルでshutdownコマンドを実行する専用ユーザーを指定するとか色々出来そうですが、今回はこれで良しとします。

ショートカットの画像を入れる

ショートカット側は ssh でスクリプトを実行するを追加しただけのシンプルなものです。

NEC IX ルータで AsahiNet IPv6 固定IPを割り当て Synology NAS に外部からアクセスする

自宅インターネット回線を楽天ひかりから AsahiNET に切り替えました。というのも数週間前から転送速度が顕著に低下し、ついには常時10mbps 以下になり耐え難い状態で引越しすることに。。。

「固定IPアドレスが比較的安価」。「何となく老舗だし」という非常に安易な考えで AsahiNet に決めましたが結果満足してます。楽天ひかりの Xpass (クロスパス) では少なくとも手軽な固定 IP サービスはなかった為、外部から NAS にアクセスする目的で PPPoE の IPv4 接続を併用してサーバから外に出ていくときは、PPPoE 側にトラフィックを流していました。

ばりばりのネットワークエンジニアではないので、IX ルータ設定が面倒だなと思っていましたが、IPv6 (IPv4 over IPV6)接続で固定の IP となったのでトラフィックを一本化してポート転送できるようで設定がシンプルになり見通しがよくなりました。

で、NEC のサンプルのほぼパクリですが設定をさらしていきます。

固定IPの為の情報

AsahiNet 光 で固定 IP アドレスオプションを申し込むと以下のような情報がきます。これをサンプルに当てはめていくだけです。

一番難しかったのはインターフェースID を IX ルータの要求する xx : xx : xx : xx : xx : xx : xx : xx 形式(xx が 8個) にするとこが一番難しかった。

下の例のインターフェースID だったら 00:00:12:34:56:78:00:00 となるようです。こういう形式とか変換の仕方をなん呼ぶのかわかりませんが、動いているの多分大丈夫だと思う。(あっているという根拠が弱いので少し不安ではある。)

自動設定取得IDP12345678
自動設定取得パスワードpass1234
インターフェースID0000:0000:0000:0000:0000:1234:5678:0000
AFTRエンドポイント
IPv6アドレス
2001:1234:1234:1234:0000:0000:0000:1234
固定IPv4アドレス123.123.123.123
アップデートサーバhttps://v6update.asahi-net.or.jp/prefix
 認証用ユーザーIDP12345678
 認証用パスワードpass1234

ネットワーク構成

IX ルータは AsahiNet に IPIP 接続(固定IP)でインターネットに抜けます。

Synology NAS は 192.168.1.244 と 192.168.2.244 のアドレスを持ちます。
(一つのアドレスで構いませんが、以前の設定の名残りです。あまり気になさらずに。。。)

192.168.2.244 の 80, 443, 5000, 5001 ポートを外部に開けます。(static napt してます。)

192.168.1.0/24 のセグメントに PC やら スマートフォンやらが DHCP でつながっています。

本題に全く関係ない部分は消していますが、おおよそこんな感じて動いています。

古い IX 2105 で動いているのでそれより新しい機種+ ファームバージョンなら動くはずです。

設定

AsahiNet に直接関係ある部分は ! の後にコメントをいれています。

! NEC Portable Internetwork Core Operating System Software
! IX Series IX2105 (magellan-sec) Software, Version 10.2.42, RELEASE SOFTWARE
! Compiled Sep 09-Fri-2022 13:40:53 JST #2
! Last updated Feb 15-Thu-2024 21:50:53 JST
!
timezone +09 00
!
logging buffered 131072
logging subsystem all warn
logging timestamp datetime
!
username admin password hash xxxx@ administrator
!
ntp server 133.243.238.164
ntp interval 3600
!
ip ufs-cache max-entries 20000
ip ufs-cache enable
ip route default Tunnel1.0
ip dhcp enable
ip access-list client-list permit tcp src 192.168.1.0/24 sport any dest any dport any
ip access-list client-list permit udp src 192.168.1.0/24 sport any dest any dport any
ip access-list server-list permit tcp src 192.168.2.244/32 sport eq 80 dest any dport any
ip access-list server-list permit tcp src 192.168.2.244/32 sport eq 443 dest any dport any
ip access-list server-list permit tcp src 192.168.2.244/32 sport range 5000 5001 dest any dport any
ip access-list web-http-acl permit ip src any dest 192.168.1.0/24
!
arp auto-refresh
!
ipv6 ufs-cache max-entries 10000
ipv6 ufs-cache enable
ipv6 dhcp enable
ipv6 access-list block-list deny ip src any dest any
ipv6 access-list dhcpv6-list permit udp src any sport any dest any dport eq 546
ipv6 access-list dhcpv6-list permit udp src any sport any dest any dport eq 547
ipv6 access-list icmpv6-list permit icmp src any dest any
ipv6 access-list permit-list permit ip src any dest any
ipv6 access-list dynamic cache 65535
ipv6 access-list dynamic dflt-list access permit-list
!
!
dns cache enable
dns cache max-records 512
no dns fqdn-database roundrobin
!
proxy-dns ip enable
proxy-dns ip request both
!
!
ssh-server ip enable
ssh-server ipv6 enable
!
!
ddns enable
!
ip dhcp profile dhcpv4-sv
  assignable-range 192.168.1.100 192.168.1.199
  dns-server 192.168.1.254
  fixed-assignment 192.168.1.244 70:09:d0:4b:06:cd
!
ip dhcp profile dhcpv4-out
  dns-server 192.168.1.254
  fixed-assignment 192.168.2.244 70:09:d0:4b:06:ce
!
ipv6 dhcp client-profile dhcpv6-cl
  information-request
  option-request dns-servers
  ia-pd subscriber GigaEthernet1.0 ::/64 eui-64
!
ipv6 dhcp server-profile dhcpv6-sv
  dns-server dhcp
!
!===========================================================
! 固定IP用の「アップデートサーバ」「 認証用ユーザーID」「 認証用パスワード」を設定する
!===========================================================
ddns profile asahi-ddns
  url https://v6update.asahi-net.or.jp/prefix
  query key=P12345678&pass=pass1234
  transport ipv6
  source-interface GigaEthernet1.0
  update-interval 30
!
device GigaEthernet0
!
device GigaEthernet1
!
interface GigaEthernet0.0
  no ip address
  ipv6 enable
  ipv6 dhcp client dhcpv6-cl
  ipv6 traffic-class tos 0
  ipv6 nd proxy GigaEthernet1.0
  ipv6 filter dhcpv6-list 1 in
  ipv6 filter icmpv6-list 2 in
  ipv6 filter tunnel-list 3 in
  ipv6 filter block-list 100 in
  ipv6 filter dhcpv6-list 1 out
  ipv6 filter icmpv6-list 2 out
  ipv6 filter dflt-list 100 out
  no shutdown
!
!===========================================================
! 固定IP用の「インターフェースID」を設定する
!===========================================================
interface GigaEthernet1.0
  ip address 192.168.1.254/24
  ip dhcp binding dhcpv4-sv
  ipv6 enable
  ipv6 interface-identifier 00:00:12:34:56:78:00:00
  ipv6 dhcp server dhcpv6-sv
  ipv6 nd ra enable
  ipv6 nd ra other-config-flag
  no shutdown
!
interface GigaEthernet1.1
  encapsulation dot1q 100 tpid 8100
  auto-connect
  ip address 192.168.2.254/24
  ip dhcp binding dhcpv4-out
  no shutdown
!
interface Loopback0.0
  no ip address
!
interface Null0.0
  no ip address
!
!===========================================================
! 固定IPv4 と対向になるAFTRエンドポイントIPv6アドレス を指定する
!===========================================================
interface Tunnel1.0
  tunnel mode 4-over-6
  tunnel destination 2001:1234:1234:1234::1234
  tunnel source GigaEthernet1.0
  ip address 157.107.76.213/32
  ip tcp adjust-mss auto
  ip napt enable
  ip napt hairpinning
  ip napt static 192.168.2.244 tcp 5000-5001
  ip napt static 192.168.2.244 tcp 80
  ip napt static 192.168.2.244 tcp 443
  no shutdown
!

参考

v6コネクト「固定IPサービス」 設定ガイド : UNIVERGE IXシリーズ | NEC

synology NAS に time machine でバックアップできない場合

久々の synology ネタです。

通常なら NAS の UI で SMB を有効にして、共有フォルダを作成して、Bonjour broadcast を有効にするだけで OK なはずですが、自分の環境ではある時点から time machine が動作していなかったようです。

状況としては「 time machine で synology のボリュームを選択してもいつまでたってもマウントできない」という現象が発生しています。

参考の 2番目を実行すると問題が解決しましたので記事にします。

原因は定かではないですが、もしかすると OS をアップデートしているからかもしれません。

前提となる環境

  • AD / LDAP ドメインなし (Windows なし環境なので、無いと思っている)
  • SMB のみ、AFP なし

手順

参考リンクの2番目の通りですが、1 つだけ注意点があります。

例 3 Synology NASはADドメインに加わりましたが、SMBを介してDSMユーザー(例:TMuser)としてバックアップしたい場合:
のパターンで動作しました。

説明がわかりにくいのですが、DSM ユーザー となっているので AD ドメインではなく localhost (つまりワークグループ) を使うよってことを示しているようです。

ともかくコマンドを抜粋するとこんな感じです。

$ sudo tmutil setdestination -p "smb://localhost\\TMUser@aa.bb.cc.dd/timemachine-folder"

無事、time machine が復旧しました。最近 PC も 光回線も調子が悪いのでせめてバックアップだけでも取っておこう。

参考

Time Machine を使って Mac から Synology NAS にファイルをバックアップするには? – Synology ナレッジセンター
通常ならこちらだけでいい

Time Machineを使ってSynology NASに接続するとき、この問題を解決するにはどうしたらいいですか? – Synology ナレッジセンター
UI で設定してもダメだった場合、下の方法 2 で動作するようになった。

Mint 21 に Virtualbox7 をインストール

Linux mint の apt にも Virtualbox は入っているのですが、6.1 と古いので 7 系をインストールするには追加で設定が必要。

参考リンクの方法まんまだが、Virtualbox のリポジトリとGPG キーを追加して apt コマンドで見つけられるようにする必要がある。

ポイントだけ抜き書きするとこんな感じ。

$ curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc \
  | sudo gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg > /dev/null

$ echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian jammy contrib \
  | sudo tee /etc/apt/sources.list.d/virtualbox.list

$ sudo apt update
$ sudo apt install virtualbox-7.0

echo deb の行のjammy の分は、 `$ cat /etc/os-release` で表示される UBUNTU_CODENAME に入れ替えること。

linux-headers や必要なパッケージが不足していたらそれらも追加する。

参考

How to Install VirtualBox 7.0 on Linux Mint 21 or 20 – LinuxCapable