Alma Linux8 VPSにSyncthing

2024年2月19日

Alma Linux8のVPSにSyncthingをインストールして設定してみる。このVPSには当然X環境は無い。

インストール

たぶんデフォルトのパッケージに含まれる。

※間違い。おそらくepelリポジトリなので、無い場合は追加しておく。

dnf install syncthing

起動設定

rootで動作させる。

 systemctl enable  syncthing@root.service
 systemctl start  syncthing@root.service

同期用ポートのオープン

※この項はTailnet内でのみ使う場合は不要。trustedしか使わないので、ポートは既に空いている。

ポートが開いてないので、開けるのだが、Firewall Setupを参考にする。

これは、外部にポートを全公開してしまうが、全く問題は無い。

ただし、実際にはTailnetのVPN環境でしか使わず、それはtrustedゾーンになっているので、publicではなくtrustedでも十分。trustedの場合は、デフォルトですべてのポートが開いてるので、何もする必要はない。つまり、以下は行う必要がない。

sudo firewall-cmd --zone=public --add-service=syncthing --permanent
sudo firewall-cmd --reload

ちなみに「cat /usr/lib/firewalld/services/syncthing.xml」

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Syncthing</short>
  <description>Syncthing is a Peer-to-Peer file synchronization service. Enable this option, if you plan to run the Synthing service.</description>
  <port protocol="tcp" port="22000"/>
  <port protocol="udp" port="21027"/>
</service>

制御用GUIポートのオープン

※この項はTailnet内でのみ使う場合は不要。trustedしか使わないので、ポートは既に空いている。

これについては注意。このままだと、制御GUIに誰でもアクセスできてしまう。何らかの保護をしないといけない。以下ではゾーンをpublicではなく、trustedにしているので注意。

※ここは間違い。trustedの場合はデフォルトで全ポートが開いてるので、何もする必要はない。

sudo firewall-cmd --zone=trusted --add-service=syncthing-gui --permanent
sudo firewall-cmd --reload

ちなみに「cat /usr/lib/firewalld/services/syncthing-gui.xml」

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Syncthing GUI</short>
  <description>Enable this option in addition to the Syncthing option to allow traffic to the Syncthing web interface. (Be sure to secure it accordingly).</description>
  <port protocol="tcp" port="8384"/>
</service>

GUIリッスンアドレスの変更

※この項はTailnet内でのみの利用でも必要。

Syncthing Configurationを参考。

制御用GUIポートをtrustedゾーンに対してオープンしても、デフォルトでは、ローカルホストからの接続しか受け付けない。これを変更する。

rootで起動しているため、/root/.config/syncthing以下に設定ファイルができている(バージョンによっては、/root/.local/state/syncthing)。ここのconfig.xmlを編集する。127.0.0.1だったところを、0.0.0.0に変更。

    <gui enabled="true" tls="false" debugging="false">
        <address>0.0.0.0:8384</address>
        <apikey>bNFoMiwL2E7dRoLDGND2f99uR4dGkngM</apikey>
        <theme>default</theme>
    </gui>

そして以下を行う。

 systemctl restart syncthing@root.service

制御画面

GUIポートを開放しているtrustedゾーンは、VPSのTailnet内からしかアクセスできない。同じTailnet内にあるパソコンのブラウザで「http://100.64.0.3:8384」などとしてアクセスする。

あとは、他のSyncthingと同じ扱いだ。ただし、パスワードを設定しないと「危険だ!」という警告が出続ける。この環境ではパスワードなど必要ないのでこれがうっとおしい。