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
Submission: On June 17 via api from US — Scanned from SG
Form analysis
10 forms found in the DOMName: 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 && 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() && !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() && !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() && !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() && !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 && 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>
<a href="https://docs.syncthing.net/advanced/device-numconnections?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span> <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 && 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 && 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) && (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 && folderEditor.folderLabel.$dirty && !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 && 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 && folderEditor.folderPath.$dirty && !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> <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 && folderEditor.rescanIntervalS.$dirty}">
<div class="col-md-12">
<label translate="" class="ng-scope">Scanning</label>
<a href="https://docs.syncthing.net/users/syncing?version=v1.27.8#scanning" target="_blank"><span class="fas fa-question-circle"></span> <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"> <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>
<a href="https://docs.syncthing.net/users/foldertypes?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span> <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() && currentFolder.type == 'receiveencrypted'">
<option value="? undefined:undefined ?"></option>
<option value="sendreceive" translate="" class="ng-scope">Send & 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 && 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>
<a href="https://docs.syncthing.net/advanced/folder-sync-ownership?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span> <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>
<a href="https://docs.syncthing.net/advanced/folder-sync-xattrs?version=v1.27.8" target="_blank"><span class="fas fa-question-circle"></span> <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>
<span translate="" class="ng-scope">Ignored Devices</span>
<span class="badge ng-binding"></span>
</a>
</li>
<li>
<a data-toggle="tab" href="#settings-ignored-folders">
<span class="fas fa-folder"></span>
<span translate="" class="ng-scope">Ignored Folders</span>
<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 && 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> <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' && !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> <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 && 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> <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> <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 && 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 && 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