syncthing.ghuang.top Open in urlscan Pro
52.77.121.0  Public Scan

URL: https://syncthing.ghuang.top/
Submission: On June 17 via api from US — Scanned from SG

Form analysis 10 forms found in the DOM

Name: deviceEditor

<form role="form" name="deviceEditor" class="ng-pristine ng-valid ng-valid-min ng-valid-pattern">
  <ul class="nav nav-tabs" ng-init="loadFormIntoScope(deviceEditor)">
    <li class="active"><a data-toggle="tab" href="#device-general"><span class="fas fa-cog"></span> <span translate="" class="ng-scope">General</span></a></li>
    <!-- ngIf: !editingDeviceDefaults() -->
    <li ng-if="!editingDeviceDefaults()" class="ng-scope"><a data-toggle="tab" href="#device-sharing"><span class="fas fa-share-alt"></span> <span translate="" class="ng-scope">Sharing</span></a></li><!-- end ngIf: !editingDeviceDefaults() -->
    <li><a data-toggle="tab" href="#device-advanced"><span class="fas fa-cogs"></span> <span translate="" class="ng-scope">Advanced</span></a></li>
  </ul>
  <div class="tab-content">
    <div id="device-general" class="tab-pane in active">
      <!-- ngIf: !editingDeviceDefaults() -->
      <div ng-if="!editingDeviceDefaults()" class="form-group ng-scope" ng-class="{'has-error': deviceEditor.deviceID.$invalid &amp;&amp; deviceEditor.deviceID.$dirty}" ng-init="loadFormIntoScope(deviceEditor)">
        <label translate="" for="deviceID" class="ng-scope">Device ID</label>
        <div class="input-group">
          <!-- ngIf: editingDeviceNew() -->
          <!-- ngIf: !editingDeviceNew() -->
          <div ng-if="!editingDeviceNew()" class="well well-sm form-control text-monospace select-on-click ng-binding ng-scope" style="height: auto;"></div><!-- end ngIf: !editingDeviceNew() -->
          <div id="shareDeviceIdButtons" class="input-group-btn">
            <button data-container="body" type="button" class="btn btn-default" ng-click="copyToClipboard($event, currentDevice.deviceID)" ng-disabled="editingDeviceNew() &amp;&amp; !deviceEditor.deviceID.$valid" tooltip=""
              data-original-title="Copy">
              <span class="fa fa-lg fa-clone"></span>
            </button>
            <button data-container="body" type="button" class="btn btn-default" ng-click="shareDeviceIdDialog('email')" ng-disabled="editingDeviceNew() &amp;&amp; !deviceEditor.deviceID.$valid" tooltip="" data-original-title="Share by Email">
              <span class="fa fa-lg fa-envelope-o"></span>
            </button>
            <button data-container="body" type="button" class="btn btn-default" ng-click="shareDeviceIdDialog('sms')" ng-disabled="editingDeviceNew() &amp;&amp; !deviceEditor.deviceID.$valid" tooltip="" data-original-title="Share by SMS">
              <span class="fa fa-lg fa-comments-o"></span>
            </button>
            <button data-container="body" type="button" class="btn btn-default" data-toggle="modal" data-target="#idqr" ng-disabled="editingDeviceNew() &amp;&amp; !deviceEditor.deviceID.$valid" tooltip="" data-original-title="Show QR">
              <span class="fa fa-lg fa-qrcode"></span>
            </button>
          </div>
        </div>
        <!-- ngIf: editingDeviceNew() -->
      </div><!-- end ngIf: !editingDeviceDefaults() -->
      <div class="form-group">
        <label translate="" for="name" class="ng-scope">Device Name</label>
        <input id="name" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="currentDevice.name">
        <!-- ngIf: currentDevice.deviceID == myID -->
        <!-- ngIf: currentDevice.deviceID != myID -->
        <p translate="" ng-if="currentDevice.deviceID != myID" class="help-block ng-scope">Shown instead of Device ID in the cluster status. Will be updated to the name the device advertises if left empty.</p>
        <!-- end ngIf: currentDevice.deviceID != myID -->
      </div>
    </div>
    <!-- ngIf: !editingDeviceDefaults() -->
    <div ng-if="!editingDeviceDefaults()" id="device-sharing" class="tab-pane ng-scope">
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <div ng-disabled="currentDevice.untrusted" class="checkbox" ng-attr-tooltip="{{currentDevice.untrusted ? null : undefined}}"
              ng-attr-data-original-title="{{currentDevice.untrusted ? ('Always disabled for untrusted devices' | translate) : undefined}}" title="">
              <label>
                <input ng-disabled="currentDevice.untrusted" type="checkbox" ng-model="currentDevice.introducer" class="ng-pristine ng-untouched ng-valid">
                <span translate="" class="ng-scope">Introducer</span>
                <p translate="" class="help-block ng-scope">Add devices from the introducer to our device list, for mutually shared folders.</p>
              </label>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <div ng-disabled="currentDevice.untrusted" class="checkbox" ng-attr-tooltip="{{currentDevice.untrusted ? null : undefined}}"
              ng-attr-data-original-title="{{currentDevice.untrusted ? ('Always disabled for untrusted devices' | translate) : undefined}}" title="">
              <label>
                <input ng-disabled="currentDevice.untrusted" type="checkbox" ng-model="currentDevice.autoAcceptFolders" class="ng-pristine ng-untouched ng-valid">
                <span translate="" class="ng-scope">Auto Accept</span>
                <p translate="" class="help-block ng-scope">Automatically create or share folders that this device advertises at the default path.</p>
              </label>
            </div>
          </div>
        </div>
      </div>
      <div class="form-group">
        <!-- ngIf: currentSharing.shared.length -->
        <!-- ngIf: currentSharing.unrelated.length -->
      </div>
    </div><!-- end ngIf: !editingDeviceDefaults() -->
    <div id="device-advanced" class="tab-pane">
      <div class="row form-group">
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" for="addresses" class="ng-scope">Addresses</label>
            <input ng-disabled="currentDevice.deviceID == myID" id="addresses" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="currentDevice._addressesStr">
            <p translate="" class="help-block ng-scope">Enter comma separated ("tcp://ip:port", "tcp://host:port") addresses or "dynamic" to perform automatic discovery of the address.</p>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" class="ng-scope">Compression</label>
            <select class="form-control ng-pristine ng-untouched ng-valid" ng-model="currentDevice.compression">
              <option value="? undefined:undefined ?"></option>
              <option value="always" translate="" class="ng-scope">All Data</option>
              <option value="metadata" translate="" class="ng-scope">Metadata Only</option>
              <option value="never" translate="" class="ng-scope">Off</option>
            </select>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6" ng-class="{'has-error': deviceEditor.numConnections.$invalid &amp;&amp; deviceEditor.numConnections.$dirty}">
          <label translate="" class="ng-scope">Connection Management</label>
          <div class="row">
            <span class="col-md-8">
              <span translate="" class="ng-scope">Number of Connections</span>
              &nbsp;<a href="https://docs.syncthing.net/advanced/device-numconnections?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
            </span>
            <div class="col-md-4">
              <input name="numConnections" id="numConnections" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min ng-valid-pattern" type="number" pattern="\d+" ng-model="currentDevice.numConnections" min="0">
            </div>
          </div>
          <!-- ngIf: !deviceEditor.numConnections.$valid && deviceEditor.numConnections.$dirty -->
          <!-- ngIf: deviceEditor.numConnections.$valid || deviceEditor.numConnections.$pristine -->
          <p class="help-block ng-scope" ng-if="deviceEditor.numConnections.$valid || deviceEditor.numConnections.$pristine" translate="">When set to more than one on both devices, Syncthing will attempt to establish multiple concurrent connections.
            If the values differ, the highest will be used. Set to zero to let Syncthing decide.</p><!-- end ngIf: deviceEditor.numConnections.$valid || deviceEditor.numConnections.$pristine -->
        </div>
        <div class="col-md-6 form-group">
          <label translate="" class="ng-scope">Device rate limits</label>
          <div class="row">
            <div class="col-md-12" ng-class="{'has-error': deviceEditor.maxRecvKbps.$invalid &amp;&amp; deviceEditor.maxRecvKbps.$dirty}">
              <div class="row">
                <span class="col-md-8 ng-scope" translate="">Incoming Rate Limit (KiB/s)</span>
                <div class="col-md-4">
                  <input name="maxRecvKbps" id="maxRecvKbps" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min ng-valid-pattern" type="number" pattern="\d+" ng-model="currentDevice.maxRecvKbps" min="0">
                </div>
              </div>
              <!-- ngIf: !deviceEditor.maxRecvKbps.$valid && deviceEditor.maxRecvKbps.$dirty -->
            </div>
            <div class="col-md-12" ng-class="{'has-error': deviceEditor.maxSendKbps.$invalid &amp;&amp; deviceEditor.maxSendKbps.$dirty}">
              <div class="row">
                <span class="col-md-8 ng-scope" translate="">Outgoing Rate Limit (KiB/s)</span>
                <div class="col-md-4">
                  <input name="maxSendKbps" id="maxSendKbps" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min ng-valid-pattern" type="number" pattern="\d+" ng-model="currentDevice.maxSendKbps" min="0">
                </div>
              </div>
              <!-- ngIf: !deviceEditor.maxSendKbps.$valid && deviceEditor.maxSendKbps.$dirty -->
              <!-- ngIf: (deviceEditor.maxSendKbps.$valid || deviceEditor.maxSendKbps.$pristine) && (deviceEditor.maxRecvKbps.$valid || deviceEditor.maxRecvKbps.$pristine) -->
              <p class="help-block ng-scope" ng-if="(deviceEditor.maxSendKbps.$valid || deviceEditor.maxSendKbps.$pristine) &amp;&amp; (deviceEditor.maxRecvKbps.$valid || deviceEditor.maxRecvKbps.$pristine)" translate="">The rate limit is applied to
                the accumulated traffic of all connections to this device.</p><!-- end ngIf: (deviceEditor.maxSendKbps.$valid || deviceEditor.maxSendKbps.$pristine) && (deviceEditor.maxRecvKbps.$valid || deviceEditor.maxRecvKbps.$pristine) -->
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="form-group col-md-6">
          <input type="checkbox" id="untrusted" ng-model="currentDevice.untrusted" ng-change="editDeviceUntrustedChanged()" class="ng-pristine ng-untouched ng-valid">
          <label for="untrusted" translate="" class="ng-scope">Untrusted</label>
          <p translate="" class="help-block ng-scope">All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.</p>
        </div>
      </div>
    </div>
  </div>
</form>

Name: folderEditor

<form role="form" name="folderEditor" class="ng-pristine ng-valid-folder-path-errors ng-invalid ng-invalid-required ng-valid-min">
  <ul class="nav nav-tabs" ng-init="loadFormIntoScope(folderEditor)">
    <li ng-class="{'disabled': currentFolder._editing == 'new-ignores'}" class="active"><a data-toggle="tab" href="#folder-general"><span class="fas fa-cog"></span> <span translate="" class="ng-scope">General</span></a></li>
    <li ng-class="{'disabled': currentFolder._editing == 'new-ignores'}"><a data-toggle="tab" href="#folder-sharing"><span class="fas fa-share-alt"></span> <span translate="" class="ng-scope">Sharing</span></a></li>
    <li ng-class="{'disabled': currentFolder._editing == 'new-ignores'}"><a data-toggle="tab" href="#folder-versioning"><span class="fa fa-files-o"></span> <span translate="" class="ng-scope">File Versioning</span></a></li>
    <li ng-class="{'disabled': currentFolder._recvEnc}"><a data-toggle="tab" href="#folder-ignores"><span class="fas fa-filter"></span> <span translate="" class="ng-scope">Ignore Patterns</span></a></li>
    <li ng-class="{'disabled': currentFolder._editing == 'new-ignores'}"><a data-toggle="tab" href="#folder-advanced"><span class="fas fa-cogs"></span> <span translate="" class="ng-scope">Advanced</span></a></li>
  </ul>
  <div class="tab-content">
    <div id="folder-general" class="tab-pane in active">
      <div class="form-group" ng-class="{'has-error': folderEditor.folderLabel.$invalid &amp;&amp; folderEditor.folderLabel.$dirty &amp;&amp; !editingFolderDefaults()}">
        <label for="folderLabel"><span translate="" class="ng-scope">Folder Label</span></label>
        <input name="folderLabel" id="folderLabel" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="currentFolder.label" value="">
        <p class="help-block">
          <!-- ngIf: folderEditor.folderLabel.$valid || folderEditor.folderLabel.$pristine --><span translate="" ng-if="folderEditor.folderLabel.$valid || folderEditor.folderLabel.$pristine" class="ng-scope">Optional descriptive label for the folder.
            Can be different on each device.</span><!-- end ngIf: folderEditor.folderLabel.$valid || folderEditor.folderLabel.$pristine -->
        </p>
      </div>
      <!-- ngIf: !editingFolderDefaults() -->
      <div ng-if="!editingFolderDefaults()" class="form-group ng-scope" ng-class="{'has-error': folderEditor.folderID.$invalid &amp;&amp; folderEditor.folderID.$dirty}">
        <label for="folderID"><span translate="" class="ng-scope">Folder ID</span></label>
        <input name="folderID" ng-readonly="has(['existing', 'new-pending'], currentFolder._editing)" id="folderID" class="form-control ng-pristine ng-untouched ng-invalid ng-invalid-required" type="text" ng-model="currentFolder.id" required=""
          aria-required="true" unique-folder="" value="">
        <p class="help-block">
          <!-- ngIf: folderEditor.folderID.$valid || folderEditor.folderID.$pristine --><span translate="" ng-if="folderEditor.folderID.$valid || folderEditor.folderID.$pristine" class="ng-scope">Required identifier for the folder. Must be the same
            on all cluster devices.</span><!-- end ngIf: folderEditor.folderID.$valid || folderEditor.folderID.$pristine -->
          <!-- ngIf: folderEditor.folderID.$error.uniqueFolder -->
          <!-- ngIf: folderEditor.folderID.$error.required && folderEditor.folderID.$dirty -->
          <span translate="" ng-show="!editingFolderExisting()" class="ng-scope">When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all
            devices.</span>
        </p>
      </div><!-- end ngIf: !editingFolderDefaults() -->
      <div class="form-group" ng-class="{'has-error': folderEditor.folderPath.$invalid &amp;&amp; folderEditor.folderPath.$dirty &amp;&amp; !editingFolderDefaults()}">
        <label translate="" for="folderPath" class="ng-scope">Folder Path</label>
        <input name="folderPath" ng-readonly="editingFolderExisting()" id="folderPath" class="form-control ng-pristine ng-untouched ng-valid-folder-path-errors ng-invalid ng-invalid-required" type="text" ng-model="currentFolder.path"
          list="directory-list" ng-required="!editingFolderDefaults()" ng-aria-required="!editingFolderDefaults()" path-is-sub-dir="" required="required">
        <datalist id="directory-list">
          <!-- ngRepeat: directory in directoryList -->
        </datalist>
        <p class="help-block">
          <!-- ngIf: folderEditor.folderPath.$valid || folderEditor.folderPath.$pristine --><span ng-if="folderEditor.folderPath.$valid || folderEditor.folderPath.$pristine" class="ng-scope"><span translate="" class="ng-scope">Path to the folder on
              the local computer. Will be created if it does not exist. The tilde character (~) can be used as a shortcut for</span> <code
              class="ng-binding">/config</code>.<br></span><!-- end ngIf: folderEditor.folderPath.$valid || folderEditor.folderPath.$pristine -->
          <!-- ngIf: folderEditor.folderPath.$error.required && folderEditor.folderPath.$dirty && !editingFolderDefaults() -->
          <!-- ngIf: folderPathErrors.isSub && folderPathErrors.otherLabel.length == 0 -->
          <!-- ngIf: folderPathErrors.isSub && folderPathErrors.otherLabel.length != 0 -->
          <!-- ngIf: folderPathErrors.isParent && !editingFolderDefaults() -->
        </p>
      </div>
    </div>
    <div id="folder-sharing" class="tab-pane">
      <!-- ngIf: currentSharing.shared.length -->
      <!-- ngIf: currentSharing.unrelated.length || otherDevices().length <= 0 -->
      <div class="form-horizontal ng-scope" ng-if="currentSharing.unrelated.length || otherDevices().length <= 0">
        <label translate="" class="ng-scope">Unshared Devices</label>
        <!-- ngIf: otherDevices().length > 0 -->
        <!-- ngIf: otherDevices().length <= 0 -->
        <p class="help-block ng-scope" ng-if="otherDevices().length <= 0">
          <span translate="" class="ng-scope">There are no devices to share this folder with.</span>
        </p><!-- end ngIf: otherDevices().length <= 0 -->
        <!-- ngRepeat: device in currentSharing.unrelated -->
      </div><!-- end ngIf: currentSharing.unrelated.length || otherDevices().length <= 0 -->
    </div>
    <div id="folder-versioning" class="tab-pane">
      <div class="form-group">
        <label translate="" class="ng-scope">File
          Versioning</label> <a href="https://docs.syncthing.net/users/versioning?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
        <select class="form-control ng-pristine ng-untouched ng-valid" ng-model="currentFolder._guiVersioning.selector">
          <option value="? undefined:undefined ?"></option>
          <option value="none" translate="" class="ng-scope">No File Versioning</option>
          <option value="trashcan" translate="" class="ng-scope">Trash Can File Versioning</option>
          <option value="simple" translate="" class="ng-scope">Simple File Versioning</option>
          <option value="staggered" translate="" class="ng-scope">Staggered File Versioning</option>
          <option value="external" translate="" class="ng-scope">External File Versioning</option>
        </select>
      </div>
      <!-- ngIf: currentFolder._guiVersioning.selector=='trashcan' || currentFolder._guiVersioning.selector=='simple' -->
      <!-- ngIf: currentFolder._guiVersioning.selector=='simple' -->
      <!-- ngIf: currentFolder._guiVersioning.selector=='staggered' -->
      <!-- ngIf: internalVersioningEnabled() -->
      <!-- ngIf: currentFolder._guiVersioning.selector=='external' -->
      <!-- ngIf: internalVersioningEnabled() -->
    </div>
    <div id="folder-ignores" class="tab-pane" ng-switch="editingFolderNew()">
      <!-- ngSwitchWhen: true -->
      <!-- ngSwitchDefault:  -->
      <div ng-switch-default="" class="ng-scope">
        <p translate="" class="ng-scope">Enter ignore patterns, one per line.</p>
        <div ng-class="{'has-error': ignores.error != null}">
          <textarea class="form-control ng-pristine ng-untouched ng-valid" name="ignoresText" rows="5" ng-model="ignores.text" ng-disabled="ignores.disabled"></textarea>
          <!-- ngIf: ignores.error -->
        </div>
        <hr>
        <p class="small"><span translate="" class="ng-scope">Quick guide to supported patterns</span> (<a href="https://docs.syncthing.net/users/ignoring?version=v1.27.8" target="_blank" translate="" class="ng-scope">full documentation</a>):</p>
        <dl class="dl-horizontal dl-narrow small">
          <dt><code>(?d)</code></dt>
          <dd><b><span translate="" class="ng-scope">Prefix indicating that the file can be deleted if preventing directory removal</span></b></dd>
          <dt><code>(?i)</code></dt>
          <dd><span translate="" class="ng-scope">Prefix indicating that the pattern should be matched without case sensitivity</span></dd>
          <dt><code>!</code></dt>
          <dd><span translate="" class="ng-scope">Inversion of the given condition (i.e. do not exclude)</span></dd>
          <dt><code>*</code></dt>
          <dd><span translate="" class="ng-scope">Single level wildcard (matches within a directory only)</span></dd>
          <dt><code>**</code></dt>
          <dd><span translate="" class="ng-scope">Multi level wildcard (matches multiple directory levels)</span></dd>
          <dt><code>//</code></dt>
          <dd><span translate="" class="ng-scope">Comment, when used at the start of a line</span></dd>
        </dl>
        <!-- ngIf: !editingFolderDefaults() -->
        <div ng-if="!editingFolderDefaults()" class="ng-scope">
          <hr>
          <span translate="" translate-value-path="/.stignore" class="ng-scope">Editing /.stignore.</span>
        </div><!-- end ngIf: !editingFolderDefaults() -->
      </div><!-- end ngSwitchWhen: -->
    </div>
    <div id="folder-advanced" class="tab-pane">
      <div class="row form-group" ng-class="{'has-error': folderEditor.rescanIntervalS.$invalid &amp;&amp; folderEditor.rescanIntervalS.$dirty}">
        <div class="col-md-12">
          <label translate="" class="ng-scope">Scanning</label>
          &nbsp;<a href="https://docs.syncthing.net/users/syncing?version=v1.27.8#scanning" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a><br>
          <div class="row">
            <div class="col-md-6">
              <label>
                <input type="checkbox" ng-model="currentFolder.fsWatcherEnabled" ng-change="setFSWatcherIntervalDefault()" class="ng-pristine ng-untouched ng-valid">&nbsp;<span translate="" class="ng-scope">Watch for Changes</span>
              </label>
              <p class="help-block">
                <span translate="" class="ng-scope">Use notifications from the filesystem to detect changed items.</span>
                <span translate="" class="ng-scope">Watching for changes discovers most changes without periodic scanning.</span>
              </p>
            </div>
            <div class="col-md-6">
              <label for="rescanIntervalS" translate="" class="ng-scope">Full Rescan Interval (s)</label>
              <input name="rescanIntervalS" id="rescanIntervalS" class="form-control ng-pristine ng-untouched ng-valid-min ng-invalid ng-invalid-required" type="number" ng-model="currentFolder.rescanIntervalS" required="" aria-required="true"
                min="0">
              <!-- ngIf: !folderEditor.rescanIntervalS.$valid && folderEditor.rescanIntervalS.$dirty -->
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6 form-group">
          <label translate="" class="ng-scope">Folder Type</label>
          &nbsp;<a href="https://docs.syncthing.net/users/foldertypes?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
          <select class="form-control ng-pristine ng-untouched ng-valid" ng-change="setDefaultsForFolderType()" ng-model="currentFolder.type" ng-disabled="editingFolderExisting() &amp;&amp; currentFolder.type == 'receiveencrypted'">
            <option value="? undefined:undefined ?"></option>
            <option value="sendreceive" translate="" class="ng-scope">Send &amp; Receive</option>
            <option value="sendonly" translate="" class="ng-scope">Send Only</option>
            <option value="receiveonly" translate="" class="ng-scope">Receive Only</option>
            <option value="receiveencrypted" ng-disabled="editingFolderExisting()" translate="" class="ng-scope">Receive Encrypted</option>
          </select>
          <!-- ngIf: currentFolder.type == 'sendonly' -->
          <!-- ngIf: currentFolder.type == 'receiveonly' -->
          <!-- ngIf: currentFolder.type == 'receiveencrypted' -->
          <!-- ngIf: editingFolderExisting() && currentFolder.type == 'receiveencrypted' -->
          <!-- ngIf: editingFolderExisting() && currentFolder.type != 'receiveencrypted' -->
        </div>
        <div class="col-md-6 form-group">
          <label translate="" class="ng-scope">File Pull Order</label>
          <!-- ngIf: currentFolder.type != 'sendonly' --><select class="form-control ng-pristine ng-untouched ng-valid ng-scope" ng-model="currentFolder.order" ng-if="currentFolder.type != 'sendonly'">
            <option value="? undefined:undefined ?"></option>
            <option value="random" translate="" class="ng-scope">Random</option>
            <option value="alphabetic" translate="" class="ng-scope">Alphabetic</option>
            <option value="smallestFirst" translate="" class="ng-scope">Smallest First</option>
            <option value="largestFirst" translate="" class="ng-scope">Largest First</option>
            <option value="oldestFirst" translate="" class="ng-scope">Oldest First</option>
            <option value="newestFirst" translate="" class="ng-scope">Newest First</option>
          </select><!-- end ngIf: currentFolder.type != 'sendonly' -->
          <!-- ngIf: currentFolder.type == 'sendonly' -->
        </div>
      </div>
      <div class="row">
        <div class="col-md-6 form-group" ng-class="{'has-error': folderEditor.minDiskFree.$invalid &amp;&amp; folderEditor.minDiskFree.$dirty}">
          <label for="minDiskFree" translate="" class="ng-scope">Minimum Free Disk Space</label><br>
          <div class="row">
            <div class="col-xs-9">
              <input name="minDiskFree" id="minDiskFree" class="form-control ng-pristine ng-untouched ng-valid-min ng-invalid ng-invalid-required" type="number" ng-model="currentFolder.minDiskFree.value" required="" aria-required="true" min="0"
                step="0.01">
            </div>
            <div class="col-xs-3">
              <select class="form-control ng-pristine ng-untouched ng-valid" ng-model="currentFolder.minDiskFree.unit">
                <option value="? undefined:undefined ?"></option>
                <option value="%">%</option>
                <option value="kB">kB</option>
                <option value="MB">MB</option>
                <option value="GB">GB</option>
                <option value="TB">TB</option>
              </select>
            </div>
          </div>
          <p class="help-block ng-scope" ng-show="folderEditor.minDiskFree.$invalid" translate="">Enter a non-negative number (e.g., "2.35") and select a unit. Percentages are as part of the total disk size.</p>
        </div>
        <div class="col-md-6 form-group">
          <label>
            <input type="checkbox" ng-disabled="currentFolder._recvEnc" ng-model="currentFolder.ignorePerms" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Ignore Permissions</span>
          </label>
          <p translate="" class="help-block ng-scope">Disables comparing and syncing file permissions. Useful on systems with nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android).</p>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6 form-group">
          <p>
            <label translate="" class="ng-scope">Ownership</label>
            &nbsp;<a href="https://docs.syncthing.net/advanced/folder-sync-ownership?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
          </p>
          <label>
            <input type="checkbox" ng-disabled="currentFolder.type == 'sendonly' || currentFolder.type == 'receiveencrypted'" ng-model="currentFolder.syncOwnership" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Sync
              Ownership</span>
          </label>
          <p translate="" class="help-block ng-scope">Enables sending ownership information to other devices, and applying incoming ownership information. Typically requires running with elevated privileges.</p>
          <label>
            <input type="checkbox" ng-disabled="currentFolder.type == 'receiveonly' || currentFolder.type == 'receiveencrypted' || currentFolder.syncOwnership" ng-checked="currentFolder.sendOwnership || currentFolder.syncOwnership"
              ng-model="currentFolder.sendOwnership" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Send Ownership</span>
          </label>
          <p translate="" class="help-block ng-scope">Enables sending ownership information to other devices, but not applying incoming ownership information. This can have a significant performance impact. Always enabled when "Sync Ownership" is
            enabled.</p>
        </div>
        <div class="col-md-6 form-group">
          <p>
            <label translate="" class="ng-scope">Extended Attributes</label>
            &nbsp;<a href="https://docs.syncthing.net/advanced/folder-sync-xattrs?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
          </p>
          <label>
            <input type="checkbox" ng-disabled="currentFolder.type == 'sendonly' || currentFolder.type == 'receiveencrypted'" ng-model="currentFolder.syncXattrs" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Sync
              Extended Attributes</span>
          </label>
          <p translate="" class="help-block ng-scope">Enables sending extended attributes to other devices, and applying incoming extended attributes. May require running with elevated privileges.</p>
          <label>
            <input type="checkbox" ng-disabled="currentFolder.type == 'receiveonly' || currentFolder.type == 'receiveencrypted' || currentFolder.syncXattrs" ng-checked="currentFolder.sendXattrs || currentFolder.syncXattrs"
              ng-model="currentFolder.sendXattrs" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Send Extended Attributes</span>
          </label>
          <p translate="" class="help-block ng-scope">Enables sending extended attributes to other devices, but not applying incoming extended attributes. This can have a significant performance impact. Always enabled when "Sync Extended Attributes"
            is enabled.</p>
        </div>
      </div>
      <!-- ngIf: currentFolder.syncXattrs || currentFolder.sendXattrs -->
    </div>
  </div>
</form>

Name: settingsEditor

<form role="form" name="settingsEditor" class="ng-pristine ng-valid-min ng-invalid ng-invalid-required ng-valid-pattern">
  <ul class="nav nav-tabs">
    <li class="active"><a data-toggle="tab" href="#settings-general"><span class="fas fa-cog"></span> <span translate="" class="ng-scope">General</span></a></li>
    <li><a data-toggle="tab" href="#settings-gui"><span class="fas fa-desktop"></span> <span translate="" class="ng-scope">GUI</span></a></li>
    <li><a data-toggle="tab" href="#settings-connections"><span class="fas fa-sitemap"></span> <span translate="" class="ng-scope">Connections</span></a></li>
    <li>
      <a data-toggle="tab" href="#settings-ignored-devices">
            <span class="fas fa-laptop"></span>
            &nbsp;
            <span translate="" class="ng-scope">Ignored Devices</span>
            &nbsp;
            <span class="badge ng-binding"></span>
          </a>
    </li>
    <li>
      <a data-toggle="tab" href="#settings-ignored-folders">
            <span class="fas fa-folder"></span>
            &nbsp;
            <span translate="" class="ng-scope">Ignored Folders</span>
            &nbsp;
            <span class="badge ng-binding">0</span>
          </a>
    </li>
  </ul>
  <div class="tab-content">
    <div id="settings-general" class="tab-pane in active">
      <div class="form-group">
        <label translate="" for="DeviceName" class="ng-scope">Device Name</label>
        <input id="DeviceName" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="tmpOptions.deviceName">
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-horizontal">
            <div class="form-group" ng-class="{'has-error': settingsEditor.minHomeDiskFree.$invalid &amp;&amp; settingsEditor.minHomeDiskFree.$dirty}">
              <label class="col-xs-12" for="minHomeDiskFree"><span translate="" class="ng-scope">Minimum Free Disk Space</span></label><br>
              <div class="col-xs-9"><input name="minHomeDiskFree" id="minHomeDiskFree" class="form-control ng-pristine ng-untouched ng-valid-min ng-invalid ng-invalid-required" type="number" ng-model="tmpOptions.minHomeDiskFree.value" required=""
                  aria-required="true" min="0" step="0.01"></div>
              <div class="col-xs-3"><select class="col-sm-3 form-control ng-pristine ng-untouched ng-valid" ng-model="tmpOptions.minHomeDiskFree.unit">
                  <option value="? undefined:undefined ?"></option>
                  <option value="%">%</option>
                  <option value="kB">kB</option>
                  <option value="MB">MB</option>
                  <option value="GB">GB</option>
                  <option value="TB">TB</option>
                </select></div>
              <p class="col-xs-12 help-block">
                <span translate="" ng-show="settingsEditor.minHomeDiskFree.$invalid" class="ng-scope">Enter a non-negative number (e.g., "2.35") and select a unit. Percentages are as part of the total disk size.</span>
                <span translate="" ng-hide="settingsEditor.minHomeDiskFree.$invalid" class="ng-scope ng-hide">This setting controls the free space required on the home (i.e., index database) disk.</span>
              </p>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" class="ng-scope">API Key</label>
            <div class="input-group">
              <input type="text" readonly="" class="text-monospace form-control" value="-">
              <span class="input-group-btn">
                <button type="button" class="btn btn-default btn-secondary" ng-click="setAPIKey(tmpGUI)">
                  <span class="fas fa-redo"></span>&nbsp;<span translate="" class="ng-scope">Generate</span>
                </button>
              </span>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" for="urVersion" class="ng-scope">Anonymous Usage Reporting</label> (<a href="" translate="" data-toggle="modal" data-target="#urPreview" class="ng-scope">Preview</a>)
            <!-- ngIf: tmpOptions.upgrades != 'candidate' && !version.isCandidate -->
            <div ng-if="tmpOptions.upgrades != 'candidate' &amp;&amp; !version.isCandidate" class="ng-scope">
              <select class="form-control ng-pristine ng-untouched ng-valid" id="urVersion" ng-model="tmpOptions._urAcceptedStr">
                <option value="? undefined:undefined ?"></option>
                <!-- ngRepeat: n in urVersions() -->
                <option ng-repeat="n in urVersions()" value="3" class="ng-binding ng-scope">Version 3</option><!-- end ngRepeat: n in urVersions() -->
                <option ng-repeat="n in urVersions()" value="2" class="ng-binding ng-scope">Version 2</option><!-- end ngRepeat: n in urVersions() -->
                <!-- 1 does not exist, as we did not support incremental formats back then. -->
                <option value="0" translate="" class="ng-scope">Undecided (will prompt)</option>
                <option value="-1" translate="" class="ng-scope">Disabled</option>
              </select>
            </div><!-- end ngIf: tmpOptions.upgrades != 'candidate' && !version.isCandidate -->
            <!-- ngIf: tmpOptions.upgrades == 'candidate' || version.isCandidate -->
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" class="ng-scope">Automatic
              upgrades</label> <a href="https://docs.syncthing.net/users/releases?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
            <!-- ngIf: upgradeInfo -->
            <!-- ngIf: !upgradeInfo -->
            <p class="help-block ng-scope" ng-if="!upgradeInfo">
              <span translate="" class="ng-scope">Unavailable/Disabled by administrator or maintainer</span>
            </p><!-- end ngIf: !upgradeInfo -->
            <!-- ngIf: version.isCandidate && upgradeInfo -->
          </div>
        </div>
      </div>
      <div>
        <label translate="" class="ng-scope">Default Configuration</label>
        <p>
          <button type="button" class="btn btn-default btn-secondary" ng-click="editFolderDefaults()">
            <span translate="" class="ng-scope">Edit Folder Defaults</span>
          </button>
          <button type="button" class="btn btn-default btn-secondary" ng-click="editDeviceDefaults()">
            <span translate="" class="ng-scope">Edit Device Defaults</span>
          </button>
        </p>
      </div>
    </div>
    <div id="settings-gui" class="tab-pane">
      <div class="form-group" ng-class="{'has-error': settingsEditor.Address.$invalid &amp;&amp; settingsEditor.Address.$dirty}">
        <label translate="" for="Address" class="ng-scope">GUI Listen
          Address</label> <a href="https://docs.syncthing.net/users/guilisten?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
        <p class="text-warning" ng-show="system.guiAddressOverridden">
          <span class="fas fa-exclamation-triangle"></span>
          <span translate="" class="ng-scope">The GUI address is overridden by startup options. Changes here will not take effect while the override is in place.</span>
        </p>
        <input id="Address" name="Address" class="form-control ng-pristine ng-untouched ng-valid ng-valid-pattern" type="text" ng-model="tmpGUI.address"
          ng-pattern="/^(\/.*)|(.*:0*((102[4-9])|(10[3-9][0-9])|(1[1-9][0-9][0-9])|([2-9][0-9][0-9][0-9])|([1-6]\d{4})))$/">
        <p class="help-block ng-scope ng-hide" ng-show="settingsEditor.Address.$invalid" translate="">Enter a non-privileged port number (1024 - 65535).</p>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" for="user" class="ng-scope">GUI Authentication User</label>
            <input id="user" class="form-control ng-pristine ng-untouched ng-valid" type="text" name="user" ng-model="tmpGUI.user" autocomplete="username">
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" for="password" class="ng-scope">GUI Authentication Password</label>
            <input id="password" class="form-control ng-pristine ng-untouched ng-valid" type="password" name="password" ng-model="tmpGUI.password" ng-trim="false" autocomplete="new-password">
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="UseTLS" type="checkbox" ng-model="tmpGUI.useTLS" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Use HTTPS for GUI</span>
              </label>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="StartBrowser" type="checkbox" ng-model="tmpOptions.startBrowser" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Start Browser</span>
              </label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" class="ng-scope">GUI Theme</label>
            <!-- ngIf: themes.length > 1 --><select class="form-control ng-pristine ng-untouched ng-valid ng-scope" ng-model="tmpGUI.theme" ng-if="themes.length > 1">
              <option value="? undefined:undefined ?"></option>
              <!-- ngRepeat: theme in themes.sort() -->
              <option ng-repeat="theme in themes.sort()" value="black" class="ng-binding ng-scope"> Black </option><!-- end ngRepeat: theme in themes.sort() -->
              <option ng-repeat="theme in themes.sort()" value="dark" class="ng-binding ng-scope"> Dark </option><!-- end ngRepeat: theme in themes.sort() -->
              <option ng-repeat="theme in themes.sort()" value="default" class="ng-binding ng-scope"> Default </option><!-- end ngRepeat: theme in themes.sort() -->
              <option ng-repeat="theme in themes.sort()" value="light" class="ng-binding ng-scope"> Light </option><!-- end ngRepeat: theme in themes.sort() -->
            </select><!-- end ngIf: themes.length > 1 -->
            <!-- ngIf: themes.length < 2 -->
          </div>
        </div>
        <div class="col-md-6">
          <!-- ngIf: isUnixAddress(tmpGUI.address) -->
        </div>
      </div>
    </div>
    <div id="settings-connections" class="tab-pane">
      <div class="form-group">
        <label translate="" for="ListenAddressesStr" class="ng-scope">Sync Protocol Listen
          Addresses</label> <a href="https://docs.syncthing.net/users/config?version=v1.27.8#listen-addresses" target="_blank"><span class="fas fa-question-circle"></span>&nbsp;<span translate="" class="ng-scope">Help</span></a>
        <input id="ListenAddressesStr" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="tmpOptions._listenAddressesStr">
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group" ng-class="{'has-error': settingsEditor.MaxRecvKbps.$invalid &amp;&amp; settingsEditor.MaxRecvKbps.$dirty}">
            <label translate="" for="MaxRecvKbps" class="ng-scope">Incoming Rate Limit (KiB/s)</label>
            <input id="MaxRecvKbps" name="MaxRecvKbps" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min" type="number" ng-model="tmpOptions.maxRecvKbps" min="0">
            <p class="help-block">
              <!-- ngIf: settingsEditor.MaxRecvKbps.$error.min && settingsEditor.MaxRecvKbps.$dirty -->
            </p>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group" ng-class="{'has-error': settingsEditor.MaxSendKbps.$invalid &amp;&amp; settingsEditor.MaxSendKbps.$dirty}">
            <label translate="" for="MaxSendKbps" class="ng-scope">Outgoing Rate Limit (KiB/s)</label>
            <input id="MaxSendKbps" name="MaxSendKbps" class="form-control ng-pristine ng-untouched ng-valid ng-valid-min" type="number" ng-model="tmpOptions.maxSendKbps" min="0">
            <p class="help-block">
              <!-- ngIf: settingsEditor.MaxSendKbps.$error.min && settingsEditor.MaxSendKbps.$dirty -->
            </p>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="NATEnabled" type="checkbox" ng-model="tmpOptions.natEnabled" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Enable NAT traversal</span>
              </label>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="LocalAnnEnabled" type="checkbox" ng-model="tmpOptions.localAnnounceEnabled" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Local Discovery</span>
              </label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="GlobalAnnEnabled" type="checkbox" ng-model="tmpOptions.globalAnnounceEnabled" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Global Discovery</span>
              </label>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group">
            <div class="checkbox">
              <label>
                <input id="RelaysEnabled" type="checkbox" ng-model="tmpOptions.relaysEnabled" class="ng-pristine ng-untouched ng-valid"> <span translate="" class="ng-scope">Enable Relaying</span>
              </label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label translate="" for="GlobalAnnServersStr" class="ng-scope">Global Discovery Servers</label>
            <input ng-disabled="!tmpOptions.globalAnnounceEnabled" id="GlobalAnnServersStr" class="form-control ng-pristine ng-untouched ng-valid" type="text" ng-model="tmpOptions._globalAnnounceServersStr" disabled="disabled">
          </div>
        </div>
        <div class="col-md-6">
        </div>
      </div>
    </div>
    <div id="settings-ignored-devices" class="tab-pane">
      <div class="form-group">
        <!-- ngIf: tmpRemoteIgnoredDevices.length === 0 -->
        <!-- ngIf: tmpRemoteIgnoredDevices.length > 0 -->
      </div>
    </div>
    <div id="settings-ignored-folders" class="tab-pane">
      <div class="form-group">
        <!-- ngIf: ignoredFoldersCountTmpConfig() === 0 --><span ng-if="ignoredFoldersCountTmpConfig() === 0" translate="" class="ng-scope">You have no ignored folders.</span><!-- end ngIf: ignoredFoldersCountTmpConfig() === 0 -->
        <!-- ngIf: ignoredFoldersCountTmpConfig() > 0 -->
      </div>
    </div>
  </div>
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.gui -->
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.options -->
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.ldap -->
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.defaults.folder -->
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.defaults.device -->
</form>

<form class="form-horizontal ng-pristine ng-valid" role="form">
  <!-- ngRepeat: (key, value) in advancedConfig.defaults.ignores -->
</form>

<form class="ng-pristine ng-valid">
  <!-- ngIf: reportDataPreview -->
</form>

Text Content

WARNING!

The Syncthing admin interface requires JavaScript. Please enable JavaScript in
your web browser and try again.

syncthing

   
   
 *  English
     
   * Arabic
     
   * Basque
     
   * Bulgarian
     
   * Catalan
     
   * Chinese (Simplified)
     
   * Chinese (Traditional)
     
   * Chinese (Traditional, Hong Kong)
     
   * Czech
     
   * Danish
     
   * Dutch
     
   * English
     
   * English (United Kingdom)
     
   * French
     
   * Frisian
     
   * German
     
   * Greek
     
   * Hindi
     
   * Hungarian
     
   * Indonesian
     
   * Italian
     
   * Japanese
     
   * Korean
     
   * Lithuanian
     
   * Polish
     
   * Portuguese (Brazil)
     
   * Portuguese (Portugal)
     
   * Romanian
     
   * Russian
     
   * Slovak
     
   * Slovenian
     
   * Spanish
     
   * Swedish
     
   * Turkish
     
   * Ukrainian
     
   * Valencian
     
 * Help
   *  Introduction
   * 
   *  Home page
   *  Documentation
   *  Support
   * 
   *  Changelog
   *  Statistics
   * 
   *  Bugs
   *  Source Code
   * 
   *  About
   
 * Actions
     
   *  Settings
     
     
   *  Show ID
     
     
   * 
     
     
   *  Shutdown
     
     
   *  Restart
     
     
   * 
     
     
   *  Advanced
     
     
   *  Logs
     
     
   * 
     
     
   


DANGER!

The Syncthing admin interface is configured to allow remote access without a
password. This can easily give hackers access to read and change any files on
your computer. Please set a GUI Authentication User and Password in the Settings
dialog.

 Settings



 GUI AUTHENTICATION: SET USER AND PASSWORD

Username/Password has not been set for the GUI authentication. Please consider
setting it up.

If you want to prevent other users on this computer from accessing Syncthing and
through it your files, consider setting up authentication.

 Settings  OK



FOLDERS

UNSHARED
DEFAULT FOLDER

 Folder Status Unshared  Folder ID default  Folder Path /config/Sync  Global
State  0   0   ~0 B  Local State
 0   0   ~0 B
 Folder Type Send & Receive  Rescans
 1h   Enabled
 File Pull Order Random  Shared With  Last Scan 2024-06-17 11:03:19

 Pause  Rescan  Edit

 Pause All  Rescan All  Add Folder


--------------------------------------------------------------------------------


THIS DEVICE

SYNCTHING

 Download Rate 0 B/s (0 B)  Upload Rate 0 B/s (0 B)  Local State (Total)  0   0 
 ~0 B  Listeners 3/3  Discovery 3/5  Uptime 1d 1h 11m  Identification A5QLEAS
 Version v1.27.8, Linux (64-bit Intel/AMD Container)


REMOTE DEVICES


 Pause All  Recent Changes  Add Remote Device


CONNECTION ERROR

Syncthing seems to be down, or there is a problem with your Internet connection.
Retrying…


CONNECTION ERROR

Syncthing seems to be experiencing a problem processing your request. Please
refresh the page or restart Syncthing if the problem persists.


RESTARTING

Syncthing is restarting. Please wait...


UPGRADING

Syncthing is upgrading. Please wait...


SHUTDOWN COMPLETE

Syncthing has been shut down.


SAVING CHANGES

Syncthing is saving changes. Please wait...


DEVICE IDENTIFICATION -

 Close

ADD DEVICE

 * General
   
 * Sharing
   
 * Advanced

Device ID

Device Name

Shown instead of Device ID in the cluster status. Will be updated to the name
the device advertises if left empty.

Introducer

Add devices from the introducer to our device list, for mutually shared folders.

Auto Accept

Automatically create or share folders that this device advertises at the default
path.


Addresses

Enter comma separated ("tcp://ip:port", "tcp://host:port") addresses or
"dynamic" to perform automatic discovery of the address.

Compression All Data Metadata Only Off
Connection Management
Number of Connections   Help


When set to more than one on both devices, Syncthing will attempt to establish
multiple concurrent connections. If the values differ, the highest will be used.
Set to zero to let Syncthing decide.

Device rate limits
Incoming Rate Limit (KiB/s)

Outgoing Rate Limit (KiB/s)


The rate limit is applied to the accumulated traffic of all connections to this
device.

Untrusted

All folders shared with this device must be protected by a password, such that
all sent data is unreadable without the given password.

 Save  Close

RECENT CHANGES

Device Action Type Folder Path Time

 Close

(UNDEFINED)

 * General
 * Sharing
 * File Versioning
 * Ignore Patterns
 * Advanced

Folder Label

Optional descriptive label for the folder. Can be different on each device.

Folder ID

Required identifier for the folder. Must be the same on all cluster devices.
When adding a new folder, keep in mind that the Folder ID is used to tie folders
together between devices. They are case sensitive and must match exactly between
all devices.

Folder Path

Path to the folder on the local computer. Will be created if it does not exist.
The tilde character (~) can be used as a shortcut for /config.


Unshared Devices

There are no devices to share this folder with.

File Versioning  Help No File Versioning Trash Can File Versioning Simple File
Versioning Staggered File Versioning External File Versioning

Enter ignore patterns, one per line.



--------------------------------------------------------------------------------

Quick guide to supported patterns (full documentation):

(?d) Prefix indicating that the file can be deleted if preventing directory
removal (?i) Prefix indicating that the pattern should be matched without case
sensitivity ! Inversion of the given condition (i.e. do not exclude) * Single
level wildcard (matches within a directory only) ** Multi level wildcard
(matches multiple directory levels) // Comment, when used at the start of a line

--------------------------------------------------------------------------------

Editing /.stignore.
Scanning   Help

 Watch for Changes

Use notifications from the filesystem to detect changed items. Watching for
changes discovers most changes without periodic scanning.

Full Rescan Interval (s)
Folder Type   Help Send & Receive Send Only Receive Only Receive Encrypted
File Pull Order Random Alphabetic Smallest First Largest First Oldest First
Newest First
Minimum Free Disk Space

% kB MB GB TB

Enter a non-negative number (e.g., "2.35") and select a unit. Percentages are as
part of the total disk size.

Ignore Permissions

Disables comparing and syncing file permissions. Useful on systems with
nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android).

Ownership   Help

Sync Ownership

Enables sending ownership information to other devices, and applying incoming
ownership information. Typically requires running with elevated privileges.

Send Ownership

Enables sending ownership information to other devices, but not applying
incoming ownership information. This can have a significant performance impact.
Always enabled when "Sync Ownership" is enabled.

Extended Attributes   Help

Sync Extended Attributes

Enables sending extended attributes to other devices, and applying incoming
extended attributes. May require running with elevated privileges.

Send Extended Attributes

Enables sending extended attributes to other devices, but not applying incoming
extended attributes. This can have a significant performance impact. Always
enabled when "Sync Extended Attributes" is enabled.

 Save  Close

RESTORE VERSIONS ()

Loading data...
 Close

RESTORE VERSIONS

Are you sure you want to restore 0 files?

 Yes  No

SETTINGS

 * General
 * GUI
 * Connections
 *   Ignored Devices  
 *   Ignored Folders   0

Device Name
Minimum Free Disk Space


% kB MB GB TB

Enter a non-negative number (e.g., "2.35") and select a unit. Percentages are as
part of the total disk size. This setting controls the free space required on
the home (i.e., index database) disk.

API Key
 Generate
Anonymous Usage Reporting (Preview)
Version 3Version 2 Undecided (will prompt) Disabled
Automatic upgrades  Help

Unavailable/Disabled by administrator or maintainer

Default Configuration

Edit Folder Defaults Edit Device Defaults

GUI Listen Address  Help

The GUI address is overridden by startup options. Changes here will not take
effect while the override is in place.

Enter a non-privileged port number (1024 - 65535).

GUI Authentication User
GUI Authentication Password
Use HTTPS for GUI
Start Browser
GUI Theme Black Dark Default Light

Sync Protocol Listen Addresses  Help
Incoming Rate Limit (KiB/s)



Outgoing Rate Limit (KiB/s)



Enable NAT traversal
Local Discovery
Global Discovery
Enable Relaying
Global Discovery Servers


You have no ignored folders.
 Save  Close

ADVANCED CONFIGURATION

Be careful! Incorrect configuration may damage your folder contents and render
Syncthing inoperable.

GUI



OPTIONS



LDAP



FOLDERS



DEVICES



DEFAULTS

DEFAULT FOLDER



DEFAULT DEVICE



DEFAULT IGNORE PATTERNS


 Save  Close

PENDING CHANGES

You have unsaved changes. Do you really want to discard them?

 Discard  Take me back

ALLOW ANONYMOUS USAGE REPORTING?

The encrypted usage report is sent daily. It is used to track common platforms,
folder sizes, and app versions. If the reported data set is changed you will be
prompted with this dialog again.

The aggregated statistics are publicly available at the URL below.

https://data.syncthing.net/

 Preview Usage Report
 Yes  No

ANONYMOUS USAGE REPORTING

The encrypted usage report is sent daily. It is used to track common platforms,
folder sizes, and app versions. If the reported data set is changed you will be
prompted with this dialog again.

The aggregated statistics are publicly available at the URL below.

https://data.syncthing.net/

Version Select a version Version 3Version 2

--------------------------------------------------------------------------------


 Close

OUT OF SYNC ITEMS

   
 * 10
   
 * 25
   
 * 50
   


 Close

FAILED ITEMS

The following items could not be synchronized. They are retried automatically
and will be synced when the error is resolved.



   
 * 10
   
 * 25
   
 * 50
   


 Close

OUT OF SYNC ITEMS -

Loading data...
 Close

Path Size

   
 * 10
   
 * 25
   
 * 50
   


 Close

UPGRADE

Are you sure you want to upgrade?

Release Notes

 Upgrade  Close

MAJOR UPGRADE

This is a major version upgrade. A new major version may not be compatible with
previous versions. Please consult the release notes before performing a major
upgrade.

Release Notes

 Upgrade  Close

ABOUT


V1.27.8, LINUX (64-BIT INTEL/AMD CONTAINER)
"GOLD GRASSHOPPER"

Build 2024-06-07 (noupgrade)
Copyright © 2014-2024 the Syncthing Authors.

Syncthing is Free and Open Source Software licensed as MPL v2.0.

 * Authors
 * Included Software
 * Paths

THE SYNCTHING AUTHORS

Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Tomasz Wilczyński,
Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male,
Ben Schulz, Caleb Callaway, Daniel Harte, Eric P, Evgeny Kuznetsov, Lars K.W.
Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan
Sullivan, Sergey Mishin, Stefan Tatschner, Wulf Weich, bt90, greatroar, Aaron
Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Aleksey Vasenev,
Alessandro G., Alex Lindeman, Alex Xu, Alexander Seiler, Alexandre Alves, Aman
Gupta, Anatoli Babenia, Andreas Sommer, Andrew Dunham, Andrew Meyer, Andrew
Rabert, Andrey D, Anjan Momi, Anthony Goeckner, Antoine Lamielle, Anur,
Aranjedeath, Arkadiusz Tymiński, Aroun, Arthur Axel fREW Schmidt, Artur
Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Beat Reichenbach,
Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach,
Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon
Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Catfriend1, Cathryne
Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris
Joel, Chris Tonkinson, Christian Kujau, Christian Prescott, Colin Kennedy,
Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann,
Daniel Martí, Daniel Padrta, Darshil Chanpura, David Rimmer, DeflateAwning,
Denis A., Dennis Wilson, DerRockWolf, Devon G. Redekopp, Dimitri Papadopoulos
Orfanos, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring,
Elliot Huffman, Emil Hessman, Emil Lundberg, Eng Zer Jun, Eric Lesiuta, Erik
Meitner, Evan Spensley, Federico Castagnini, Felix, Felix Ableitner, Felix
Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf,
Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Greg, Han Boetes, HansK-p,
Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko
Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz,
Jack Croft, Jacob, Jake Peterson, James O'Beirne, James Patterson, Jaroslav
Lichtblau, Jaroslav Malec, Jaspitta, Jauder Ho, Jaya Chithra, Jaya Kumar,
Jeffery To, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan
Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose
Manuel Delicado, Julian Lehrhuber, Jörg Thalheim, Jędrzej Kula, K.B.Dharun
Krishna, Kalle Laine, Karol Różycki, Kebin Liu, Keith Harrison, Keith Turner,
Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt
Fitzner, LSmithx2, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias,
Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Luke Hamburg, Majed Abdulaziz,
Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark
Pulford, Martchus, Martin Polehla, Mateusz Naściszewski, Mateusz Ż, Matic
Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max
Schulze, MaximAL, Maxime Thirouin, Maximilian, MichaIng, Michael Jephcote,
Michael Rienstra, Michael Tilli, Migelo, Mike Boone, MikeLund, MikolajTwarog,
Mingxuan Lin, Naveen, Nicholas Rishel, Nick Busey, Nico Stapelbroek, Nicolas
Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster,
Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo,
Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter
Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby,
Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard
Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov,
Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel,
Sertonix, Severin von Wnuck-Lipinski, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat,
Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Sven Bachmann, Taylor Khan,
Thomas, Thomas Hipp, Tim Abell, Tim Howes, Tim Nordenfur, Tobias Klauser, Tobias
Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier,
Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vik, Vil Brekin, Vladimir
Rusinov, WangXi, Will Rouesnel, William A. Kennington III, Xavier O., Yannic A.,
andresvia, andyleap, boomsquared, chenrui, chucic, cjc7373, cui fliter,
d-volution, derekriemer, desbma, diemade, digital, entity0xfe, georgespatton,
ghjklw, guangwu, gudvinr, ignacy123, janost, jaseg, jelle van der Waa, jtagcat,
klemens, kylosus, luchenhan, luzpaz, marco-m, mclang, mv1005, nf, orangekame3,
otbutz, overkill, perewa, red_led, rubenbe, sec65, vapatel2, villekalliomaki,
wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙, 落心

Syncthing includes the following software or portions thereof:

 * Bootstrap, Copyright © 2011-2016 Twitter, Inc.
 * AngularJS, Copyright © 2010-2014, 2016 Google, Inc.
 * Date Range Picker, Copyright © 2012-2018 Dan Grossman.
 * JQuery Fancytree Plugin, Copyright © 2008-2018 Martin Wendt.
 * Fork Awesome, Copyright © 2018 Dave Gandy & Fork Awesome.
 * jQuery JavaScript Library, Copyright © jQuery Foundation and other
   contributors.
 * moment.js, Copyright © JS Foundation and other contributors.
 * Prometheus, Copyright © 2012-2015 The Prometheus Authors.
 * AudriusButkevicius/go-nat-pmp, Copyright © 2013 John Howard Palevich.
 * AudriusButkevicius/recli, Copyright © 2019 Audrius Butkevicius.
 * beorn7/perks, Copyright © 2013 Blake Mizerany.
 * pierrec/lz4, Copyright © 2015 Pierre Curto.
 * calmh/du, Public domain.
 * calmh/xdr, Copyright © 2014 Jakob Borg.
 * chmduquesne/rollinghash, Copyright © 2015 Christophe-Marie Duquesne.
 * d4l3k/messagediff, Copyright © 2015 Tristan Rice.
 * flynn-archive/go-shlex, Copyright © 2012 Google Inc.
 * gobwas/glob, Copyright © 2016 Sergey Kamardin.
 * gogo/protobuf, Copyright © 2013 The GoGo Authors.
 * golang/groupcache, Copyright © 2013 Google Inc.
 * golang/protobuf, Copyright © 2010 The Go Authors.
 * golang/snappy, Copyright © 2011 The Snappy-Go Authors.
 * jackpal/gateway, Copyright © 2010 Jack Palevich.
 * kballard/go-shellquote, Copyright © 2014 Kevin Ballard.
 * lib/pq, Copyright © 2011-2013, 'pq' Contributors, portions Copyright © 2011
   Blake Mizerany.
 * mattn/go-isatty, Copyright © Yasuhiro MATSUMOTO.
 * matttproud/golang_protobuf_extensions, Copyright © 2012 Matt T. Proud.
 * minio/sha256-simd, Copyright © 2016-2017 Minio, Inc.
 * oschwald/geoip2-golang, Copyright © 2015, Gregory J. Oschwald.
 * oschwald/maxminddb-golang, Copyright © 2015, Gregory J. Oschwald.
 * petermattis/goid, Copyright © 2015-2016 Peter Mattis.
 * pkg/errors, Copyright © 2015, Dave Cheney.
 * rcrowley/go-metrics, Copyright © 2012 Richard Crowley.
 * sasha-s/go-deadlock, Copyright © 2016 sasha-s.
 * syncthing/notify, Copyright © 2014-2015 The Notify Authors.
 * syndtr/goleveldb, Copyright © 2012 Suryandaru Triandana.
 * thejerf/suture, Copyright © 2014-2015 Barracuda Networks, Inc.
 * urfave/cli, Copyright © 2016 Jeremy Saenz & Contributors.
 * vitrun/qart, Copyright © 2010-2011 The Go Authors.
 * gopkg.in/asn1-ber.v1, Copyright © 2011-2015 Michael Mitton, portions
   Copyright © 2015-2016 go-asn1-ber Authors.
 * gopkg.in/ldap.v2, Copyright © 2011-2015 Michael Mitton, portions Copyright ©
   2015-2016 go-ldap Authors.
 * The Go Programming Language, Copyright © 2009 The Go Authors.
 * Font Awesome by Dave Gandy - http://fontawesome.io

Internally used paths: User Home Configuration Directory Configuration File
Device Certificate
GUI / API HTTPS Certificate
Database Location Log File GUI Override Directory

 Close

The following methods are used to discover other devices on the network and
announce this device to be found by others:

   
 * IPv4 local
   
 * global@https://discovery-v4.syncthing.net/v2/
   
 * global@https://discovery.syncthing.net/v2/
   

Some discovery methods could not be established for finding other devices or
announcing this device:

   
 * IPv6 local: write udp [::]:47312->[ff12::8384]:21027: sendmsg: network is
   unreachable
   
 * global@https://discovery-v6.syncthing.net/v2/: Post
   "https://discovery-v6.syncthing.net/v2/": dial tcp [2001:bc8:710:750::]:443:
   connect: network is unreachable
   

Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.
 Close

REMOVE FOLDER

Are you sure you want to remove folder ?

No files will be deleted as a result of this operation.

 Yes  No

Warning!

The folder content on this device will be overwritten to become identical with
other devices. Files newly added here will be deleted.

Are you sure you want to revert all local changes?

  Revert  Cancel

REMOVE DEVICE

Are you sure you want to remove device ?

 Yes  No

LOGS

 * Log
 * Debugging Facilities

Log tailing paused. Scroll to the bottom to continue.
Available debug logging facilities:



 Close

The following text will automatically be inserted into a new message. You can
also copy and paste the text into a new message manually.


      
    

 Share  Cancel