Sign inSign up

davyinsa/rsync-server

By davyinsa

•Updated over 1 year ago

Image
0

1.0K

davyinsa/rsync-server repository overview

⁠THIS PROJECT IS UNMAINTAINED AND ARCHIVED. USE AT YOUR OWN RISK.

⁠rsync-server

A rsyncd/sshd server in Docker. You know, for moving files.

⁠Quickstart

Start a server (both sshd and rsyncd are supported)

docker run \
    --name rsync-server \
    -p 8000:873 \
    -p 9000:22 \
    -e USERNAME=user \
    -e PASSWORD=someSecurePassword_NOT_THIS \
    -v /your/public.key:/root/.ssh/authorized_keys \
    axiom/rsync-server:latest

You must set a password via PASSWORD or PASSWORD_FILE, even if you are using key authentication.

⁠rsyncd

Please note that /volume is the rsync volume pointing to /data. The data will be at /data in the container. Use the VOLUME parameter to change the destination path in the container. Even when changing VOLUME, you will still rsync to /volume.

rsync -av /your/folder/ rsync://user@localhost:8000/volume
Password: pass

sending incremental file list
./
foo/
foo/bar/
foo/bar/hi.txt

sent 166 bytes  received 39 bytes  136.67 bytes/sec
total size is 0  speedup is 0.00
⁠sshd

Please note that you are connecting as the root and not the user specified in the USERNAME variable. If you don't supply a key file you will be prompted for the PASSWORD.

rsync -av -e "ssh -i /your/private.key -p 9000 -l root" /your/folder/ localhost:/data

sending incremental file list
./
foo/
foo/bar/
foo/bar/hi.txt

sent 166 bytes  received 31 bytes  131.33 bytes/sec
total size is 0  speedup is 0.00

⁠Usage

Variable options (on run)

ParameterFunction
USERNAMEthe rsync username. defaults to user
PASSWORDthe rsync password. One of PASSWORD or PASSWORD_FILE is required.
PASSWORD_FILEpath to a file containing the rsync password. One of PASSWORD or PASSWORD_FILE is required.
AUTHORIZED_KEYSthe ssh key (for root user). defaults empty
VOLUMEthe path for rsync. defaults to /data
PUIDUserID used to transfer files when running the rsync . defaults to root
GUIDGroupID used to transfer files when running the rsync . defaults to root
DENYspace separated list of allowed sources. defaults to *
ALLOWspace separated list of allowed sources. defaults to 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 127.0.0.1/32.
ROrsync volume read only. defaults to false
CUSTOMCONFIGrsyncd.conf custom config for subsection volume (\n\t for new line ex: uid = root\n\tgid = root). defaults empty
⁠Simple server on port 873
docker run -p 873:873 -e PASSWORD=changeme axiom/rsync-server:latest
⁠Use a volume for the default /data
docker run -p 873:873 -e PASSWORD=seriouslychangeme -v /your/folder:/data axiom/rsync-server:latest
⁠Set a username and password
docker run \
    -p 873:873 \
    -v /your/folder:/data \
    -e USERNAME=admin \
    -e PASSWORD=imnotkidding \
    axiom/rsync-server:latest
⁠Set password via file
docker run \
    -p 873:873 \
    -v /your/folder:/data \
    -v ./password-file-with-secure-permissions:/etc/rsyncd/password:ro \
    -e USERNAME=admin \
    -e PASSWORD_FILE=/etc/rsyncd/password \
    axiom/rsync-server:latest
⁠Run on a custom port
docker run \
    -p 9999:873 \
    -v /your/folder:/data \
    -e USERNAME=admin \
    -e PASSWORD=plzchng \
    axiom/rsync-server:latest
rsync rsync://admin@localhost:9999

volume            /data directory
⁠Modify the default volume location
docker run \
    -p 9999:873 \
    -v /your/folder:/myvolume \
    -e USERNAME=admin \
    -e PASSWORD=yougetitnow \
    -e VOLUME=/myvolume \
    axiom/rsync-server:latest
rsync rsync://admin@localhost:9999

volume            /myvolume directory
⁠Allow specific client IPs
docker run \
    -p 9999:873 \
    -v /your/folder:/myvolume \
    -e USERNAME=admin \
    -e PASSWORD=hopesoanyway \
    -e VOLUME=/myvolume \
    -e ALLOW=192.168.24.0/24 \
    axiom/rsync-server:latest
⁠Over SSH

If you would like to connect over ssh, you may mount your public key or authorized_keys file to /root/.ssh/authorized_keys. This file must have owner root, group root, and 400 octal permissions.

Alternatively, you may specify the AUTHORIZED_KEYS environment variable.

Without setting up an authorized_keys file, you will be propted for the password (which was specified in the PASSWORD variable).

Please note that when using sshd you will be specifying the actual folder destination as you would when using SSH. On the contrary, when using the rsyncd daemon, you will always be using /volume, which maps to VOLUME inside of the container.

docker run \
    -v /your/folder:/myvolume \
    -e USERNAME=admin \
    -e PASSWORD=2manyp455w0rd5 \
    -e VOLUME=/myvolume \
    -e ALLOW=10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 127.0.0.1/32 \
    -v /my/authorized_keys:/root/.ssh/authorized_keys \
    -p 9000:22 \
    axiom/rsync-server:latest
rsync -av -e "ssh -i /your/private.key -p 9000 -l root" /your/folder/ localhost:/data

Tag summary

Content type

Image

Digest

sha256:26e4a1363…

Size

32.6 MB

Last updated

over 1 year ago

docker pull davyinsa/rsync-server