From 8ef2470e15ed1a7ee4b7b9fa56f9d3503e271aad Mon Sep 17 00:00:00 2001 From: Nicolás Reynolds Date: Thu, 5 Jun 2014 13:40:02 -0300 Subject: syncthing: it goes on pcr --- pcr/syncthing/PKGBUILD | 47 ++++++++++++++++++ pcr/syncthing/syncthing.1 | 100 +++++++++++++++++++++++++++++++++++++++ pcr/syncthing/syncthing.install | 28 +++++++++++ pcr/syncthing/syncthing@.service | 12 +++++ 4 files changed, 187 insertions(+) create mode 100644 pcr/syncthing/PKGBUILD create mode 100644 pcr/syncthing/syncthing.1 create mode 100644 pcr/syncthing/syncthing.install create mode 100644 pcr/syncthing/syncthing@.service (limited to 'pcr/syncthing') diff --git a/pcr/syncthing/PKGBUILD b/pcr/syncthing/PKGBUILD new file mode 100644 index 000000000..4929f8b6a --- /dev/null +++ b/pcr/syncthing/PKGBUILD @@ -0,0 +1,47 @@ +# Maintainer : Martin Wimpress +# Contributor: Sauyon Lee +# Contributor: Kevin MacMartin + +pkgname=syncthing +pkgver=0.8.13 +pkgrel=1 +pkgdesc="Open Source Continuous Replication / Cluster Synchronization Thing" +url="http://syncthing.net/" +license=('MIT') +arch=('i686' 'x86_64') +depends=('glibc') +makedepends=('git' 'go' 'godep' 'inetutils') +source=("${pkgname}::git+https://github.com/calmh/syncthing.git#tag=v${pkgver}" + "syncthing@.service" + "syncthing.1") +sha1sums=('SKIP' + '204cad3823306c793a14a17a23220e26199160d4' + 'cabf3bf78457ce17057ae39fe3b0009a4aa446c4') +install=${pkgname}.install + +prepare() { + cd "${srcdir}" + mkdir -p "src/github.com/calmh" + mv "${pkgname}" "src/github.com/calmh/${pkgname}" +} + +build() { + export GOPATH="${srcdir}" + cd "${srcdir}/src/github.com/calmh/${pkgname}" + ./build.sh +} + +check() { + export GOPATH="${srcdir}" + cd "${srcdir}/src/github.com/calmh/${pkgname}" + ./build.sh test +} + +package() { + cd "${srcdir}/src/github.com/calmh/${pkgname}" + install -D -m 755 syncthing "${pkgdir}/usr/bin/syncthing" + install -D -m 644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + install -D -m 644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md" + install -D -m 644 "${srcdir}/${pkgname}@.service" "${pkgdir}/usr/lib/systemd/system/${pkgname}@.service" + install -D -m 644 "${srcdir}/${pkgname}.1" "${pkgdir}/usr/share/man/man1/${pkgname}.1" +} diff --git a/pcr/syncthing/syncthing.1 b/pcr/syncthing/syncthing.1 new file mode 100644 index 000000000..9a06ddb7f --- /dev/null +++ b/pcr/syncthing/syncthing.1 @@ -0,0 +1,100 @@ +.\" generated with Ronn/v0.7.3 +.\" http://github.com/rtomayko/ronn/tree/0.7.3 +. +.TH "SYNCTHING" "" "May 2014" "" "syncthing" +. +.SH "Project Goals" +This is the \fBsyncthing\fR project\. The following are the project goals: +. +.IP "1." 4 +Define a protocol for synchronization of a file repository between a number of collaborating nodes\. The protocol should be well defined, unambiguous, easily understood, free to use, efficient, secure and language neutral\. This is the Block Exchange Protocol \fIhttps://github\.com/calmh/syncthing/blob/master/protocol/PROTOCOL\.md\fR\. +. +.IP "2." 4 +Provide the reference implementation to demonstrate the usability of said protocol\. This is the \fBsyncthing\fR utility\. It is the hope that alternative, compatible implementations of the protocol will come to exist\. +. +.IP "" 0 +. +.P +The two are evolving together; the protocol is not to be considered stable until syncthing 1\.0 is released, at which point it is locked down for incompatible changes\. +. +.P +Syncthing does not use the BitTorrent protocol\. The reasons for this are 1) we don\'t know if BitTorrent Sync does either, so there\'s nothing to be compatible with, 2) BitTorrent includes a lot of functionality for making sure large swarms of selfish agents behave and somehow work towards a common goal\. Here we have a much smaller swarm of cooperative agents and a simpler approach will suffice\. +. +.SH "Systemd" +The systemd services for Syncthing and its discovery server can be used to start, stop, restart and enable them to run at boot\. +. +.SS "Syncthing" +Syncthing is the main sync client and can be controlled using systemd using the commands below\. Since Syncthing is run for a particular user, replace \'username\' in the commands below with the name of the user you want it to run it under\. +. +.IP "\(bu" 4 +\fBStart Syncthing\fR: \fBsystemctl start syncthing@username\fR +. +.IP "\(bu" 4 +\fBStop Syncthing\fR: \fBsystemctl stop syncthing@username\fR +. +.IP "\(bu" 4 +\fBRestart Syncthing\fR: \fBsystemctl restart syncthing@username\fR +. +.IP "\(bu" 4 +\fBEnable Syncthing at Boot\fR: \fBsystemctl enable syncthing@username\fR +. +.IP "\(bu" 4 +\fBDisable Syncthing at Boot\fR: \fBsystemctl disable syncthing@username\fR +. +.IP "" 0 +. +.SS "Discovery Server" +The discovery server is an optional service that can be run and connected to by Syncthing in place of the default\. To have clients connect to a custom discovery server, you\'ll want to start the service on your server, then open "\fI~/\.syncthing/config\.xml\fR" and replace "\fIannounce\.syncthing\.net\fR" with your custom discovery server\'s address\. +. +.IP "\(bu" 4 +\fBStart Discovery Server Service\fR: \fBsystemctl start syncthing\-discosrv\fR +. +.IP "\(bu" 4 +\fBStop Discovery Server Service\fR: \fBsystemctl stop syncthing\-discosrv\fR +. +.IP "\(bu" 4 +\fBRestart Discovery Server Service\fR: \fBsystemctl restart syncthing\-discosrv\fR +. +.IP "\(bu" 4 +\fBEnable Discovery Server at Boot\fR: \fBsystemctl enable syncthing\-discosrv\fR +. +.IP "\(bu" 4 +\fBDisable Discovery Server at Boot\fR: \fBsystemctl disable syncthing\-discosrv\fR +. +.IP "" 0 +. +.SH "Configuring" +The config folder is automatically generated when syncthing is run for the first time, and can be found (by default) @ \'~/\.syncthing\'\. +. +.P +The admin GUI starts automatically when the service is running, and remains available (by default) @ \fIhttp://localhost:8080\fR\. +. +.P +On the left is the list of "repositories", or directories to synchronize\. On the right is the list of nodes\. Currently there is only one node, the local node\. The first thing you need to do is tell each node about the other node so they can talk to each other\. Click the "Add Node" button on each node\. You\'ll get the "Add Node" dialog, where you need to input the node ID of the other node and give it a short name\. If you have both nodes GUI available on the same machine (say via remote desktop or a port forward) you can simply cut and paste the node ID from the bottom of one dialog to the other\. Otherwise it is probably easiest to send the ID:s in a mail to yourself or something similar\. +. +.P +The node IDs are quite long and unwieldy, but this is part of the security of the system\. They uniquely identify node\'s key so that each node can be assured of who it\'s talking to\. The node ID is not a password and does not need to be kept secret\. +. +.P +Once you click "Save" the new node will appear on right side of the GUI and a prompt will be shown to indicate the need for a restart\. +. +.P +Syncthing needs to be restarted for configuration changes like new nodes and repositories to take effect\. We shouldn\'t restart just yet though, because we also need to share the repository with the new node\. Click "Edit" on the repository to the left, and check the checkbox for the other node before saving and restarting\. +. +.P +When you click restart syncthing will first restart, then come back up and after a while (up to a minute) connect to the other node\. +. +.P +At this point the two nodes share an empty directory\. Adding files to the Sync directory on either node will synchronize those files to the other side\. Each node scans for changes every sixty seconds, so changes can take a bit over a minute to propagate to the other side\. +. +.P +An up to date version of this documentation that includes images can be found @ \fIhttp://discourse\.syncthing\.net/t/getting\-started/46\fR\. +. +.SH "Online Documentation" +Additional documentation can be found online @ discourse site \fIhttp://discourse\.syncthing\.net/category/documentation\fR\. +. +.SH "License" +All documentation and protocol specifications are licensed under the Creative Commons Attribution 4\.0 International License \fIhttp://creativecommons\.org/licenses/by/4\.0/\fR\. +. +.P +All code is licensed under the MIT License \fIhttps://github\.com/calmh/syncthing/blob/master/LICENSE\fR\. diff --git a/pcr/syncthing/syncthing.install b/pcr/syncthing/syncthing.install new file mode 100644 index 000000000..e400b9ba7 --- /dev/null +++ b/pcr/syncthing/syncthing.install @@ -0,0 +1,28 @@ +post_install() { +cat << EOF + WebGUI can be accessed at http://localhost:8080 + + Execute + + systemctl daemon-reload + + to reload systemd modules. + + To start syncthing, execute: + + systemctl start syncthing@user + + where 'user' is your username. + + To autostart syncthing on system start, execute + + systemctl enable syncthing@user + + where 'user' is your username. + +EOF +} + +post_upgrade() { + post_install +} diff --git a/pcr/syncthing/syncthing@.service b/pcr/syncthing/syncthing@.service new file mode 100644 index 000000000..93ed40e14 --- /dev/null +++ b/pcr/syncthing/syncthing@.service @@ -0,0 +1,12 @@ +[Unit] +Description=Syncthing service for %i +After=network.target + +[Service] +User=%i +Environment=STNORESTART=yes +ExecStart=/usr/bin/syncthing +Restart=always + +[Install] +WantedBy=multi-user.target -- cgit v1.2.3