rsync zu bestimmtem SSH Port

Wenn man Daten via rsync zu einem Zielrechner synchronisieren möchte, der nicht auf dem Standard-SSH-Port 22 lauscht, muss man das rsync Kommando etwas anpassen. Der Ausschnitt aus der man page von rsync, der verrät wie es geht:

-e, --rsh=COMMAND
This option allows you to choose an alternative remote shell program to use for communication
between the local and remote copies of rsync. Typically, rsync is configured to use ssh by
default, but you may prefer to use rsh on a local network.
If  this option is used with [user@]host::module/path, then the remote shell COMMAND will be
used to run an rsync daemon on the remote host, and all data will be transmitted through that
remote shell connection, rather than through a direct socket connection to a running rsync
daemon on the remote host.  See the section "USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL
CONNECTION" above.
Command-line arguments are permitted in COMMAND provided that COMMAND is presented to rsync
as a single argument.  You must use spaces (not tabs or other whitespace) to separate the
command and args from each other, and you can use single- and/or double-quotes to preserve
spaces in an argument (but not backslashes).  Note that doubling a
single-quote inside a single-quoted string gives you a single-quote; likewise for double-
quotes (though you need to pay attention to which quotes your shell is parsing and which
quotes rsync is parsing).  Some examples:
    -e 'ssh -p 2234'
    -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"'
(Note that ssh users can alternately customize site-specific connect options in their
.ssh/config file.)
You can also choose the remote shell program using the RSYNC_RSH environment variable,
which accepts the same range of values as -e.
See also the --blocking-io option which is affected by this option.

Man kann also den Port wie folgt angeben:

rsync -e "ssh -p 12345" daten zielrechner:

Mit diesem Kommando wird die Datei daten auf den Zielrechner kopiert, dessen SSH Daemon auf Port 12345 lauscht.

Juli 29, 2014 · 2 Minuten

Weave Sync und Reg Server Setup unter Debian Lenny

Update vom 16.4.: Der Artikel ist schon einigermaßen veraltet. Daher würd ich den nicht mehr so genau nehmen. Einige Anmerkungen und für einige Probleme haben engagierte Nutzer Kommentare geschrieben.

Wer wie ich mal einen Weave Sync Server unter Debian aufsetzen will, um einen eigenen Server zu haben mit dem das neue Firefox Sync Addon synchronisiert, dem wird die folgende Anleitung helfen.

Voraussetzung für die Anleitung ist ein installierter Apache2 mit mindestens php 5.1, php-json, php-mysql und eine MySQL Installation.

Zunächst hab ich in /var/www ein neues Verzeichnis erstellt und die Server (Sync und Reg Server heruntergeladen, beides entpackt und die Ordner umbenannt:

mkdir weave && cd weave
wget http://hg.mozilla.org/services/sync-server/archive/tip.tar.gz
wget http://hg.mozilla.org/services/reg-server/archive/tip.tar.gz
tar xfz tip.tar.gz
tar xfz tip.tar.gz.1
mv reg-server-828798f908a0/ reg-server
mv sync-server-55d5049f6eeb/ sync-server

Als nächstes hab ich erstmal einen neuen Vhost für den Apache angelegt und entsprechend der beiden Anleitungen (Sync und Reg) konfiguriert. Die sieht nun so aus:

<VirtualHost myserver.de:80>
        ServerName myserver.de
        Redirect / https://myserver.de
</VirtualHost>
<VirtualHost myserver.de:443>&lt;br />
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/server-cert.pem
        SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem
        ServerAdmin webmaster@myserver.de
        ServerName myserver.de
        DocumentRoot /var/www/weave
        Alias /1.0      /var/www/weave/sync-server/1.0/index.php
        Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php
        Alias /user/1   /var/www/weave/reg-server/1.0/index.php
        Alias /misc/1.0/captcha_html    /var/www/weave/reg-server/1.0/captcha.php
        Alias /misc/1/captcha_html      /var/www/weave/reg-server/1.0/captcha.php
        Alias /weave-registration-static        /var/www/weave/reg-server/1.0/static
        Alias /weave-password-reset             /var/www/weave/reg-server/1.0/forgot_password.php
        CustomLog /var/log/apache2/weave/access.log combined
        ErrorLog /var/log/apache2/weave/error.log
        DirectoryIndex index.php index.html index.htm
        ServerSignature Off
        <Directory "/var/www/weave/">
                Options Indexes FollowSymLinks
                AllowOverride none
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Anschließend muss eine neue Datenbank erstellt werden. Auf dieser muss dann der folgende SQL-Code ausgeführt werden, der die Tabellen erstellt:

CREATE TABLE `collections` (
  `userid` int(11) NOT NULL,
  `collectionid` smallint(6) NOT NULL,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`userid`,`collectionid`),
  KEY `nameindex` (`userid`,`name`)
) ENGINE=InnoDB;
CREATE TABLE `wbo` (
  `username` int(11) NOT NULL,
  `collection` smallint(6) NOT NULL default '0',
  `id` varbinary(64) NOT NULL default '',
  `parentid` varbinary(64) default NULL,
  `predecessorid` varbinary(64) default NULL,
  `sortindex` int(11) default NULL,
  `modified` bigint(20) default NULL,
  `payload` longtext,
  `payload_size` int(11) default NULL,
  PRIMARY KEY  (`username`,`collection`,`id`),
  KEY `parentindex` (`username`,`collection`,`parentid`),
  KEY `modified` (`username`,`collection`,`modified`),
  KEY `weightindex` (`username`,`collection`,`sortindex`),
  KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
  KEY `size_index` (`username`,`payload_size`)
) ENGINE=InnoDB;
create table users (
 id int(11) NOT NULL PRIMARY KEY auto_increment,
 username varchar(32),
 password_hash varbinary(128),
 email varbinary(64),
 status tinyint(4) default '1',
 alert text,
 reset varbinary(32) default null
) engine=InnoDB;

Schließlich müssen die beiden Server nur noch eingerichtet werden. Zunächst den Sync Server:

cd /var/www/weave/sync-server/1.0/
cp default_constants.php.dist default_constants.php

Anschließend wird die weave_constants.php bearbeitet. Direkt in der Zeile nach <?php werden die folgenden Zeilen eingefügt, die auf die eigenen Bedürfnisse angepasst werden müssen:

define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_HOST', '<db host>');
define('WEAVE_MYSQL_AUTH_DB', '<db name>');
define('WEAVE_MYSQL_AUTH_USER', '<db username>');
define('WEAVE_MYSQL_AUTH_PASS', '<db password>');
define('WEAVE_STORAGE_ENGINE', 'mysql');
define('WEAVE_MYSQL_STORE_READ_HOST', '<db host>');
define('WEAVE_MYSQL_STORE_READ_DB', '<db name>');
define('WEAVE_MYSQL_STORE_READ_USER', '<db username>');
define('WEAVE_MYSQL_STORE_READ_PASS', '<db password>');
define('WEAVE_MYSQL_STORE_WRITE_HOST', WEAVE_MYSQL_STORE_READ_HOST);
define('WEAVE_MYSQL_STORE_WRITE_DB', WEAVE_MYSQL_STORE_READ_DB);
define('WEAVE_MYSQL_STORE_WRITE_USER', WEAVE_MYSQL_STORE_READ_USER);
define('WEAVE_MYSQL_STORE_WRITE_PASS', WEAVE_MYSQL_STORE_READ_PASS);

Nachdem nun der Sync Server konfiguriert ist, muss der Reg Server noch konfiguriert werden.

cd /var/www/weave/reg-server/1.0/
cp weave_user_constants.php.dist weave_user_constants.php

Die kopierte weave_user_constants.php muss nun noch mit folgenden anzupassenden Zeilen nach dem Lizenzblock ergänzt werden:

# ***** END LICENSE BLOCK *****
define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_HOST', '<db host>');
define('WEAVE_MYSQL_AUTH_DB', '<db name>');
define('WEAVE_MYSQL_AUTH_USER', '<db username>');
define('WEAVE_MYSQL_AUTH_PASS', '<db password>');
define('WEAVE_SHA_SALT', '<hier einen langen, zufälligen salt eingeben; wichtig für sha256>');

Das war es eigentlich schon. Wenn ihr beim Einrichten des Plugins nun eure eigene URL https://myserver.de eingebt, solltet ihr euch einen Account erstellen können und mit dem Server synchronisieren können. Ich hatte leider noch ein Problem mit dem Sync Server.

Ich habe auf meinem Server nur die deutsche Locale installiert:

strubbl:~$ locale -a
C
de_DE.utf8
POSIX

Dadurch gab es einen Fehler. Dieser wurde in der Datei /var/www/sync-server/1.0/weave_user/mysql.php in Zeile 84 geworfen. Die Zeile 83 lautet:

if (setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8") == false)

Wenn man die Locale en_US nicht installiert hat, einfach durch die ersetzen, die man hat. Bei mir ist das dann de_DE und die Zeile sieht wie folgt aus:

if (setlocale(LC_CTYPE, "UTF8", "de_DE.UTF-8") == false)

Wenn es endlich alles läuft, wird man auf die Webseite geleitet: First Run.

Richtet man einen zweiten PC mit dem Sync Account ein, wird man dann auf die Webseite geleitet: Second Run.

UPDATE

Der Bjoern hat das Tutorial vor kurzem gecheckt und einige kleine Anmerkungen gemacht. Ich hab z.Z. keinen eigenen Weave Server mehr am Laufen.

Juli 1, 2010 · 4 Minuten