====== Установка Resilio Sync в FreeBSD jail ======
- Устанавливаем менеджер контейнеров - [[wiki:nas:xigmanas:jails:bastille|bastille]].
- Создаем контейнер с именем ''sync'' через веб интерфейс;
- Подключаемся к консоли контейнера командой ''bastille console sync'' и следующие операции производим в нем:
mkdir -p /tmp/includes
mkdir -p /var/db/rslsync
mkdir -p /usr/local/etc/rc.d
mkdir -p /usr/local/bin
pw user add rslsync -c rslsync -u 817 -d /nonexistent -s /usr/bin/nologin
chown rslsync:rslsync /var/run/rslsync/rslsync.pid
fetch https://download-cdn.resilio.com/stable/FreeBSD-x64/resilio-sync_freebsd_x64.tar.gz
tar -xvf ./resilio-sync_freebsd_x64.tar.gz -C /usr/local/bin/
Создаем файл /usr/local/etc/rc.d/rslsync
#!/bin/sh
#
# $FreeBSD: head/net-p2p/rslsync/files/rslsync.in 469847 2018-05-14 02:55:52Z knu $
#
# PROVIDE: rslsync
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# rslsync_enable (bool): Set to NO by default.
# Set it to YES to enable it.
# rslsync_user: The user account rslsync daemon runs as
# what you want it to be. It uses 'rslsync'
# user by default. Do not sets it as empty or it
# will run as root.
# rslsync_group: The group account rslsync daemon runs as
# what you want it to be. It uses 'rslsync'
# group by default. Do not sets it as empty or it
# will run as wheel.
. /etc/rc.subr
name="rslsync"
rcvar="${name}_enable"
load_rc_config ${name}
: ${rslsync_enable:="NO"}
: ${rslsync_user:="rslsync"}
: ${rslsync_group:="rslsync"}
pidfile="/var/run/rslsync/rslsync.pid"
command="/usr/local/bin/rslsync"
command_args="--config /usr/local/etc/rslsync.conf"
start_precmd=rslsync_prestart
rslsync_prestart() {
if [ ! -d ${pidfile%/*} ]; then
install -d -o ${rslsync_user} -g ${rslsync_group} ${pidfile%/*}
fi
}
run_rc_command "$1"
Создаем файл /usr/local/etc/rslsync.conf
{
"device_name": "My Sync Device",
// "listening_port" : 0, // 0 - randomize port
/* storage_path dir contains auxilliary app files if no storage_path field: .sync dir created in current working directory */
"storage_path" : "/var/db/rslsync",
/* set location of pid file */
"pid_file" : "/var/run/rslsync/rslsync.pid",
/* use UPnP for port mapping */
"use_upnp" : true,
/* limits in kB/s. 0 - no limit */
"download_limit" : 0,
"upload_limit" : 0,
/* proxy configuration */
// "proxy_type" : "socks4", // Valid types: "socks4", "socks5", "http_connect". Any other value means no proxy
// "proxy_addr" : "192.168.1.2", // IP address of proxy server.
// "proxy_port" : 1080,
// "proxy_auth" : false, // Use authentication for proxy. Note: only username/password for socks5 (RFC 1929) is supported, and it is not really secure
// "proxy_username" : "user",
// "proxy_password" : "password",
/* directory_root path defines where the WebUI Folder browser starts (linux only). Default value is / */
// "directory_root" : "/home/user/MySharedFolders/",
/* directory_root_policy defines how directory_root is used (linux only).
Valid values are:
"all" - accepts directory_root and its subdirectories for 'getdir' and 'adddir' actions
"belowroot" - accepts directory_root's subdirectories for 'getdir' and 'adddir' actions,
but denies attempts to use 'adddir' to create directories directly within directory_root
Default value is "all". */
// "directory_root_policy" : "all",
"webui" :
{
"listen" : "0.0.0.0:8888" // remove field to disable WebUI
/* preset credentials. Use password or password_hash */
// ,"login" : "admin"
// ,"password" : "password" // (not recommended, better use 'password_hash_unified')
// ,"password_hash" : "" // (not recommended) Works on *nix only!
// Use either 'password_hash' or 'password_hash_unified' (recommended), but not both of them!
// ,"password_hash_unified" : "" // Works on all platforms.
// ,"password_hash_salt_unified" : "" // Salt for unified password's hash. Works on all platforms.
// ,"allow_empty_password" : false // Defaults to true
/* ssl configuration */
// ,"force_https" : true // disable http
// ,"ssl_certificate" : "/path/to/cert.pem"
// ,"ssl_private_key" : "/path/to/private.key"
/* dir_whitelist defines which directories can be shown to user or have folders added (linux only)
relative paths are relative to directory_root setting */
// ,"dir_whitelist" : [ "/home/user/MySharedFolders/personal", "work" ]
}
/* !!! if you set shared folders in config file WebUI will be DISABLED !!!
shared directories specified in config file override the folders previously added from WebUI. */
/*,
"shared_folders" :
[
{
"secret" : "MY_SECRET_1", // required field - use --generate-secret in command line to create new secret
"dir" : "/home/user/resilio/sync_test", // * required field
"use_relay_server" : true, // use relay server when direct connection fails
"use_tracker" : true,
"search_lan" : true,
"use_sync_trash" : true, // enable SyncArchive to store files deleted on remote devices
"overwrite_changes" : false, // restore modified files to original version, ONLY for Read-Only folders
"selective_sync" : false, // add folder in selective sync mode
"known_hosts" : // specify hosts to attempt connection without additional search
[
"192.168.1.2:44444"
]
}
]
*/
/* Advanced preferences can be added to config file. Info is available at "https://help.getsync.com/hc/en-us/articles/207371636"
For example see folder_rescan_interval below */
//, "folder_rescan_interval" : 600
}
Выполняем в контейнере:
sysrc rslsync_enable="YES"
service rslsync start
Монтируем локальную директорию в контейнер:
bastille mount sync /mnt/tank/ /mnt/tank/ nullfs rw 0 0