安価なプランのIndigoVPSで色々なOSS運用していたが、1つにまとめることにした。今回はXserverVPS。すでにOSSは稼働状態なので、新しい環境と並行稼働してから切り替えることにした。
ssh
sudo vim /etc/ssh/sshd_config
Port
>9922
PasswordAuthentication
ChallengeResponseAuthentication
GSSAPIAuthentication
>no
sudo service ssh restart
ufw
※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 [番号]
Docker
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
この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
|
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
MySQL Workbench
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に外部から接続することが可能。
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
Samba DC
今まで利用していなかったがSambaもインストールしてみた。開放ポートが多いのでXserverのパケットフィルタは停止してufwのみとした。
・ufw
sudo ufw allow from ●●●.●●●.●●●.●●● to any port 9922,3306,53,88,135,139,389,445,464,636,3268,3269 proto tcp
sudo ufw allow from ●●●.●●●.●●●.●●● to any port 53,88,389,464,137:138 proto udp
・フォルダ作成
cd /home
mkdir samba
cd samba
mkdir data
mkdir config
chmod -R 700 data
chmod -R 700 config
・Docker
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
|
services: samba: image: nowsci/samba-domain privileged: true container_name: samba-dc environment: - DOMAIN=●●●.local - DOMAINPASS=●●● - DNSFORWARDER=8.8.8.8 volumes: - /home/samba/data:/var/lib/samba - /home/samba/config:/etc/samba/external ports: - "53:53" - "53:53/udp" - "88:88" - "88:88/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" hostname: samba-dc network_mode: host restart: always cap_add: - NET_ADMIN - SYS_TIME |
docker compose up -d
53ポートが使用中とのことでエラー。
sudo lsof -i :53
vim /etc/systemd/resolved.conf
DNSStubListener
>no
に変更する。
systemctl restart systemd-resolved
docker compose up -d
ここで再度エラー。コンテナが再起動を繰り返している。
自動で再起動を繰り返しているので止める。
docker stop samba-dc
状態確認
docker ps
ログ確認
docker logs –tail 100 samba-dc
docker-compose.ymlに、もともと入っていなかった
privileged: true
を追加したら解決した。
DNSが問題ないか確認
nslookup ●●●.local サーバーIPアドレス
これでサーバーのIPアドレスが返ってくればOK。
今回は172.19.0.2(dockerのローカルIPアドレス)が返ってきていた。
Aレコード削除
docker exec samba-dc samba-tool dns delete localhost ●●●.local samba-dc A 172.19.0.2 -UAdministrator%●●●
Aレコード登録
docker exec samba-dc samba-tool dns add localhost ●●●.local samba-dc A サーバーIPアドレス -UAdministrator%●●●
コンテナ再起動
docker restart samba-dc
レコード確認
docker exec samba-dc samba-tool dns query localhost ●●●.local @ ALL -UAdministrator%●●●
・Windows
ncpa.cpl
利用しているNICのDNSをVPSのIPアドレスにする。
sysdm.cpl
コンピュータ名タブ>変更
ドメインを選択しドメイン名を入力する。
ユーザーはadministratorでパスワードはdocker-composeで指定したパスワードを入力する。
再起動したらログイン画面で
●●●.local\administrator
のように入力しログイン。
初回ログイン時は時間がかかる。
Windows RSAT 有効化
システム>オプション機能>機能表示>使用可能な機能を表示する
RSAT: ActiveDirectoryDomainServices およびライトウェイトディレクトリサービスツール
をチェックし追加する。
・Active Directory サイトとサービス
・Active Directory ドメインと信頼関係
・Active Directory ユーザーとコンピュータ
・Active Directory 管理センター(Samba-DCでは利用不可)
が有効化。
RSAT: グループポリシー管理ツール
をチェックし追加する。
・gpmc.msc
が有効化。