re init
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
REMOTE_HOST=mir.whatbox.ca
|
||||
REMOTE_USER=invalid
|
||||
SSH_KEY_FILE_NAME=id_sprattle
|
||||
|
||||
SSH_PRIVATE_KEY='-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
|
||||
NhAAAAAwEAAQAAAQEA335F6fDCS6a1+agXMlIpf3F1VMs7d1FS7zRdCJWIoWNtVQ+oDLGv
|
||||
YWsbAhkW2J2ifaHwoskogK9Bqju3vKqPb7k8AlXIriHVH04u5NKWBpWdhyRFcgKti+NHlp
|
||||
F6ODRYeLXrNOkJh4HPWMhip9UUWz46khxhznoBeRqUa/6JBe5nFN14QpRSKi6HZiBsU+9k
|
||||
MfMLcRklGVfLa8Ou4BawPtLNvTo1FT4Ry5TJz1gqRUGc/LnDeGrvF80PtCyDaaW5JfElkV
|
||||
m7Du0UPTd2mlrwd+f1S9VVYBGxm/fiHBn6BDcsM+/LWhn+ZhpQEIhtznWlm2IDGdYLS7Py
|
||||
RZ0zVRT5+QAAA8A917pJPde6SQAAAAdzc2gtcnNhAAABAQDffkXp8MJLprX5qBcyUil/cX
|
||||
VUyzt3UVLvNF0IlYihY21VD6gMsa9haxsCGRbYnaJ9ofCiySiAr0GqO7e8qo9vuTwCVciu
|
||||
IdUfTi7k0pYGlZ2HJEVyAq2L40eWkXo4NFh4tes06QmHgc9YyGKn1RRbPjqSHGHOegF5Gp
|
||||
Rr/okF7mcU3XhClFIqLodmIGxT72Qx8wtxGSUZV8trw67gFrA+0s29OjUVPhHLlMnPWCpF
|
||||
QZz8ucN4au8XzQ+0LINppbkl8SWRWbsO7RQ9N3aaWvB35/VL1VVgEbGb9+IcGfoENywz78
|
||||
taGf5mGlAQiG3OdaWbYgMZ1gtLs/JFnTNVFPn5AAAAAwEAAQAAAQANLkKYs79jVcwsRdqq
|
||||
xMfrJ7mLP2DDWAAwclUJ5Hb5fN/3h2Pz7hpeGcJ7thev8JZvzit43KzViUB+qTH1xjtaYM
|
||||
EzKnSahg1H+ngiiT1NQYKkwNT423aS8vVt+46ka1XlnJkBqe+LCdlWlTU+suVJJYGvzBod
|
||||
yS1DQ3fwaV0S0Xd3BiI8ER9AcnYUNyMTKvs6LNvhCrafgqWOaXXcbWewNr+PKW5zUoXd5w
|
||||
g9njvIpIT0t9H/T2kSxqk97SyfFN1osOe1ncyME+JrgYpU9iA0fV0eWbjP3k20q6IVZl1+
|
||||
YpTfC6F0I52eDCK2r73gtOFyhSdXCCjlV/722KI2+utHAAAAgQCYJGt5zBU4ibiWEs84l0
|
||||
uh8eVT81QAvRNIUAe2U4Qd0pwugQ3K37HLmOmd5L+lN3BF6OMNJobdRGXCKyoYNXbrtlTN
|
||||
I+GCN1ZyWvoniD/+K/qnFZpcBzWaDDuWBghQk4FcOK6U6rGX2IPel8j501tv3SJpTmnJl4
|
||||
hcmte51woohwAAAIEA98WbIr00Pm+9EIxt2NtQMO88wLk/4lCHiXEFmHjQ0Aiswof4j2Xe
|
||||
cKKdUYwRKOJNZoeJiIFGRLi9i3/rS3mFYxjaMky260xOM+YZlcDkJHLjdhgXUEsaJFl/GI
|
||||
ZzjGPezYRzgXtgTeyPVQizUKUKeYDyMChvE3CzFhAEaGLdRu8AAACBAObqRBk/jfgcYdaG
|
||||
zGGhRb0Yir8H+o8T1qUWddJZXAesHXYwJoKrm0spFE/MGs651tMtc8SSEe3YMyfV23yojh
|
||||
e6ZVnh8nkpQsxgyhp3UKlrBrVjEfk9bZvHodXlLisGZldpRxHfFBMlRt5PaFjlEXSCiv01
|
||||
Kn0C9MI+MbInag2XAAAACHNwcmF0dGxlAQI=
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
'
|
||||
@@ -0,0 +1,49 @@
|
||||
# https://hub.docker.com/_/alpine
|
||||
ARG alpine_ver=3.18
|
||||
FROM alpine:${alpine_ver}
|
||||
|
||||
ARG build_rev=0
|
||||
|
||||
# ARG SSH_PRIVATE_KEY
|
||||
# ARG REMOTE_HOST
|
||||
|
||||
# Install Rsync and SSH.
|
||||
RUN apk update \
|
||||
&& apk upgrade \
|
||||
&& apk add --no-cache \
|
||||
rsync \
|
||||
bash \
|
||||
openssh-client-default \
|
||||
sshpass \
|
||||
nodejs-current \
|
||||
npm \
|
||||
ca-certificates tzdata \
|
||||
&& update-ca-certificates \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
# RUN addgroup -S node && adduser -S node -G node
|
||||
|
||||
# USER node
|
||||
|
||||
# RUN mkdir /home/node/.ssh
|
||||
|
||||
|
||||
|
||||
RUN mkdir sprattle
|
||||
|
||||
# RUN mkdir -p -m 0700 /home/node/.ssh && ssh-keyscan $REMOTE_HOST >> /home/node/.ssh/known_hosts
|
||||
|
||||
# RUN chown -R node:node /home/node/.ssh
|
||||
|
||||
WORKDIR /sprattle
|
||||
|
||||
|
||||
COPY package*.json ./
|
||||
COPY . .
|
||||
|
||||
RUN ls -la
|
||||
|
||||
RUN npm install
|
||||
# COPY --chown=node:node . .
|
||||
|
||||
CMD ["node", "srv.js"]
|
||||
@@ -0,0 +1,4 @@
|
||||
# Sprattle
|
||||
Using ssh, rsync and cron to sync directories.
|
||||
|
||||
1. On the host
|
||||
@@ -0,0 +1,14 @@
|
||||
version: '3.2'
|
||||
|
||||
services:
|
||||
sprattle:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile
|
||||
environment:
|
||||
- REMOTE_HOST=$REMOTE_HOST
|
||||
- REMOTE_USER=$REMOTE_USER
|
||||
- SSH_KEY_FILE_NAME=$SSH_KEY_FILE_NAME
|
||||
- SSH_PRIVATE_KEY=${SSH_PRIVATE_KEY}
|
||||
volumes:
|
||||
- ~/.ssh/id_sprattle:/root/.ssh/id_sprattle
|
||||
Generated
+1308
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "sprattle",
|
||||
"version": "1.0.0",
|
||||
"description": "An rsync / ssh / cron file sync server",
|
||||
"main": "srv.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "knast",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
"node-ssh": "^13.1.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
const express = require('express')
|
||||
const { exec, execSync, spawn } = require("child_process");
|
||||
const { NodeSSH } = require('node-ssh')
|
||||
const crypto = require('crypto');
|
||||
|
||||
const node_ssh = new NodeSSH()
|
||||
|
||||
const app = express()
|
||||
const port = 3000
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.send('Hello World!')
|
||||
})
|
||||
|
||||
app.listen(port, () => {
|
||||
|
||||
console.log("REMOTE_HOST: ", process.env.REMOTE_HOST);
|
||||
console.log("REMOTE_USER: ", process.env.REMOTE_USER);
|
||||
console.log("SSH_KEY_FILE_NAME: ", process.env.SSH_KEY_FILE_NAME);
|
||||
|
||||
const sync_cmd = `ssh -i /root/.ssh/${process.env.SSH_KEY_FILE_NAME} ${process.env.REMOTE_USER}@${process.env.REMOTE_HOST}`
|
||||
|
||||
// I DONT NEED TO SSH. ONLY RSYNC OVER PROTOCOL
|
||||
node_ssh.connect({
|
||||
host: `${process.env.REMOTE_HOST}`,
|
||||
username: `${process.env.REMOTE_USER}`,
|
||||
privateKeyPath: `/root/.ssh/${process.env.SSH_KEY_FILE_NAME}`
|
||||
})
|
||||
.then((data) => {
|
||||
console.log('after ssh connect');
|
||||
console.log('data ', data);
|
||||
})
|
||||
|
||||
|
||||
|
||||
// const ls = spawn(sync_cmd, ["ls", "-la"]);
|
||||
|
||||
// ls.stdout.on("data", data => {
|
||||
// console.log(`stdout: ${data}`);
|
||||
// });
|
||||
|
||||
// ls.stderr.on("data", data => {
|
||||
// console.log(`stderr: ${data}`);
|
||||
// });
|
||||
|
||||
// ls.on('error', (error) => {
|
||||
// console.log(`error: ${error.message}`);
|
||||
// });
|
||||
|
||||
// ls.on("close", code => {
|
||||
// console.log(`child process exited with code ${code}`);
|
||||
// });
|
||||
|
||||
// exec(`ssh-keyscan ${process.env.REMOTE_HOST} >> /root/.ssh/known_hosts`, (error, stdout, stderr) => {
|
||||
// if (error) {
|
||||
// console.error(`exec error: ${error}`);
|
||||
// return;
|
||||
// }
|
||||
// console.log(`stdout: ${stdout}`);
|
||||
// console.error(`stderr: ${stderr}`);
|
||||
// });
|
||||
|
||||
// exec(sync_cmd, (error, stdout, stderr) => {
|
||||
// if (error) {
|
||||
// console.error(`exec error: ${error}`);
|
||||
// return;
|
||||
// }
|
||||
// console.log(`stdout: ${stdout}`);
|
||||
// console.error(`stderr: ${stderr}`);
|
||||
// });
|
||||
|
||||
console.log(`sprattle running on port ${port}`)
|
||||
})
|
||||
Reference in New Issue
Block a user