10 Commits

Author SHA1 Message Date
15256b302c Merge pull request 'working' (#4) from working into main
Reviewed-on: https://gitea.msb24.duckdns.org/musabe24/docker-latex-server/pulls/4
2024-02-25 20:33:13 +01:00
78c273b4c7 Fehler bezüglich https behoben. 2024-02-25 20:25:38 +01:00
994fc64f42 Die Variable nur über ENV weiterzugeben hat nicht gereicht. Die "install-extensions.sh" musste ebenfalls angepasst werden. 2024-02-25 20:21:03 +01:00
339378fc13 Der Server kann nun durch ein Passwort geschützt werden. Dies ist jedoch nicht verpflichtend. 2024-02-25 20:14:20 +01:00
6816dbfd96 Dockerfile aktualisiert
Nicht sichtbares Unicode Zeichen entfernt.
2024-02-25 19:46:38 +01:00
7aa9b5c380 Merge pull request 'v1-beta' (#2) from v1-beta into main
Reviewed-on: https://gitea.msb24.duckdns.org/musabe24/docker-latex-server/pulls/2
2024-02-25 19:40:02 +01:00
5670564f04 install-extensions.sh aktualisiert
Nun wird vor der Installation der Extension überprüft, ob diese bereits installiert ist oder nicht. Dies ist notwendig, damit der Code Server nach einem Neustart des Containers problemlos starten kann.
2024-02-25 17:40:42 +01:00
398a23901c Erste, funktionierende Version! 2024-02-25 00:11:09 +01:00
2701780401 Befehl zur Installation von texlive-full hinzugefügt. 2024-02-24 13:09:44 +01:00
a37bd971b7 Inhalte von "docker-code-server" kopiert. 2024-02-24 13:03:53 +01:00
18 changed files with 236 additions and 0 deletions

6
.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
.git
.gitignore
.github
.gitattributes
READMETEMPLATE.md
README.md

20
.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
# This file is globally distributed to all container image projects from
# https://github.com/linuxserver/docker-jenkins-builder/blob/master/.editorconfig
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
# trim_trailing_whitespace may cause unintended issues and should not be globally set true
trim_trailing_whitespace = false
[{Dockerfile*,**.yml}]
indent_style = space
indent_size = 2
[{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}]
indent_style = space
indent_size = 4

17
.gitattributes vendored Normal file
View File

@@ -0,0 +1,17 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

44
.gitignore vendored Normal file
View File

@@ -0,0 +1,44 @@
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
# =========================
# Operating System Files
# =========================
# OSX
# =========================
.DS_Store
.AppleDouble
.LSOverride
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
.jenkins-external

46
Dockerfile Normal file
View File

@@ -0,0 +1,46 @@
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CODE_RELEASE
LABEL build_version="version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="musabe24"
# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV HOME="/config"
RUN \
echo "**** install runtime dependencies and texlive-full ****" && \
apt-get update && \
apt-get install -y \
git \
jq \
libatomic1 \
nano \
net-tools \
netcat \
texlive-full \
sudo
RUN \
echo "**** install code-server ****" && \
curl -fsSL https://code-server.dev/install.sh | sh && \
echo "**** clean up ****" && \
apt-get clean && \
rm -rf \
/config/* \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add local files
COPY /root /
COPY --chmod=755 install-extensions.sh /usr/local/bin/install-extensions.sh
# ports and volumes
EXPOSE 8443
# Set the default command to run when starting the container
ENTRYPOINT ["install-extensions.sh"]

32
install-extensions.sh Normal file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Starten des code-server
# Überprüfen, ob eine PASSWORD Umgebungsvariable gesetzt ist
if [ -z "$PASSWORD" ]; then
echo "Starte Code Server ohne Passwort..."
# Konfiguration für keinen Authentifizierungsmodus
echo "bind-addr: 0.0.0.0:8443
auth: none
password:" > /config/code-server/config.yaml
else
echo "Starte Code Server mit Passwort..."
# Konfiguration für Passwort-Authentifizierungsmodus
echo "bind-addr: 0.0.0.0:8443
auth: password
password: $PASSWORD" > /config/code-server/config.yaml
fi
# Die ID der Extension, die installiert werden soll
EXTENSION_ID="james-yu.latex-workshop"
# Überprüfen, ob die Extension bereits installiert ist
if ! code-server --list-extensions | grep -q "${EXTENSION_ID}"; then
echo "Installiere Extension: ${EXTENSION_ID}"
code-server --install-extension ${EXTENSION_ID}
else
echo "Extension ${EXTENSION_ID} ist bereits installiert."
fi
# Starte den Code Server mit der Konfigurationsdatei
code-server --config /config/code-server/config.yaml

View File

@@ -0,0 +1,31 @@
#!/usr/bin/with-contenv bash
mkdir -p /config/{extensions,data,workspace,.ssh}
if [ -n "${SUDO_PASSWORD}" ] || [ -n "${SUDO_PASSWORD_HASH}" ]; then
echo "setting up sudo access"
if ! grep -q 'abc' /etc/sudoers; then
echo "adding abc to sudoers"
echo "abc ALL=(ALL:ALL) ALL" >> /etc/sudoers
fi
if [ -n "${SUDO_PASSWORD_HASH}" ]; then
echo "setting sudo password using sudo password hash"
sed -i "s|^abc:\!:|abc:${SUDO_PASSWORD_HASH}:|" /etc/shadow
else
echo "setting sudo password using SUDO_PASSWORD env var"
echo -e "${SUDO_PASSWORD}\n${SUDO_PASSWORD}" | passwd abc
fi
fi
[[ ! -f /config/.bashrc ]] && \
cp /root/.bashrc /config/.bashrc
[[ ! -f /config/.profile ]] && \
cp /root/.profile /config/.profile
# fix permissions (ignore contents of /config/workspace)
find /config -path /config/workspace -prune -o -exec chown abc:abc {} +
chown abc:abc /config/workspace
chmod 700 /config/.ssh
if [ -n "$(ls -A /config/.ssh)" ]; then
chmod 600 /config/.ssh/*
fi

View File

@@ -0,0 +1 @@
oneshot

View File

@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-code-server/run

View File

@@ -0,0 +1 @@
3

View File

@@ -0,0 +1,26 @@
#!/usr/bin/with-contenv bash
if [ -n "${PASSWORD}" ] || [ -n "${HASHED_PASSWORD}" ]; then
AUTH="password"
else
AUTH="none"
echo "starting with no password"
fi
if [ -z ${PROXY_DOMAIN+x} ]; then
PROXY_DOMAIN_ARG=""
else
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
fi
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
s6-setuidgid abc \
/app/code-server/bin/code-server \
--bind-addr 0.0.0.0:8443 \
--user-data-dir /config/data \
--extensions-dir /config/extensions \
--disable-telemetry \
--auth "${AUTH}" \
"${PROXY_DOMAIN_ARG}" \
"${DEFAULT_WORKSPACE:-/config/workspace}"

View File

@@ -0,0 +1 @@
longrun

View File

@@ -0,0 +1,10 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
_install=(/app/code-server/bin/code-server "--extensions-dir" "/config/extensions" "--install-extension")
if [ "$(whoami)" == "abc" ]; then
"${_install[@]}" "$@"
else
s6-setuidgid abc "${_install[@]}" "$@"
fi