Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM debian:bookworm
FROM debian:bookworm-slim
MAINTAINER Adrian Dvergsdal [atmoz.net]

# Steps done in one RUN layer:
Expand All @@ -8,12 +8,14 @@ MAINTAINER Adrian Dvergsdal [atmoz.net]
RUN apt-get update && \
apt-get upgrade -y && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install --no-install-recommends openssh-server && \
apt-get -y install --no-install-recommends netcat-openbsd && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p /var/run/sshd && \
rm -f /etc/ssh/ssh_host_*key*

COPY files/sshd_config /etc/ssh/sshd_config
COPY files/create-sftp-user /usr/local/bin/
COPY files/healthcheck.sh /usr/local/bin/
COPY files/entrypoint /

EXPOSE 22
Expand Down
12 changes: 12 additions & 0 deletions files/healthcheck.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

# 1. Check if the sshd process is actually running
pgrep sshd > /dev/null || exit 1

# 2. Try to open a TCP connection to the SSH port locally
# -z: scan for listening daemons without sending data
# -w 2: timeout after 2 seconds
nc -z -w 2 127.0.0.1 22 || exit 1

exit 0

15 changes: 15 additions & 0 deletions genpwd.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import bcrypt
import sys


def main():
print(f"hashing password: {sys.argv[1]}")
password = sys.argv[1]
salt = bcrypt.gensalt(10)
hashed = bcrypt.hashpw(password.encode(), salt)
print(f"hashed password: {hashed}")


if __name__ == "__main__":
raise SystemExit(main())

25 changes: 25 additions & 0 deletions logos.sftp.server.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

SFTP_IMAGE="logos/sftp-server:0.3"
SFTP_HOSTNAME="logos.sftp.srv.01"
SFTP_HOST_PORT=3322

SFTP_USERNAME="foo"
# sample cfg password is: pass
# to generate the encrypted pwd run: python3 genpwd.py"
SFTP_ENCRYPTED_PWD=$2b$10$lCXQfDMMc4nibdLnDk1ycundyYX/eFDO8Q0Nvj81y78ssk4TqZtHO
SFTP_HOST_UID=590201106

SFTP_HOST_UPLOAD_FOLDER="/home/netresults.wintranet/borghese/tmp/logos-upload-folder"
SFTP_UPLOAD_FOLDER="/home/foo/upload"

# Format is:
# username:encrypted_passwd:e:[UID]:[GID]:
ENV_SFTP_USERS=${SFTP_USERNAME}:${SFTP_ENCRYPTED_PWD}:e:${SFTP_HOST_UID}::

# container healthcheck session
HEALTCHECK_CMD="/bin/bash /usr/local/bin/healthcheck.sh"
HEALTHCHECK_INTERVAL_SEC=60s
HEALTHCHECK_TIMEOUT_SEC=5s
HEALTHCHECK_RETRIES=3
HEALTCHECK_START_PERIOD_SEC=30s

19 changes: 19 additions & 0 deletions logos.sftp.server.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

services:
logos.sftp.srv:
image: ${SFTP_IMAGE}
restart: unless-stopped
hostname: ${SFTP_HOSTNAME}
environment:
SFTP_USERS: ${ENV_SFTP_USERS}
volumes:
- ${SFTP_HOST_UPLOAD_FOLDER}:${SFTP_UPLOAD_FOLDER}
ports:
- "${SFTP_HOST_PORT}:22"
healthcheck:
test: ${HEALTCHECK_CMD}
interval: ${HEALTHCHECK_INTERVAL_SEC}
timeout: ${HEALTHCHECK_TIMEOUT_SEC}
retries: ${HEALTHCHECK_RETRIES}
start_period: ${HEALTCHECK_START_PERIOD_SEC}