diff --git a/Dockerfile b/Dockerfile index 53ffdda5dd664..2b2657276dff8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \ FROM alpine:3.7 LABEL maintainer="maintainers@gitea.io" -EXPOSE 22 3000 +EXPOSE 2222 3000 RUN apk --no-cache add \ bash \ @@ -29,11 +29,8 @@ RUN apk --no-cache add \ curl \ gettext \ git \ - linux-pam \ - openssh \ - s6 \ + openssh-keygen \ sqlite \ - su-exec \ tzdata RUN addgroup \ @@ -48,14 +45,18 @@ RUN addgroup \ git && \ echo "git:$(dd if=/dev/urandom bs=24 count=1 status=none | base64)" | chpasswd -ENV USER git + +RUN mkdir -p /data /app/gitea && chown -R git:git /data /app/gitea +RUN ln -s /app/gitea/gitea /usr/local/bin/gitea + +USER git ENV GITEA_CUSTOM /data/gitea VOLUME ["/data"] +WORKDIR /app/gitea ENTRYPOINT ["/usr/bin/entrypoint"] -CMD ["/bin/s6-svscan", "/etc/s6"] +CMD ["/app/gitea/gitea", "web"] COPY docker / COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea -RUN ln -s /app/gitea/gitea /usr/local/bin/gitea diff --git a/docker/etc/profile.d/gitea.sh b/docker/etc/profile.d/gitea.sh deleted file mode 100755 index 41afd4cfb8444..0000000000000 --- a/docker/etc/profile.d/gitea.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -export GITEA_CUSTOM=/data/gitea diff --git a/docker/etc/s6/.s6-svscan/finish b/docker/etc/s6/.s6-svscan/finish deleted file mode 100755 index 06bd986563d4c..0000000000000 --- a/docker/etc/s6/.s6-svscan/finish +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exit 0 diff --git a/docker/etc/s6/gitea/finish b/docker/etc/s6/gitea/finish deleted file mode 100755 index 06bd986563d4c..0000000000000 --- a/docker/etc/s6/gitea/finish +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exit 0 diff --git a/docker/etc/s6/gitea/run b/docker/etc/s6/gitea/run deleted file mode 100755 index da5fd6b535ef6..0000000000000 --- a/docker/etc/s6/gitea/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -[[ -f ./setup ]] && source ./setup - -pushd /app/gitea > /dev/null - exec su-exec $USER /app/gitea/gitea web -popd diff --git a/docker/etc/s6/openssh/finish b/docker/etc/s6/openssh/finish deleted file mode 100755 index 06bd986563d4c..0000000000000 --- a/docker/etc/s6/openssh/finish +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exit 0 diff --git a/docker/etc/s6/openssh/run b/docker/etc/s6/openssh/run deleted file mode 100755 index 502e7f6dde2cd..0000000000000 --- a/docker/etc/s6/openssh/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -[[ -f ./setup ]] && source ./setup - -pushd /root > /dev/null - exec su-exec root /usr/sbin/sshd -D -popd diff --git a/docker/etc/s6/openssh/setup b/docker/etc/s6/openssh/setup deleted file mode 100755 index b529431a151e7..0000000000000 --- a/docker/etc/s6/openssh/setup +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -if [ ! -d /data/ssh ]; then - mkdir -p /data/ssh -fi - -if [ ! -f /data/ssh/ssh_host_ed25519_key ]; then - echo "Generating /data/ssh/ssh_host_ed25519_key..." - ssh-keygen -t ed25519 -b 4096 -f /data/ssh/ssh_host_ed25519_key -N "" > /dev/null -fi - -if [ ! -f /data/ssh/ssh_host_rsa_key ]; then - echo "Generating /data/ssh/ssh_host_rsa_key..." - ssh-keygen -t rsa -b 2048 -f /data/ssh/ssh_host_rsa_key -N "" > /dev/null -fi - -if [ ! -f /data/ssh/ssh_host_dsa_key ]; then - echo "Generating /data/ssh/ssh_host_dsa_key..." - ssh-keygen -t dsa -f /data/ssh/ssh_host_dsa_key -N "" > /dev/null -fi - -if [ ! -f /data/ssh/ssh_host_ecdsa_key ]; then - echo "Generating /data/ssh/ssh_host_ecdsa_key..." - ssh-keygen -t ecdsa -b 256 -f /data/ssh/ssh_host_ecdsa_key -N "" > /dev/null -fi - -chown root:root /data/ssh/* -chmod 0700 /data/ssh -chmod 0600 /data/ssh/* diff --git a/docker/etc/s6/syslogd/finish b/docker/etc/s6/syslogd/finish deleted file mode 100755 index 06bd986563d4c..0000000000000 --- a/docker/etc/s6/syslogd/finish +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exit 0 diff --git a/docker/etc/s6/syslogd/run b/docker/etc/s6/syslogd/run deleted file mode 100755 index 2c8d2cf1f2c76..0000000000000 --- a/docker/etc/s6/syslogd/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -[[ -f ./setup ]] && source ./setup - -pushd /root > /dev/null - exec su-exec root /sbin/syslogd -nS -O- -popd diff --git a/docker/etc/s6/syslogd/setup b/docker/etc/s6/syslogd/setup deleted file mode 100755 index a9bf588e2f884..0000000000000 --- a/docker/etc/s6/syslogd/setup +++ /dev/null @@ -1 +0,0 @@ -#!/bin/bash diff --git a/docker/etc/ssh/sshd_config b/docker/etc/ssh/sshd_config deleted file mode 100644 index 62f05cf7140cb..0000000000000 --- a/docker/etc/ssh/sshd_config +++ /dev/null @@ -1,31 +0,0 @@ -Port 22 -Protocol 2 - -AddressFamily any -ListenAddress 0.0.0.0 -ListenAddress :: - -LogLevel INFO - -HostKey /data/ssh/ssh_host_ed25519_key -HostKey /data/ssh/ssh_host_rsa_key -HostKey /data/ssh/ssh_host_dsa_key -HostKey /data/ssh/ssh_host_ecdsa_key - -AuthorizedKeysFile .ssh/authorized_keys - -UseDNS no -AllowAgentForwarding no -AllowTcpForwarding no -PrintMotd no - -PermitUserEnvironment yes -PermitRootLogin no -ChallengeResponseAuthentication no -PasswordAuthentication no -PermitEmptyPasswords no - -AllowUsers git - -Banner none -Subsystem sftp /usr/lib/ssh/sftp-server diff --git a/docker/etc/templates/app.ini b/docker/etc/templates/app.ini index 589271b4a0e41..ddb0658c7cafc 100644 --- a/docker/etc/templates/app.ini +++ b/docker/etc/templates/app.ini @@ -1,4 +1,6 @@ APP_NAME = $APP_NAME +;RUN_USER = $RUN_USER +;TODO RUN_MODE = $RUN_MODE [repository] @@ -17,7 +19,12 @@ HTTP_PORT = $HTTP_PORT ROOT_URL = $ROOT_URL DISABLE_SSH = $DISABLE_SSH SSH_PORT = $SSH_PORT +START_SSH_SERVER = true +BUILTIN_SSH_SERVER_USER = $RUN_USER +SSH_LISTEN_PORT = $SSH_LISTEN_PORT +LFS_START_SERVER = true LFS_CONTENT_PATH = /data/git/lfs +;Config via env variable new config [database] PATH = /data/gitea/gitea.db diff --git a/docker/usr/bin/entrypoint b/docker/usr/bin/entrypoint index 50623bfa66060..d400d52d63d60 100755 --- a/docker/usr/bin/entrypoint +++ b/docker/usr/bin/entrypoint @@ -1,29 +1,32 @@ #!/bin/sh -if [ "${USER}" != "git" ]; then +#TODO check permissions if root less +#if [ "${USER}" != "git" ]; then # rename user - sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd +# sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd # switch sshd config to different user - sed -i -e "s/AllowUsers git/AllowUsers ${USER}/g" /etc/ssh/sshd_config -fi +# sed -i -e "s/AllowUsers git/AllowUsers ${USER}/g" /etc/ssh/sshd_config +#fi ## Change GID for USER? -if [ -n "${USER_GID}" ] && [ "${USER_GID}" != "`id -g ${USER}`" ]; then - sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group - sed -i -e "s/^${USER}:\([^:]*\):\([0-9]*\):[0-9]*/${USER}:\1:\2:${USER_GID}/" /etc/passwd -fi +#if [ -n "${USER_GID}" ] && [ "${USER_GID}" != "`id -g ${USER}`" ]; then +# sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group +# sed -i -e "s/^${USER}:\([^:]*\):\([0-9]*\):[0-9]*/${USER}:\1:\2:${USER_GID}/" /etc/passwd +#fi ## Change UID for USER? -if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then - sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd -fi +#if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then +# sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd +#fi + +#for FOLDER in /data/gitea/conf /data/gitea/log /data/git /data/ssh; do +# mkdir -p ${FOLDER} +#done -for FOLDER in /data/gitea/conf /data/gitea/log /data/git /data/ssh; do - mkdir -p ${FOLDER} -done +[[ -f /usr/bin/setup ]] && source /usr/bin/setup if [ $# -gt 0 ]; then exec "$@" else - exec /bin/s6-svscan /etc/s6 + exec /app/gitea/gitea web fi diff --git a/docker/etc/s6/gitea/setup b/docker/usr/bin/setup similarity index 85% rename from docker/etc/s6/gitea/setup rename to docker/usr/bin/setup index 03758ed819ac1..86a404cd2fe68 100755 --- a/docker/etc/s6/gitea/setup +++ b/docker/usr/bin/setup @@ -1,5 +1,7 @@ #!/bin/bash +echo "Setup Test" + if [ ! -d /data/git/.ssh ]; then mkdir -p /data/git/.ssh chmod 700 /data/git/.ssh @@ -22,11 +24,13 @@ if [ ! -f /data/gitea/conf/app.ini ]; then # Substitude the environment variables in the template APP_NAME=${APP_NAME:-"Gitea: Git with a cup of tea"} \ RUN_MODE=${RUN_MODE:-"dev"} \ + RUN_USER=${USER:-"git"} \ SSH_DOMAIN=${SSH_DOMAIN:-"localhost"} \ HTTP_PORT=${HTTP_PORT:-"3000"} \ ROOT_URL=${ROOT_URL:-""} \ DISABLE_SSH=${DISABLE_SSH:-"false"} \ - SSH_PORT=${SSH_PORT:-"22"} \ + SSH_PORT=${SSH_PORT:-"2222"} \ + SSH_LISTEN_PORT=${SSH_LISTEN_PORT:-$SSH_PORT} \ DB_TYPE=${DB_TYPE:-"sqlite3"} \ DB_HOST=${DB_HOST:-"localhost:3306"} \ DB_NAME=${DB_NAME:-"gitea"} \ @@ -37,7 +41,9 @@ if [ ! -f /data/gitea/conf/app.ini ]; then REQUIRE_SIGNIN_VIEW=${REQUIRE_SIGNIN_VIEW:-"false"} \ SECRET_KEY=${SECRET_KEY:-""} \ envsubst < /etc/templates/app.ini > /data/gitea/conf/app.ini + + cat /data/gitea/conf/app.ini fi -chown -R ${USER}:git /data/gitea /app/gitea /data/git +#chown -R ${USER}:git /data/gitea /app/gitea /data/git chmod 0755 /data/gitea /app/gitea /data/git