WPP
IME辞書を自動で Synology Drive にバックアップ

最近こっている事の一つにIME辞書にショートカットを登録することがある。そうすると IME 辞書をバックアップしたくなる。

IME 辞書そのものは普通のファイルなので単にコピーするだけで OK ですが、まあ面倒くさい。Win11 で試した限り辞書の保存場所を変える方法はなさそう。

自分の 場合辞書は
C:\Users\ユーザー名\AppData\Roaming\Microsoft\IME\15.0\IMEJP\UserDict
に保存されている。

これをなんとかして Synology Drive のフォルダにコピーできればバックアップができて、それを定期的に実行すれば自動バックアップの完成という訳。

NAS がなくとも、この自動コピーの仕組みでバックアップは実現できます。

手順

  1. 辞書ファイルのコピー

まずは、辞書をコピーするスクリプトを作成する。コピーには個人的な好みで cwRsync を使用する。

こんな感じになる。/cygdrive/c/ からはじめると c:\ の意味になるようだ。

rsync -av /cygdrive/c/Users/172369/AppData/Roaming/Microsoft/IME/15.0/IMEJP/UserDict/* /cygdrive/c/synologydriveのフォルダ/

cwrsync (rsync) は実際に試す前に -n を追加して (-avn) で実行する内容を試した方がいい。特にデリートコマンド系は危険。

もし、Windows標準の Robocopoy を使うならこんな感じ。(恥ずかしながらこのコマンド初めて知りました。)

Robocopy.exe C:\Users\172369\AppData\Roaming\Microsoft\IME\15.0\IMEJP\UserDict\ . C:\synologydriveのフォルダ /XO

Robocopy はかなり複雑なのでちょっと難しい印象。それで避けていたのかもしれない。

スクリプトを書く際に注意しなくてはいけないのは後段のタスクスケジューラで実行する時にカレントディレクトリがシステムディレクトリ(確か system32 だったか)になってしまうので .\ とかするとコピーができずに永遠に終わらなくなったりする。

  1. タスクスケジューラに登録

2つの参考リンクをミックスした感じで

[start] -> tasks と入力してタスクスケジューラを起動する。

新しいタスクの作成にすすみ、名前を適当に入れる。
今回は、コピー元、コピー先ともに自分自身がオーナーのユーザーフォルダなので実行するユーザーを変更する必要はない。

[トリガー]タブは、[毎日]、[繰り返し間隔] [1時間] に設定する。

[操作]タブ、
プログラム: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加: 作成したスクリプトのフルパス
自分の環境では ExecutionPolicy を許可ずみなので -ExecutionPolicy Bypass は不要でした。

ちょっと面倒ですがここまですると、 Synology Drive へ定期コピーし Synology Drive が NAS へ同期

することで自動バックアップする一連の流れを設定とすることができました。

参考

cwRsync – Rsync for Windows | itefix.net

Robocopyの基本動作とコマンドオプション解説

Windows10でPowerShellスクリプトをスケジュール実行する – 3テラバイト

タスクスケジューラでPowerShell スクリプトを実行する | Windows 実践ガイド

Synology NAS で Forgejo をちょっと試してみる

自宅 NAS では Gitlab を動かしています。これは機能しているのでいいといえばいいのですが、遅いです。それほど強力でない NAS 上の docker とはいえ起動して使い始めるまで大体 5 分位かかります。

それから、Gitlab のアップデートは異常に早いです。大抵 2、3 週間放置しているとアップデートされ、critical update も非常に頻繁です。そのたびにアップデートするのですが正直面倒なのと失敗するかもしれないというドキドキはあまり嬉しいものではありません。

なのでちょっと違うものを試してみることにしました。Gitea が良さそうと思いましたが、更に Forgejo が fork されているようです。なので Forgejo を動かしてみることにします。

Forgejo は dockerhub でホストされていないようなので、Project を作成します。

Create Project ダイアログは以下のように指定します。

Project name: 適当な名前
Path: NAS 上の composer.yaml を置く場所
Source: docker-compose.yaml の作成を選択する
テキストボックスに docker-compose.yaml の内容を指定して [Next] へ進む
Web ポータルの設定はせずに先に進む。

version: '3'

networks:
  forgejo:
    external: false

services:
  server:
    image: codeberg.org/forgejo/forgejo:7
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - forgejo
    volumes:
      - /volume1/docker/forgejo:/data
      #- /etc/timezone:/etc/timezone:ro
      #- /etc/localtime:/etc/localtime:ro
    ports:
      - '8002:3000'
      - '8003:22'

ポート番号は適当に変えています。適宜、状況に合わせて調整してください。

リバースプロキシ設定で https://forgejo.xxx.myds.me を 8002 に流して https の設定は終わり。

ssh 接続は確認していないので後ほど追記することになると思う。

参考

Installation with Docker | Forgejo – Beyond coding. We forge.

synology の Docker で code-server を動かす

タブレットをせっかく買ったので個人開発をタブレットでもできるようにということでいろいろと調べてみる。

coder っていう Web IDE が見つかり、それはどうやら VS Code を動かしているものっぽい。その coder が出している code-server ってので Docker で動くらしいのでやってみた。

自分の環境では、Docker と Synology NAS のリバースプロキシを使っているが Docker だけの場合は R.P. 部分は読み飛ばせばいい。リバースプロキシで SSL しているので Docker 側では何もしていない。

Docker 設定

Docker の設定は、 Synology NAS にならう感じで書いてくので、いい感じで読み替えて Dockerfile なりを書いてほしい。

イメージ

codercom/code-server を duckerhub からダウンロードする

ポート

ここでは、ホスト側 9001 をコンテナ側 8080 になるように expose した。

ボリューム

ここは、dockerhub の説明とは少し変えた。というのもボリュームリンクなしで起動してみると /home/config の中には、.config や、 .local の他にもいろいろ保存されそうなだったのでざっくりと指定した。まとめると

ホスト側はあくまで自分の環境でのことなので、好きな場所に変えてください。

ホスト側コンテナ側
/volume1/docker/code-server/config/home/coder
/volume1/docker/code-server/project/home/project

ここまでで、 9001 ポートに http アクセスすれば使えるようになっている。

ログインパスワード

コンテナははじめからパスワード認証が有効になっている。そのパスワードは初期値が config.yaml に生成されるようだ。

場所は上の例で行くと、/volume1/docker/code-server/config/.config/code-server/config.yaml です。

リバースプロキシ設定

ここも、synology NAS のでやる場合の内容です。

外側 443ポートに対しネームベースで振り分けるように設定します。また、code-server は WebSocket を使っているらしいので ws が通るように設定します。

xxx.myds.me は、NAS に付属の DDNS ホスト名です。そのサブドメインを作成し、コンテナに流す設定をします。

コンテナは、先程 9001 を開けたので 9001 に流します。

[ソース側]

Protocol: HTTPS
Hostname: code.xxx.myds.me
Port: 443

[転送先 (destination) ]

Protocol: HTTP
Hostname: localhost
Port: 9001

[カスタムヘッダー]

WebSocket を通すためにカスタムヘッダーを設定します。 Synology のリバースプロキシの実態は nginx なのでその設定と言ったらわかりやすいでしょうか?

Custom Header タブに行き Create > Websocket を選択すうと結果こうなります

Upgrade => $http_upgrade
Connection => $connection_upgrade

ここまで終えると、

https:/code.xxx.myds.me/ でアクセルすると、VS-Code っぽい画面がでてきます。初回はパスワード認証で先程のパスワードを入力すると認証をパスします。

エディタで開くフォルダは、 ?folder=/home/project とかすればいいようです。場所によってかけなかったり、コンテナ停止で消えたりするので注意が必要ですね。

code-server のコンテナには python とか入っていないので、ちゃんとやりたければ別のコンテナかサーバーに ssh したほうがよさそう。直接コンテナにインスールしても消えてしまう。(コンテナの / をどっかにマウントするのもちょっとなんだし)

参考

codercom/code-server – Docker Image | Docker Hub

Install – code-server Docs

Websoc kets for Synology DSM – Matthias Lohr – Synology のリバースプロキシで websocket を通す方法

Linux Mint カレンダーで CalDAV/CardDAV を扱うには Evolution を入れる

さてカレンダーアプリは Synology NAS のカレンダーをメインで使っているのですが、Linux Mint をメインで使うようになってちょっと困っていたのがカレンダーの管理です。

Linux Mint には gnome カレンダーがついているっぽいのですが、そこで CalDAV アカウントを追加する方法がありませんでした。そのため避難先として Vivaldi ブラウザのカレンダ機能を使っていました。

Vivaldi も決して悪くはないのですがブラウジング中に予定を見たいときに、見ているタブが隠れてしまうのと、操作性と画面のウルサイ感じが地味にストレスでした。

とはいえ メールは完全に Web ベースしか使っていないので Evolution 使うのはちょっと大げさだとかんじていましたが、Chienomi さんのページをみると
「 Evolution 入れて CalDAV カレンダーを追加すると gnome カレンダーから参照できるようになる。」
なんですと ?!。ということでやってみました。

Evolution を起動し、カレンダーを追加した後、gnome カレンダーを起動するとあっさりとカレンダーのアイテムが表示されるようになりました。

CardDAVアドレス帳も同じように、Evolution で追加してやると gnome Contats (日本語表示していないのでわからないのですが、恐らくアドレス帳じゃないかと思う) で CardDAV の参照ができるようになった。

1 つ課題が解決しました。

参照

Linux環境でCalDavを使ったカレンダー利用 – Chienomi

Using a CalDAV calendar

Synology NAS の 5001 ポートを何とかする

Synology の NAS では Web アプリが 5001 で待受けをしています。制限のゆるいネット環境では恐らくなんの問題もなくアクセスできるでしょう。

しかし会社等 PROXY 経由でインターネットに抜ける環境などの制限がきついネットワークでは 5001 ポートにアクセスできないことがあります。逆向きにいうと 443 ポートでないと自由に外に抜けられないことが多いということです。

そんなときに NAS のリバースプロキシを使って解決することができます。

手順

  1. コントロールパネルを開きます。
  2. ログインポータルから Advanced を開きます。
  3. Reverse Proxy をクリックします。
  4. Create ブタンをクリックします。
  5. イメージのように
    Source側
    Protocol: HTTPS
    Hostname: 新サブドメイン.自分のDDNS (例 dsm.ZZXXYY.myde.me 適宜アジャストしてください。)
    Port: 443
    Destination側
    Protocol: HTTPS
    Hostname: localhost
    Port: 5001
    と設定します。
  6. ブラウザで https://dsm.ZZXXYY.myds.me にアクセスして DSM の Web が表示するはずです。

解説

リバースプロキシの設定では外側のプロトコル、ホスト名、ポートの組をどこか他に流すという設定をします。

ところで NSA ホスト名は Synology の DDNS で振り出されるサブドメインを利用していることが多いと思います。自分の環境では、myds.me のサブドメインが振り出されています。ここではダミーサンプルとして ZZXXYY という名前を使用します。実際にはご自分で決めたサブドメインになっているはずです。

ここがポイントなのですが、Synology のDDNS は自分で決めた ZZXXYY の更にしたのレベルのサブドメインを作ってもちゃんと NASに向けて名前解決してくれます。DDNS の内部では * で全部のサブドメインを受けてくれているようです。

要するに、dsm.ZZXXYY.myds.me としても自分の NAS に向けてアクセスしにくるということです。

この tips がインターネットを検索しても見当たらないので記事にしました。せっかく NAS 使用していてもリバースプロキシ使ったらいいのにと思う記事が多く、少しでも知識が広まってくれれば嬉しいです。

Synology SFTP をアクティブにする

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

操作方法

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

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

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 で動作するようになった。