웹사이트 검색

Ubuntu 20.04에 Syncthing을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 두 서버 모두에 Syncthing Server 설치
  4. 두 서버 모두에 Systemd Unit 파일 생성
  5. 동기화 웹 인터페이스 액세스\n
  6. 동기화를 위한 역방향 프록시로 Nginx 구성\n
  7. 결론

Syncthing은 네트워크에 있는 둘 이상의 컴퓨터 간에 파일을 동기화하는 데 사용되는 오픈 소스 도구입니다. 피어 투 피어 아키텍처를 사용하고 장치 간에 직접 데이터를 교환합니다. 여러 장치 간에 전송되는 모든 데이터는 TLS로 암호화됩니다. 하나의 Syncthing 머신에서 데이터를 생성, 수정 또는 삭제할 때마다 자동으로 다른 서버에 복제됩니다. Linux, Windows, Mac OS X 등 모든 주요 운영 체제에 설치할 수 있습니다.

이 가이드에서는 Ubuntu 20.04에서 Syncthing 서버를 설치하고 설정하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 20.04를 실행하는 두 대의 서버.\n
  • 서버 IP를 가리키는 유효한 도메인 이름입니다.\n
  • 루트 암호는 두 서버 모두에서 구성됩니다.\n

시작하기

먼저 다음 명령을 실행하여 시스템 패키지를 업데이트된 버전으로 업데이트합니다.

apt-get update -y

모든 패키지가 업데이트되면 다음 단계로 진행할 수 있습니다.

두 서버 모두에 Syncthing Server 설치

기본적으로 Syncthing 패키지는 Ubuntu 20.04 기본 리포지토리에 포함되어 있지 않습니다. 따라서 Syncthing 리포지토리를 APT에 추가해야 합니다.

먼저 다음 명령을 사용하여 두 서버에 필요한 모든 종속 항목을 설치합니다.

apt-get install gnupg2 curl apt-transport-https -y

그런 다음 다음 명령을 사용하여 릴리스 키를 다운로드하고 추가합니다.

curl -s https://syncthing.net/release-key.txt | apt-key add -

다음으로 다음 명령을 사용하여 Syncthing 리포지토리를 APT에 추가합니다.

echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

다음으로 리포지토리를 업데이트하고 다음 명령을 사용하여 Syncthing 서버를 설치합니다.

apt-get update -y
apt-get install syncthing -y

설치가 완료되면 다음 명령을 사용하여 Syncthing 버전을 확인합니다.

syncthing --version

다음 출력이 표시되어야 합니다.

syncthing v1.18.0 "Fermium Flea" (go1.16.5 linux-amd64)  2021-06-21 20:53:50 UTC [noupgrade]

이 시점에서 Syncthing은 두 서버 모두에 설치됩니다. 이제 다음 단계를 진행할 수 있습니다.

두 서버 모두에서 Systemd Unit 파일 생성

다음으로 Syncthing 서비스를 관리하기 위한 시스템 단위 파일을 생성해야 합니다. 다음 명령을 사용하여 두 서버 모두에서 만들 수 있습니다.

nano /etc/systemd/system/

다음 줄을 추가합니다.

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

완료되면 파일을 저장하고 닫습니다. 그런 다음 systemd 데몬을 다시 로드하여 구성을 적용합니다.

systemctl daemon-reload

다음으로 다음 명령을 사용하여 Syncthing 서비스를 시작합니다.

systemctl start 

Syncthing 서비스의 상태를 확인하려면 다음 명령을 실행합니다.

systemctl status 

다음 출력이 표시되어야 합니다.

?  - Syncthing - Open Source Continuous File Synchronization for root
     Loaded: loaded (/etc/systemd/system/; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 04:40:12 UTC; 5s ago
       Docs: man:syncthing(1)
   Main PID: 2878 (syncthing)
      Tasks: 14 (limit: 2353)
     Memory: 44.2M
     CGroup: /system.slice/system-syncthing.slice/
             ??2878 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
             ??2889 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0

Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: QUIC listener ([::]:22000) starting
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or d>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Creating new HTTPS certificate
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: GUI and API listening on [::]:8384
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: My name is "node1"
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] WARNING: Syncthing should not run as a privileged or system user. Please consider using a norma>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 resolved external address quic://45.58.35.6:22000 (via stun.syncthin>

이 시점에서 Syncthing 서비스가 시작되고 포트 8384에서 수신 대기합니다. 다음 명령으로 확인할 수 있습니다.

ss -antpl | grep 8384

다음 출력이 표시되어야 합니다.

LISTEN    0         4096                     *:8384                   *:*        users:(("syncthing",pid=2889,fd=12))    

동기화 웹 인터페이스에 액세스

다음으로 웹 브라우저를 열고 URL http://first-server-ip:8384 및 http://first-server-ip:8384를 사용하여 Syncthing 웹 인터페이스에 액세스합니다.

다음 화면이 표시됩니다.

설정을 클릭하여 아래와 같이 관리 사용자 및 암호를 정의합니다.

사용자 이름, 비밀번호를 입력하고 저장 버튼을 클릭하여 변경 사항을 적용하십시오. Syncthing 로그인 페이지로 리디렉션됩니다.

관리자 사용자 이름, 비밀번호를 제공하고 로그인 버튼을 클릭합니다. 다음 화면이 표시됩니다.

다음으로 두 서버 간에 파일을 동기화하려면 각 서버의 장치 ID를 다른 서버에 추가해야 합니다. 이렇게 하려면 두 서버에서 작업 > ID 표시 버튼을 클릭합니다. 다음 화면이 표시됩니다.

첫 번째 서버에서 원격 장치 추가를 클릭합니다. 다음 화면이 표시됩니다.

두 번째 서버의 장치 ID를 제공하고 저장 버튼을 클릭합니다.

두 번째 서버에서 원격 장치 추가를 클릭합니다. 다음 화면이 표시됩니다.

첫 번째 서버의 장치 ID를 입력하고 저장 버튼을 클릭합니다. 다음 화면이 표시됩니다.

이제 두 번째 서버와 동기화할 폴더를 추가하고 공유해야 합니다. 폴더 추가 버튼을 클릭합니다. 다음 화면이 표시됩니다.

폴더 레이블, 폴더 경로를 제공하고 공유 탭을 클릭합니다. 다음 화면이 표시됩니다.

두 번째 서버를 선택하고 저장 버튼을 클릭합니다. 다음 화면이 표시됩니다.

그런 다음 두 번째 서버로 이동하여 모두 다시 검색 버튼을 클릭합니다. 다음 화면이 표시됩니다.

추가를 클릭하여 첫 번째 서버에서 공유되는 백업 폴더를 추가합니다. 다음 화면이 표시됩니다.

이제 첫 번째 서버의 백업 폴더에서 파일을 만들거나 수정할 때마다 자동으로 두 번째 서버에 동기화됩니다.

Nginx를 동기화를 위한 리버스 프록시로 구성

Nginx를 역방향 프록시로 설정하여 포트 80을 통해 Syncthing 서버에 액세스할 수도 있습니다.

먼저 다음 명령을 사용하여 Nginx 서버를 설치합니다.

apt-get install nginx -y

다음으로 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/conf.d/syncthing.conf

다음 줄을 추가합니다.

server {
  listen 80;
  server_name syncthing.example.com;

  access_log /var/log/nginx/syncthing.access.log;
  error_log /var/log/nginx/syncthing.error.log;
  location / {
    proxy_pass http://127.0.0.1:8384;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

파일을 저장하고 닫은 후 다음 명령을 사용하여 구문 오류가 있는지 Nginx를 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

다음으로 Nginx를 다시 로드하여 변경 사항을 적용합니다.

systemctl reload nginx

다음 명령을 사용하여 Nginx의 상태를 확인할 수도 있습니다.

systemctl status nginx

다음 출력이 표시되어야 합니다.

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:01:36 UTC; 21s ago
       Docs: man:nginx(8)
   Main PID: 3394 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??3394 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3395 nginx: worker process

Jul 09 05:01:36 node1 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 09 05:01:36 node1 systemd[1]: Started A high performance web server and a reverse proxy server.

이제 URL http://syncthing.example.com을 사용하여 Syncthing 서버에 액세스할 수 있습니다.

결론

축하합니다! 두 개의 Ubuntu 20.04 서버에 Syncthing을 성공적으로 설치 및 구성했으며 두 서버 간의 동기화를 설정했습니다. 이 튜토리얼이 서버 백업에 도움이 되기를 바랍니다.