R, Python, DB 備忘録

データベースとか、jupyter(Python)、Rとか色々

Lubuntu 20.04 自宅サーバー構築メモ

全部きちんと書くと大変なので、とりあえずは自分用に殴り書き
少しずつ正確な手順に書き換えていきたい...

目的(用途)

  • VPNサーバー
  • ネットワークストレージ
  • pythonプログラムの定期実行(深夜ラジオの録音)

環境

  • マシン:LIVA X2
    • CPU:Intel Celeron
    • メモリ:2GB
    • ストレージ:eMMC 32GB

www.ecsjpn.co.jp

  • OS:Lubuntu 20.04

以下、手順

OSインストール

  • 言語:English、タイムゾーン:東京
  • 個人用のフォルダが「ダウンロード」等日本語名になるのがあまり好きではないため

初期準備

sudo apt update
sudo apt upgrade
sudo apt install gcc make ffmpeg

ファイアウォールの有効化

sudo ufw enable

日本語環境

sudo apt install fcitx-mozc

リモートデスクトップ(RDP)

  • とりあえず面倒な設定をしなくても、WindowsやRemminaで繋げることができた。
  • あ、でもポートは空けないとダメでした。
  • それと、なぜかRDPするとシェルでpipenvにパスが通っていなかった。
    • ポート番号はデフォルト値を記載
sudo apt install xrdp
sudo ufw allow 3389

VPNサーバー(サーバー側)

ja.softether.org

ダウンロード

解凍

tar xzvf softether-vpnserver-********.tar.gz

実行可能ファイルの生成

sudo make

VPN Server の配置

  • /usr/local/以下にvpnserverフォルダを移動する。
    • 以下、この場所にある前提での記載なので留意

vpncmd の check コマンドによる動作チェック

systemdへの登録

  • ドキュメントでは、「vpncmd の check コマンドによる動作チェック」の次は「スタートアップスクリプトの登録」となっているが、systemdに登録したいので以下のようにする。
  • サービス設定ファイルの作成
    • /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target
  • サービス登録
sudo systemctl enable vpnserver
sudo systemctl start vpnserver

各種設定

  • VPNサーバーの管理画面に入る
    • 1~3の選択肢では1を選ぶ
cd /usr/local/vpnserver
sudo ./vpncmd
サーバー管理者パスワードの設定
    • 全部小文字でもOK(以下、本節で同様)
ServerPasswordSet
HUBを選択
    • 新しく作ることもできるがDEFAULTでいいと思う。
Hub DEFAULT
グループ作成
    • グループ名は何でもよい。自分はdefaultにした。
GroupCreate
ユーザー作成
    • クライアント(ノートPCやiPhoneAndroid)でVPN設定する際に使う
UserCreate
    • パスワードを設定しておく
UserPasswordSet
IPsec / L2TP での通信を有効化
    • 下記を参考に入力
    • 事前共有キーは、vpnとかがよく紹介されていますけどどうなんですかね...
VPN Server/DEFAULT>IPsecEnable
IPsecEnable command - Enable or Disable IPsec VPN Server Function
Enable L2TP over IPsec Server Function (yes / no): yes

Enable Raw L2TP Server Function (yes / no): no

Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): no

Pre Shared Key for IPsec (Recommended: 9 letters at maximum): ********

Default Virtual HUB in a case of omitting the HUB on the Username: DEFAULT

The command completed successfully.
SecureNat を有効化
    • 仮想DHCPとNATみたいのが有効になるらしい(極めて雑な理解)
SecureNatEnable

ポート開放

sudo ufw allow 500/udp
sudo ufw allow 4500/udp

ポートフォワーディング(ポート変換)

  • ルーター管理画面で設定
  • ポート500と4500に入ってきたものを対象のマシンのローカルIPの500と4500に流す設定をする。
    • UDPだけでOK

DDNSの取得 ※1回だけでOK

0-59 * * * * wget -O DDNSNow_update.log "https://f5.si/update.php?domain=<ユーザー名>&password=<パスワード名>"

クライアント側の設定

  • iPhoneの例
    • General - VPN & Device Management
      • Type: L2TP
      • Server:
      • Account:<ユーザー名>@DEFAULT
      • RSA SecurID:なし
      • Password:
      • Secret:<事前共有キー>

ネットワークストレージ

自動マウント

  • LIVAは本体eMMCが32GBしかないので、USB HDDをつなげている。
  • サーバーとしては自動マウントしてほしいので以下の手順で
    • UUIDの確認
      • sda2かもしれないので、適宜
sudo blkid /dev/sda1
    • fstabに書き込み
      • ルートディレクトリにマウントする行を消してしまって全てやり直す羽目になったので注意して編集
sudo vi /etc/fstab
UUID=<確認したUUID> /mnt/abcdef<マウントポイント>  ext4    defaults   0 1

ssh/sftp

  • Lubuntu⇔Ubuntu間の共有用
    • Linux間は基本これでいけるのかな
sudo apt install openssh-server

smb

  • Lubuntu⇔Windows, Chromebook間の共有用
  • Sambaを使用するが、設定が複雑なので、WebminでGUI(ブラウザアプリ)から設定
smb用のユーザー作成
  • ユーザー名もパスワードもLubuntuと同じで作成した。
sudo pdbedit -a (ユーザー名)
Webmin
  • ダウンロードおよびインストール
echo "deb http://download.webmin.com/download/repository sarge contrib" | sudo tee /etc/apt/sources.list.d/webmin.list
wget http://www.webmin.com/jcameron-key.asc -O - | sudo apt-key add -
sudo apt update -y && sudo apt upgrade -y && sudo apt install -y webmin
  • 共有の作成
    • サーバー - Sambaファイル共有
    • マウントポイントは先ほどfstabに記載したもの
  • アクセス権限の編集
    • 書き込み可能:見るだけならNoでもいいのかもしれない。
    • ゲスト:基本は認証ありにしています。
  • Sambaサービスの再起動
ポート開放
sudo ufw allow 137:138/udp
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp     # WindowsやiPhoneからアクセスするなら
クライアント側