From ab7a0569a93fc183c2ae2bda8ceb084dca5facc7 Mon Sep 17 00:00:00 2001
From: Tony Blyler <git@tonyblyler.com>
Date: Sat, 15 May 2021 00:22:40 -0400
Subject: [PATCH 1/2] create basic Dockerfile for having an ssh server with
 rsync

---
 .dockerignore |  1 +
 Dockerfile    |  5 +++++
 Makefile      |  7 +++++++
 entrypoint.sh | 13 +++++++++++++
 4 files changed, 26 insertions(+)
 create mode 100644 .dockerignore
 create mode 100644 Dockerfile
 create mode 100644 Makefile
 create mode 100644 entrypoint.sh

diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..6b8710a
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+.git
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8a20989
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,5 @@
+FROM alpine:3.13
+
+RUN apk add --no-cache \
+	openssh-server \
+	rsync
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3a1a9a7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+.PHONY: build
+build:
+	docker build -t registry.0xdad.com/rsync-ssh-server:latest .
+
+.PHONY: deploy
+deploy: build
+	docker push registry.0xdad.com/rsync-ssh-server:latest
diff --git a/entrypoint.sh b/entrypoint.sh
new file mode 100644
index 0000000..183b58c
--- /dev/null
+++ b/entrypoint.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -eu
+
+ssh-keygen -A
+
+/usr/sbin/sshd
+
+while pgrep -f /usr/sbin/sshd; do
+	sleep 5
+done
+
+>&2 echo 'SSHD is no longer running'
+exit 1

From bc3edaad62242ea3c04d35ebdbc222d150d777e5 Mon Sep 17 00:00:00 2001
From: Tony Blyler <git@tonyblyler.com>
Date: Sat, 15 May 2021 00:41:19 -0400
Subject: [PATCH 2/2] add basic rsync server image

---
 Dockerfile    | 2 ++
 README.md     | 9 +++++++++
 entrypoint.sh | 4 ++++
 3 files changed, 15 insertions(+)

diff --git a/Dockerfile b/Dockerfile
index 8a20989..63c3c6b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,3 +3,5 @@ FROM alpine:3.13
 RUN apk add --no-cache \
 	openssh-server \
 	rsync
+
+RUN mkdir -p /root/.ssh && cp /etc/ssh/sshd_config /etc/default_sshd_config
diff --git a/README.md b/README.md
index 0987081..6880c9e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,11 @@
 # docker-rsync-server
 
+This is a simple docker image definition for starting an SSH server that is used for rsyncing to volume mounts.
+
+## Volumes
+
+| path                       | description                           |
+|----------------------------|---------------------------------------|
+| /root/.ssh/authorized_keys | the ssh keys to allow for auth        |
+| /etc/ssh                   | location for SSH host keys and config |
+| anywhere else              | the locations available for rsync     |
diff --git a/entrypoint.sh b/entrypoint.sh
index 183b58c..b1e90b6 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -3,6 +3,10 @@ set -eu
 
 ssh-keygen -A
 
+if [ ! -e '/etc/ssh/sshd_config' ]; then
+	cp /etc/default_sshd_config /etc/ssh/sshd_config
+fi
+
 /usr/sbin/sshd
 
 while pgrep -f /usr/sbin/sshd; do