diff --git a/README.md b/README.md
index 0fd7180..343cafd 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,77 @@
-git.limbosolutions.com/kb/borg-backup
\ No newline at end of file
+# borg-backup
+
+
+
+## container image
+
+## environment variables
+
+
+
+``` bash
+docker run git.limbosolutions.com/kb/borg-backup:latest
+```
+
+### docker compose
+
+Example of simple usage for creating a backup
+
+```yaml
+services:
+ borg-backup:
+ image: git.limbosolutions.com/kb/borg-backup:latest
+ command: create ${BORG_REPO}::repos-$(date +%Y%m%d%H%M%S) /mnt/user
+ restart: no
+
+ volumes:
+ - ./home/user:/mnt/user # Mount local folder to container
+
+ environment:
+ - BORG_REPO=?????
+ - BORG_RSH="ssh -o StrictHostKeyChecking=no"
+ - BORG_PASSPHRASE=????
+
+ configs:
+ - source: id_ed25519 # required for ssh client
+ target: /home/borg/.ssh/id_ed25519
+ - source: borg_key # required for borg client
+ target: /app/borg/key
+
+
+configs:
+
+ id_ed25519:
+ content: |
+ -----BEGIN OPENSSH PRIVATE KEY-----
+ **************
+ **************
+ -----END OPENSSH PRIVATE KEY-----
+
+ borg_key:
+ content: |
+ BORG_KEY ???????
+ ????????????????
+ ????????????????
+
+
+```
+
+### dev
+
+``` bash
+docker compose \
+--project-name borg-backup-dev \
+-f docker-compose.dev.yaml \
+-f docker-compose.dev.local.yaml \
+up
+```
+
+Force Build:
+
+``` bash
+docker compose \
+--project-name borg-backup-dev \
+-f docker-compose.dev.yaml \
+-f docker-compose.dev.local.yaml \
+up --build
+```
diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml
new file mode 100644
index 0000000..529bd33
--- /dev/null
+++ b/docker-compose.dev.yaml
@@ -0,0 +1,35 @@
+services:
+ borg:
+ tty: true
+ stdin_open: true
+ # entrypoint: ["bash"]
+ build:
+ dockerfile: docker/Dockerfile
+ context: .
+ environment:
+ - BORG_REPO=???????
+ - BORG_RSH="ssh -o StrictHostKeyChecking=no"
+ - BORG_PASSPHRASE=????
+
+ configs:
+ - source: id_ed25519
+ target: /home/borg/.ssh/id_ed25519
+ - source: borg_key
+ target: /app/borg/key
+
+ volumes:
+ - ./docker/app/scripts:/app/scripts
+configs:
+
+ id_ed25519:
+ content: |
+ -----BEGIN OPENSSH PRIVATE KEY-----
+ ???????
+ ???????
+ -----END OPENSSH PRIVATE KEY-----
+
+ borg_key:
+ content: |
+ BORG_KEY ???????
+ ????????????????
+ ????????????????
\ No newline at end of file
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
deleted file mode 100644
index 44a282f..0000000
--- a/docker-compose.dev.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-services:
- borg:
- build:
- dockerfile: /docker/dockerfile
- context: .
- environment:
- - BORG_REPO=${BORG_REPO}
- - BORG_RSH=${BORG_RSH}
- - BORG_PASSPHRASE=${BORG_PASSPHRASE}
- - SSH_ID=${SSH_ID}
- - BORG_KEY=${BORG_KEY}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3ffa98d..0783da2 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,16 +1,25 @@
-FROM ubuntu:latest
+FROM alpine:latest
-RUN apt-get update
-
-RUN apt-get install -y \
- python3 \
- python3-pip \
- borgbackup \
- fuse \
- python3-pyfuse3 \
- openssh-client
+# Install BorgBackup and OpenSSH client
+RUN apk update && apk add --no-cache \
+ borgbackup \
+ openssh \
+ bash \
+ tzdata
COPY ./docker/app /app
-RUN chmod +x /app/scripts/ffenv
-RUN ln -s /app/scripts/ffenv /usr/local/bin/ffenv
+RUN chmod +x /app/scripts -R
+RUN ln -s /app/scripts/loadenv /usr/local/bin/loadenv
+RUN ln -s /app/scripts/remote-connect /usr/local/bin/remote-connect
+RUN ln -s /app/scripts/remote-connect /usr/local/bin/remote-get-folder-size
+RUN addgroup -S borg && adduser -S borg -G borg
+USER borg
+WORKDIR /home/borg
+
+RUN echo "source /usr/local/bin/loadenv" > ~/.bash_profile
+RUN echo "source /usr/local/bin/loadenv" > ~/.bashrc
+
+ENTRYPOINT ["bash" , "-c", "borg $0"]
+
+CMD ["--help"]
\ No newline at end of file
diff --git a/docker/app/scripts/ffenv b/docker/app/scripts/ffenv
deleted file mode 100644
index 2eaab7e..0000000
--- a/docker/app/scripts/ffenv
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-echo "checking SSH_ID..."
-if [[ "${SSH_ID}" ]]; then
- echo "found SSH_ID..."
- mkdir -p /root/.ssh
- echo "${SSH_ID}" > /root/.ssh/id_rsa
- chmod 700 /root/.ssh/id_rsa
-fi
-echo "checking BORG_KEY..."
-if [[ "${BORG_KEY}" ]]; then
- echo "found BORG_KEY..."
- mkdir -p /root/.config/borg/keys
- echo "${BORG_KEY}" > /root/.config/borg/keys/key
-fi
-
-
-
-
-
diff --git a/docker/app/scripts/loadenv b/docker/app/scripts/loadenv
new file mode 100755
index 0000000..1fa1e68
--- /dev/null
+++ b/docker/app/scripts/loadenv
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+
+(return 0 2>/dev/null) || {
+ echo "Please source this script: source $0"
+ exit 1
+}
+
+
+if [ -f "/app/borg/key" ]; then
+ export BORG_KEY_FILE="/app/borg/key"
+fi
+
+
+# extracts ssh connection from borg-repo
+export SSH_CONNECTION="${BORG_REPO#ssh://}"
+export SSH_CONNECTION="${SSH_CONNECTION%%/*}"
+
+#extract folder from ssh connection
+export SSH_FOLDER="/${BORG_REPO#ssh://*/}"
+
+
+export SSH_COMMAND="ssh"
+if [ "${BORG_RSH}" ]; then
+ export SSH_COMMAND=${BORG_RSH}
+fi
+
+export SSH_COMMAND="$SSH_COMMAND $SSH_CONNECTION"
+
+
+
+
diff --git a/docker/app/scripts/remote-connect b/docker/app/scripts/remote-connect
new file mode 100755
index 0000000..300c045
--- /dev/null
+++ b/docker/app/scripts/remote-connect
@@ -0,0 +1,11 @@
+#/bin/bash
+source /app/scripts/loadenv
+#echo "Received: $@"
+#echo "Trace: Connecting with: ${SSH_COMMAND[@]}" "$@"
+
+# converts command to array
+read -r -a SSH_COMMAND_ARRAY <<< "$SSH_COMMAND"
+
+#echo "Running: ${SSH_COMMAND_ARRAY[@]} $@"
+# executes ssh command with all arguments received from caller
+"${SSH_COMMAND_ARRAY[@]}" "$@"
diff --git a/docker/app/scripts/remote-get-folder-size b/docker/app/scripts/remote-get-folder-size
new file mode 100755
index 0000000..d02b5c6
--- /dev/null
+++ b/docker/app/scripts/remote-get-folder-size
@@ -0,0 +1,5 @@
+#/bin/bash
+source loadenv
+repo_size_bytes=$(remote-connect du -b "$SSH_FOLDER" -d 0)
+repo_size_bytes=$(echo "$repo_size_bytes" | awk '{print $1}')
+echo "$repo_size_bytes"
\ No newline at end of file