
.NET Framework 3.5 SP1 日本語 Launguage Pack x64でエラーが発生した。
このLaunguage PackはWin11では直接インストールすこともできない。

Win+R>optionalfeatures
から.NET3.5を有効にすることでインストール可能になる。

一部チェックが付いていたりする場合は、一旦.NET3.5のチェックを全部外す→OK→全部チェックするなど。
自分用のメモです。内容が間違っていたり、作りかけで動作しないコードなどあるのでご注意ください。

.NET Framework 3.5 SP1 日本語 Launguage Pack x64でエラーが発生した。
このLaunguage PackはWin11では直接インストールすこともできない。

Win+R>optionalfeatures
から.NET3.5を有効にすることでインストール可能になる。

一部チェックが付いていたりする場合は、一旦.NET3.5のチェックを全部外す→OK→全部チェックするなど。
https://docs.mattermost.com/product-overview/version-archive.html
から対象のダウンロードリンクを見つける
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
apt update apt upgrade reboot systemctl stop mattermost cd /opt/ mv mattermost 20250926_mattermost wget https://releases.mattermost.com/10.12.0/mattermost-team-10.12.0-linux-amd64.tar.gz (curl -LO https://releases.mattermost.com/10.12.0/mattermost-10.12.0-linux-amd64.tar.gz) tar -xvzf mattermost*10.12.0*.gz cp /opt/20250926_mattermost/config/config.json /opt/mattermost/config/config.json cp -r /opt/20250926_mattermost/data /opt/mattermost/ chown -R mattermost:mattermost mattermost systemctl start mattermost systemctl status mattermost |
https://github.com/mattermost/mattermost-plugin-boards/releases
から、該当のファイル
mattermost-plugin-boards-v9.1.6-linux-amd64.tar.gz
をダウンロード。
システムコンソール>プラグイン管理からアップロード
※設定がうまくいかない場合10秒以上電源長押し
・iPhone HOMEアプリの場合(Matter)
iPhoneのBluetoothを有効化。
iPhoneを2.4GHzのWiFiに接続する。
Tapoをコンセントにさす。
HOMEアプリ>追加>コンセント
QRコードを読んで追加する。
※HOMEに追加した時点で、TapoがWiFiに接続できている。
iPhone経由でWiFiの情報が伝わっている。
・TP-Link Tapoアプリ
iPhoneのBluetoothを有効化。
TP-Link Tapoアプリをインストール。
TP-Link IDを作成。
アプリを起動するとデバイスを自動で見つける。
名前をつけ、ファームウェアのアップデート。
HOMEアプリのセットアップをしておくとWiFiの設定は不要でつながる。
セットアップ完了後は、同じWiFiにいなくても操作可能。
Perplexityをメインで利用していたが、スレッドをコンテキストとして再利用できていなかった。最近スレッドをコンテキストとして再利用したいなと思うことが多かったので、Obsidian+Copilot環境を導入した。
Obsidian+Copilotでは簡単にスレッドをノート(ファイル)として保存(Save Chat as Note)できて、そのファイルをコンテキストとして渡せる。ファイル名は自動で付くけど、GPT5だと文字化けするので現状はGPT4.1を利用している。

baseを作成。
filterで、スレッドを保存したフォルダを指定。
|
1 |
file.folder=="copilot-conversations" |
Add Formulaで、ファイル名から日付を取得する。
|
1 |
file.name.split("_").slice(-1)[0].replace(/\..*$/, "").slice(0,8).replace(/(\d{4})(\d{2})(\d{2})/, "$1.$2.$3") |
hタグでの違いが分かりづらかったため。
設定>外観>CSSスニペット
cssファイルを作成。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* 見出し前に # を常時表示(編集/閲覧) */ h1:before, .is-live-preview .HyperMD-header-1:not(.cm-active):before { content: "# "; } h2:before, .is-live-preview .HyperMD-header-2:not(.cm-active):before { content: "## "; } h3:before, .is-live-preview .HyperMD-header-3:not(.cm-active):before { content: "### "; } h4:before, .is-live-preview .HyperMD-header-4:not(.cm-active):before { content: "#### "; } h5:before, .is-live-preview .HyperMD-header-5:not(.cm-active):before { content: "##### "; } h6:before, .is-live-preview .HyperMD-header-6:not(.cm-active):before { content: "###### "; } .is-live-preview .HyperMD-header-1, .is-live-preview .HyperMD-header-2, .is-live-preview .HyperMD-header-3, .is-live-preview .HyperMD-header-4, .is-live-preview .HyperMD-header-5, .is-live-preview .HyperMD-header-6 { border-bottom: 1px dotted var(--background-modifier-border); } |
VSCode、Node.js
をダウンロード&インストール。
Node.jsのネイティブモジュールのビルドに必要なツールのチェックはオフでOK。
ターミナルで、
npx create-next-app@latest testapp
OK to proceed = yes
Would you like to use TypeScript = No
Which linter would you like to use = ESLint
Would you like to use Tailwind CSS = Yes
Would you like code inside a src directory = Yes
Would you like to use App Router = Yes
Would you like to use App Turbopack = Yes
Would you like to customize the import alias (@/* by default) = No
インストールが完了する。
cd testapp
npm run dev
http://localhost:3000
にアクセスする。
src/app配下にページごとにフォルダ作成し、そのページごとのフォルダの中にpage.jsを置く。
・layout.js
ページ全体の共通レイアウトや共通処理を定義
・page.js
layout.jsで定義されたレイアウトの中に表示される
※hbbrがリレーサーバー、hbbsがシグナルサーバー
※ from xxx は省略可能
(ufw allow to any port 21116 proto tcp)
※ proto xxx は省略可能(tcp/udpが適用)
(ufw allow to any port 21116)
※ to any portを省略する場合、proto toも省略する省略記法(カンマ区切不可)
(ufw allow 21116/udp)
ufw allow to any port 21114,21115,21116,21117,21118,21119 proto tcp
ufw allow to any port 21116 proto udp
※以下が必要
21114(TCP)
21115(TCP)
21116(TCP/UDP)
21117(TCP)
21118(TCP)
21119(TCP)
ufw status numbered
ufw delete 1
ufw reload
mkdir rustdesk
cd rustdesk
vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:latest environment: - ALWAYS_USE_RELAY=Y command: hbbs volumes: - ./data:/root network_mode: "host" depends_on: - hbbr restart: unless-stopped hbbr: container_name: hbbr image: rustdesk/rustdesk-server:latest command: hbbr volumes: - ./data:/root network_mode: "host" restart: unless-stopped |
https://github.com/rustdesk/rustdesk/releases
設定>ネットワーク>認証サーバー/中継サーバーにIPアドレスを入れる
Keyの調べ方。
cd data
cat id_ed25519.pub
・GeminiAPI
https://console.cloud.google.com/
にアクセスし、プロジェクト作成
APIとサービス>ライブラリ
geminiと検索し、Gemini APIを有効化する
認証情報>認証情報を作成>APIキー
表示されたAPIキーを保存する
・ChatGPT
https://auth.openai.com/log-in
Billing>Payment methods>Add payment method
からクレジットカード登録
Billing>Add to credit balance
からチャージ
Manage Projects>API Keys
からシークレットキー取得
https://platform.openai.com/settings/organization/usage
から料金確認
GPT5のAPI利用ではVerify Organizationが必要
General>Verify Organization>Start ID Check
QRコードでスマホを開いて運転免許撮影+顔写真撮影といった流れ。
今回は検証目的で、通常はVPSで直接Dockerを公開するような運用はNGで、VMを経由する。
●●●=利用環境のグローバルIPアドレス
・ufw
ufw allow from ●●● to any port 9922,3306,53,88,135,139,389,445,464,636,3268,3269,49152:49252 proto tcp
ufw allow from ●●● to any port 53,88,123,137:138,389,464 proto udp
・フォルダ作成
cd /home
mkdir samba
cd samba
mkdir data
mkdir config
chmod 700 data
chmod 700 config
vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
services: samba: image: nowsci/samba-domain:latest privileged: true container_name: samba-dc dns: - 172.19.0.2 dns_search: - sk-tech.local environment: - DOMAIN=xxx.local - DOMAINPASS=xxx - DNSFORWARDER=8.8.8.8 - HOSTIP=xxx - TZ=Asia/Tokyo volumes: - /home/samba/data:/var/lib/samba - /home/samba/config:/etc/samba/external ports: - "53:53" - "53:53/udp" - "88:88" - "88:88/udp" - "123:123/udp" - "135:135" - "137-138:137-138/udp" - "139:139" - "389:389" - "389:389/udp" - "445:445" - "464:464" - "464:464/udp" - "636:636" - "3268-3269:3268-3269" - "49152-49252:49152-49252" hostname: samba-dc restart: always cap_add: - NET_ADMIN - SYS_TIME networks: mynet: ipv4_address: 172.19.0.2 networks: mynet: driver: bridge ipam: config: - subnet: 172.19.0.0/16 |
・もし再実行で既にコンテナがあるようだったら
docker ps -a
docker compose down
※カレントディレクトリにdocker-compose.ymlがある状態で実行
・通常終了しない場合
docker ps -a
docker rm -f コンテナID
・バインドボリューム削除
rm -rf ./data/* && rm -rf ./config/*
※再起動の場合
docker restart samba-dc
※一時停止の場合
docker pause samba-dc
docker unpause samba-dc
・起動
docker compose up -d
※カレントディレクトリにdocker-compose.ymlがある状態で実行
※dはバックグランド実行
・停止
※もし自動で再起動を繰り返している場合止める
docker stop samba-dc
・初回のみエラー
53ポートが使用中とのことでエラー。
lsof -i :53
vim /etc/systemd/resolved.conf
DNSStubListener
>no
に変更する。
systemctl restart systemd-resolved
※直接変更する方法
docker exec -it samba-dc vi /etc/samba/smb.conf
rpc server dynamic port range = 49152-49172
を
rpc server dynamic port range = 49152-49252
に変更。
docker exec -it samba-dc supervisorctl restart samba
※ポートが多すぎるコンテナ生成で失敗する。(タイムアウトしてしまう)
ポートが少なすぎるとADの同期で問題が発生する。
journalctl -u docker
docker logs -f samba-dc
docker exec -it samba-dc tail -f /var/log/samba/log.smbd
docker exec -it samba-dc tail -f /var/log/ntp
docker logs samba-dc | grep ntp
でntp系のエラー確認
・ntpサーバー確認
docker exec -it samba-dc ntpq -p
現在のntpサーバー(*)を確認しping
docker exec -it samba-dc sntp xxx.xxx.xxx.xxx
/etc/ntp.conf or /etc/ntpd.conf
使用されている方の調べ方(ps aux | grep ntpd)
を編集する。
docker exec -it samba-dc vi /etc/ntpd.conf
server ntp.nict.jp iburst prefer
を追加し、
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
を
ntpsigndsocket /var/lib/samba/ntp_signd/
に変更する
docker exec -it samba-dc supervisorctl restart ntpd
・ntp.drift作成
docker exec -it samba-dc mkdir -p /var/lib/ntp
docker exec -it samba-dc touch /var/lib/ntp/ntp.drift
docker exec -it samba-dc chown ntp:ntp /var/lib/ntp
docker exec -it samba-dc chown ntp:ntp /var/lib/ntp/ntp.drift
docker exec -it samba-dc chmod 755 /var/lib/ntp
docker exec -it samba-dc chmod 664 /var/lib/ntp/ntp.drift
docker exec -it samba-dc supervisorctl restart ntpd
・一応確認
アクセス権限
cd /var/lib/ && ls -la
chown ntp:ntp /var/lib/ntp
chmod 755 /var/lib/ntp
になっていればOK。
ntpユーザがいるかどうか
id ntp
・usersharesフォルダ作成
docker exec -it samba-dc mkdir -p /var/lib/samba/usershares
VPSアドレス[AAA.BBB.CCC.DDD]
から
samba-dc.xxx.local
を取得する方法
docker exec -it samba-dc samba-tool dns zonecreate localhost CCC.BBB.AAA.in-addr.arpa –username=administrator –password=xxx
docker exec -it samba-dc samba-tool dns add localhost CCC.BBB.AAA.in-addr.arpa DDD PTR samba-dc.xxx.local –username=administrator –password=xxx
docker exec -it samba-dc supervisorctl restart samba
Win11でNASにアクセスできなくなる対策と同じ設定。
(安全でないゲスト ログオン等)
ncpa.cpl
利用しているNICのDNSをVPSのIPアドレスにする。
sysdm.cpl
コンピュータ名タブ>変更
ドメインを選択しドメイン名を入力する。
ユーザーはadministrator
パスワードはdocker-compose
で指定したパスワードを入力する。
再起動したらログイン画面で
ドメイン名\administrator
のように入力しログインできる。初回ログイン時はかなり時間がかかる。
※アカウントもADに参加しないと以下コマンドは使えないが、このタイミングでローカルorMSアカウントを入力して、端末だけAD参加という状態も可能。
・Windows RSAT 有効化(ユーザー参加必須)
システム>オプション機能>機能表示>使用可能な機能を表示する
RSAT: ActiveDirectoryDomainServices およびライトウェイトディレクトリサービスツール
をチェックし追加すると、
Active Directory サイトとサービス
Active Directory ドメインと信頼関係
Active Directory ユーザーとコンピュータ
Active Directory 管理センター(Samba-DCでは利用不可)
が有効化される。
RSAT: グループポリシー管理ツール
をチェックし追加すると、
gpmc.msc
が有効化される。
・DNSが問題ないか確認する。
nslookup ドメイン
これでVPSのIPアドレスが返ってくればOK。
nslookup VPSのIPアドレス
これでドメイン名が返ってくればOK。
・接続状況(信頼関係)確認※管理者
nltest /sc_verify:ドメイン名
nltest /dsgetdc:ドメイン名
・時刻関係※管理者
w32tm /config /syncfromflags:domhier /update
※DCから取得に変更
w32tm /query /status
ソースを確認
w32tm /resync
同期実行
・gpupdate・
※コンピュータのみ更新場合
gpupdate /target:computer /force
エラーが発生した場合
eventvwr>アプリケーションとサービスログ>Microsoft>Windows>GroupPolicy
で確認する。
・\\xxx.local\sysvolアクセス時、このファイルは他のコンピュータから取得したものです。とついてしまう場合。
Win+R>inetcpl.cpl>セキュリティ>信頼済みサイト
に
\\xxx.local
を登録する。
・ドメインコントローラーへのポートテスト
Test-NetConnection “xxx.local” -Port 389
・接続テスト(ユーザダイアログ表示させる)
Test-ComputerSecureChannel -Repair -Verbose -Credential (Get-Credential)
※ドメイン\ユーザー名で入力する
・端末パスワードの更新
Reset-ComputerMachinePassword -Credential (Get-Credential)
※Smaba-DC内では、ユーザーと、端末、それぞれパスワードが存在するが端末のパスワードは自動で管理されユーザーが意識する必要はない。
※接続がうまくいかない場合sysdm.cplから一度抜けて再度登録すると直ることが多い。
・Win11ユーザープロファイルの削除
テストしているとプロファイルが多くできてしまう。
sysdm.cpl>詳細設定>ユーザープロファイル>設定
ここで不要なプロファイルを削除できる。
※この方法だとinit.sh後の処理ができないので不採用。
・エントリポイントのスクリプトを調べる
docker exec -it samba-dc bash
cat /proc/1/cmdline
・作成
vim setup.sh
#!/bin/sh
sed -i ‘s|xxx|xxx|’ /etc/samba/smb.conf
sed -i ‘s|xxx|xxx|’ /etc/ntpd.conf
docker-composeで呼び出す。
volumes:
– ./setup.sh:/setup.sh
command: sh -c “/setup.sh && exec /init.sh”
バインドしているexternalに保存
上記と同じように、エントリスクリプト内でcpできないエラーになる。
#!/bin/sh
ln -sf /etc/samba/external/smb.conf /etc/samba/smb.conf
ln -sf /etc/samba/external/ntpd.conf /etc/ntpd.conf
※lnコマンド
ln -sf [実体] [リンク]
ls -laの見え方
ntpd.conf(リンク) -> /etc/samba/external/my_ntpd.conf(実体)
docker network ls
・基本
xxx bridge bridge local
xxx host host local
xxx none null local
・削除方法
docker network rm samba_default
・種類
bridge
host:portsの設定は意味ない
macvlan:VPSだと難しい
・DBチェック
docker exec -it samba-dc samba-tool dbcheck –cross-ncs –fix –username=administrator –password=xxx
・ADに登録されている端末取得
docker exec -it samba-dc samba-tool computer list
docker exec -it samba-dc samba-tool computer show xxx
・ADに登録されているユーザー/PCリスト取得
docker exec -it samba-dc samba-tool user list
docker exec -it samba-dc samba-tool computer list
・PC追加
docker exec -it samba-dc samba-tool computer create PCNAME –user=administrator –password=xxx
・ゾーン一覧取得
docker exec -it samba-dc samba-tool dns zonelist localhost –username=administrator –password=xxx
xxx.localと_msdcs.xxxlocalが返ってくる。
・xxx.localのレコード一覧取得
docker exec -it samba-dc samba-tool dns query localhost xxx.local @ ALL –username=administrator –password=xxx
・_msdcs.xxx.localのレコード一覧取得
docker exec -it samba-dc samba-tool dns query localhost _msdcs.xxx.local @ ALL –username=administrator –password=xxx
・下位レコード取得
docker exec -it samba-dc samba-tool dns query localhost _msdcs.xxx.local gc ALL –username=administrator –password=xxx
・Aレコード削除
docker exec samba-dc samba-tool dns delete localhost xxx.local samba-dc A 172.19.0.2 -UAdministrator%xxx
・Aレコード登録
docker exec samba-dc samba-tool dns add localhost xxx.local samba-dc A サーバーIPアドレス -UAdministrator%xxx
docker exec -it samba-dc samba-tool ntacl sysvolreset –username=administrator –password=xxx
docker exec -it samba-dc samba-tool ntacl sysvolcheck –username=administrator –password=xxx
docker exec -it samba-dc supervisorctl restart samba
・ACL権限関連リセット
samba-tool ntacl sysvolreset
samba-tool ntacl sysvolcheck
●SPF
ドメイン所有者がドメインからメールを送信することを許可するIPアドレスを
DNSのSPFレコードとして登録する。
タイプ:TXT
ホスト名:@
値:v=spf1 include:_spf.google.com ~all
●DKIM
送信サーバーが秘密鍵の電子署名を付与、
受信サーバーは送信元ドメインのDNSに公開鍵を問い合わせて署名を検証する。
管理コンソール>アプリ>Google Workspace>Gmail>メールの認証(DKIM)
新しいレコードを生成
タイプ:TXT
ホスト名:google._domainkey
値:v=DKIM1; k=rsa; p=●●●
●DMARC
ドメイン所有者がDMARCレコードをDNSに設定し、
認証に失敗したメールの扱いをポリシーとして指定する。
タイプ:TXT
ホスト名:_dmarc
値:v=DMARC1; p=none; rua=mailto:●●●
安価なプランのIndigoVPSで色々なOSS運用していたが、1つにまとめることにした。今回はXserverVPS。すでにOSSは稼働状態なので、新しい環境と並行稼働してから切り替えることにした。
sudo vim /etc/ssh/sshd_config
Port
>9922
PasswordAuthentication
ChallengeResponseAuthentication
GSSAPIAuthentication
>no
sudo service ssh restart
※Xserverにもパケットフィルタがあるので要設定。
sudo vim /etc/default/ufw
>IPV6=no
sudo ufw allow from ●●●.●●●.●●●.●●● to any port 9922 proto tcp
sudo ufw enable
sudo ufw status
・メモ
削除
sudo ufw status numbered
sudo ufw delete [番号]
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
このMySQLは外部接続用で単独で使用。
今までは直接インストールしていたが今回はDocker。
sudo mkdir project_management
cd project_management
sudo mkdir data
sudo chown -R 999:999 ./data
sudo chmod 700 ./data
sudo mkdir conf.d
sudo chown -R 999:999 ./conf.d
sudo chmod 700 ./conf.d
sudo vim docker-compose.yml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
services: mysql: restart: "always" image: mysql:8.4 container_name: production_management ports: - "3306:3306" volumes: - ./data:/var/lib/mysql - ./conf.d:/etc/mysql/conf.d environment: - MYSQL_ROOT_PASSWORD=●●● - MYSQL_DATABASE=project_management - MYSQL_USER=app_user - MYSQL_PASSWORD=●●● - TZ=Asia/Tokyo |
sudo docker compose up –d
cd conf.d
sudo touch external.cnf
sudo chown 999:999 external.cnf
sudo chmod 644 external.cnf
sudo vim external.cnf
[mysqld]
bind-address = 0.0.0.0
require_secure_transport = ON
sudo docker restart production_management
sudo ufw allow from ●●●.●●●.●●●.●●● to any port 3306 proto tcp
※Xserverのパケットフィルタも要設定。
dataフォルダの
client-cert.pem
client-key.pem
ca.pem
をダウンロード。
・pfx作成
pass=$(head /dev/urandom | tr -dc a-km-np-z1-9 | head -c 13);openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -out client.pfx -passout pass:${pass};echo $pass;
コンテナ一覧
sudo docker ps
コンテナに入る
docker exec -it production_management bash
コンテナ再起動
sudo docker restart production_management
コンテナ削除
sudo docker rm -f production_management
MySQL設定ファイル
/etc/my.cnf
Standard TCP/IPを選択。
・Parametersタブ
Hostname:IPアドレス
Port:3306
Username:DBユーザー
パスワード:DBパスワード
・SSLタブ
Use SSL:Require and Verify CA
SSL Key File:client-key.pem
SSL CERT File:client-cert.pem
SSL CA File:ca.pem
ダウンロードしたファイルを選択。登録後ファイルの移動はできない。
これでVPS上のDockerのMySQLに外部から接続することが可能。
cd /home/project_management
sudo mkdir backup
sudo chmod 700 backup
sudo vim backup.sh
weekday=date +%w
f=/home/project_management/backup/dump_${weekday}.sql
docker exec production_management mysqldump –single-transaction -u root -p●●● project_management > $f
sudo chmod 700 backup.sh
・cron
cd /etc/cron.d
sudo vim /etc/cron.d/mysql_backup
0 2 * * * root /home/project_management/backup.sh
sudo chmod 600 mysql_backup
sudo systemctl status cron