UbuntuServer16.04にGNOMEをインストールする

※ UbuntuServerをMinimalインストールした前提の手順です

パッケージ名が分からないので検索してみる。

# apt-cache search GNOME

普通にgnomeだったのでインストール。

# apt-get install gnome

GUIを開始しようとstartxしたらxinitインストールしろって言われた。

# apt-get install xinit

これでstartxでGUIが表示された。

CentOS7にWindowsからリモートデスクトップ

GNOME入ってなかったら入れて。

# yum groupinstall "GNOME Desktop"

xrdpのインストール。

# yum install epel-release
# yum install xrdp
# yum install tigervnc-server

/etc/xrdp/xrdp.iniの下記箇所を変更する。

#max_bpp=32
max_bpp=24

ファイアウォールに例外を登録する。

# firewall-cmd --add-port=3389/tcp --permanent
# firewall-cmd --reload

サービスを有効にして、起動。

# systemctl enable xrdp
# systemctl start xrdp

CentOS7でのSoftEtherVPNのインストール手順

OS:CentOS7 1708
SoftetherVPN:4.25

ビルドするためのパッケージをインストール。

# yum install kernel-devel
# yum install kernel-headers
# yum groupinstall "Development Tools"

http://www.softether-download.com/ja.aspx?product=softetherからOSに合ったVPN ServerのURLを取得しセットアップファイルを取得する。

$ wget [URL]

ダウンロードしたファイルを移動。

# mv ファイル名.tar.gz /usr/local/

ファイルを展開。

# tar xvzf ファイル名.tar.gz

インストールディレクトリに移動。

# cd /usr/local/vpnserver/

ビルドするためにmakeコマンドの実行。

# make

/etc/systemd/system/vpnserver.serviceを下記内容で作成する。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

自動起動を有効にして、サービスを起動する。

# systemctl enable vpnserver
# systemctl start vpnserver

一度ファイアウォールをOFFに。

# systemctl stop firewalld

設定ツールをさっきのとこからダウンロード。設定をウィザードでWindowsから行った。

下記ポート開放して、とりあえず動いてる。
50/tcp 500/udp 4500/udp

ファイアウォールをONに戻して、例外を登録する。

# systemctl start firewalld
# firewall-cmd --add-port=50/tcp --permanent
# firewall-cmd --add-port=500/udp --permanent
# firewall-cmd --add-port=4500/udp --permanent
# firewall-cmd --reload

hubiCを契約してReadyNAS102のバックアップに設定

Pogoplugに続きAmazonCloudDriveの無制限プランも終了を宣告されたため、自宅のNASの外部バックアップをどうしようか、昨年の秋頃から悩んでまして、忙しさにかまけている間にAmazonCloudDriveが2/26で契約満了してしまいました orz…
ただ、預けているファイルは180日間は保管してくれるようなので、昨日まで悠々と後釜を探してました。そこで見つけたラストサムライが「hubiC」でした。50ユーロ(6,500円程度)で1年間10TB貸してくれるので、うちのNASのバックアップには十分です。即契約。

その1 hubicfuse+rsync 編 (失敗しました)

事前準備

hubiCにログインして「My account」→「Developers」→「Add an application」を実行。「Last name」にアプリ名など「Redirection domain」に何かURLを入力して、生成されたIDとシークレットキーを保管しておく。(RedirectionDomainは具体的に何に使うのか分からなかった)

ReadyNAS102にhubicfuseをインストールする

SSHでログインしてインストール。ReadyNASはDebian系のOSなので

# apt-get install hubicfuse

configurationファイルの作成

/usr/share/doc/hubicfuse/README.Debianに説明によると下記内容のファイルを「$HOME/.cloudfuse」として作成するらしい。今回は「/root/.cloudfuse」とする。

username=[Hubic user e-mail]
password=[Hubic password]
client_id=[Hubic client id for the registered application]
client_secret=[Hubic client secret for the registered application]
redirect_uri=[Hubic redirect uri as registered for the application]

マウントしてみる

README.Debianによると下記のコマンドでマウントするらしい。

# hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

コピー速度

試しに307,345KBのzipファイルをコピーしてみたところ216秒程度かかったので、毎秒1.4MB程度の速度のようです。

rsyncでBroken pipe (32)

よし、あとはrsyncでバックアップしようと、試しに実行してみたところ、5GBを超える7zファイルをコピー中にどうしてもエラー終了する。–bwlimitや–timeoutオプションも色々試しても、早ければ30MB程度の進捗でエラー終了する。成功する場合も稀にあるが、次の大容量ファイルで結局エラーが出る。なぜだろう。ちょっと分からなかった。

はまってる時間も無いので方向転換

「rsync cloud backup」というキーワードでググると「rsync for cloud storage」というコンセプトのrcloneが出てきた。自分が今、やりたいことがそのままソフトウェアになっていました。最初からこれを使えば良かった orz… でも、ありがとう。作者さん。

その2 rclone 編 (成功しました)

事前準備

hubiCにログインして「My account」→「Developers」→「Add an application」を実行。「Last name」にアプリ名など「Redirection domain」にhttp://localhost:53682/を入力して、生成されたIDとシークレットキーを保管しておく。

rcloneのインストール

このときは1.39が最新だった。早速インストール。

wget https://downloads.rclone.org/rclone-v1.39-linux-arm.zip
unzip rclone-v1.39-linux-arm.zip
cp rclone-v1.39-linux-arm/rclone /usr/local/bin/

設定ファイルを作成

「rclone config」コマンドで対話形式で作成するのだが、Webブラウザが必須なので、SSHでログインしている状態では設定が完了できない。自分のWindowsパソコンで作業して、できたrclone.confをReadyNASにコピーすることにした。
※rclone.confの場所
Windows→ C:\Users\user_name\.config\rclone\rclone.conf
Debian→ /home/user_name/.config/rclone/rclone.conf

rclone config
2018/03/02 14:39:05 NOTICE: Config file "C:\\Users\\user_name\\.config\\rclone\\rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> hubic
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Box
   \ "box"
 5 / Cache a remote
   \ "cache"
 6 / Dropbox
   \ "dropbox"
 7 / Encrypt/Decrypt a remote
   \ "crypt"
 8 / FTP Connection
   \ "ftp"
 9 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
10 / Google Drive
   \ "drive"
11 / Hubic
   \ "hubic"
12 / Local Disk
   \ "local"
13 / Microsoft Azure Blob Storage
   \ "azureblob"
14 / Microsoft OneDrive
   \ "onedrive"
15 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
16 / Pcloud
   \ "pcloud"
17 / QingCloud Object Storage
   \ "qingstor"
18 / SSH/SFTP Connection
   \ "sftp"
19 / Webdav
   \ "webdav"
20 / Yandex Disk
   \ "yandex"
21 / http Connection
   \ "http"
Storage> 11
Hubic Client Id - leave blank normally.
client_id> xxxxxxxxxxxxxxx
Hubic Client Secret - leave blank normally.
client_secret> xxxxxxxxxxxxxxxxxxxxxxxx
Remote config
Make sure your Redirect URL is set to "http://localhost:53682/" in your custom config.
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
--------------------
[hubic]
client_id = xxxxxxxxxxxxxxx
client_secret = xxxxxxxxxxxxxxxxxxxxxxxx
token = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Bearer","refresh_token":"xxxxxxxxxxxxxxx","expiry":"2018-03-02T20:39:46.0624465+09:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

試しにhubiC上のディレクトリを一覧表示してみる

設定がちゃんとしていれば表示されるはず。

rclone lsd hubic:

試しにコピー

試しに先程の5GBの7zファイルが入ったディレクトリを同期してみたところ、1時間ちょっとで同期完了した。あれ、速い。マルチスレッドなのか、仕組みは良く分からないが、完了が早くて素晴らしい。思わぬ副産物。

rclone sync -v /data/public/test/ hubic:test/

シェルスクリプトの作成

viで/root/sh/backup.shを作成。cronで実行するのでフルパスで記述。うちのNASには “[作業用]” というテンポラリディレクトリがあるので、それは除外。あと隠しファイルも。
ちなみに-cオプションつけるとチェックサムによる差分比較になるらしい。

/usr/bin/rclone sync -v --exclude "\[作業用\]/**" --exclude ".**" /data/public/ hubic:BACKUP/

フルバックアップ

初回のフルバックアップは半月程度かかる計算になるので、増分バックアップのジョブを登録する前に実施する。

cronにジョブを登録

フルバックアップが完了したら、トラフィックの少なそうな毎朝3時の増分バックアップジョブを登録する。ログっぽいのも残す。

# crontab -e -u root
00 03 * * * /bin/sh /root/sh/backup.sh 2>&1 | tee /root/sh/backup.log

LibreOfficeのVBでファイルの保存ダイアログを表示する

Dim filePicker As Object
filePicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
filePicker.initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE))
filePicker.appendFilter("テキストファイル(*.txt)", "*.txt")
If filePicker.execute() = 1 Then
    Dim saveFiles() As String
    saveFiles = filePicker.getFiles()
    Dim saveFileUrl As String
    saveFileUrl = saveFiles(0)
    Dim saveFilePath As String
    saveFilePath = ConvertFromURL(saveFileUrl)
    MsgBox(saveFilePath) '拡張子付いてないかも
End If

LibreOfficeのVBでファイルの選択ダイアログを表示する

Dim filePicker As Object
filePicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
filePicker.initialize(Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE))
filePicker.appendFilter("テキストファイル(*.txt)", "*.txt")
filePicker.appendFilter("HTMLファイル(*.htm, *.html)", "*.htm;*.html")
filePicker.appendFilter("すべてのファイル(*.*)", "*.*")
If filePicker.execute() = 1 Then
    Dim loadFiles() As String
    loadFiles = filePicker.getFiles()
    Dim loadFileUrl As String
    loadFileUrl = loadFiles(0)
    Dim loadFilePath As String
    loadFilePath = ConvertFromURL(loadFileUrl)
    MsgBox(loadFilePath)
End If