mirror of
https://github.com/casjaysdevdocker/opencloud
synced 2026-06-24 02:01:05 -04:00
♻️ Migrate opencloud to /config/ source-of-truth architecture ♻️
Migrate opencloud Docker image to the new build-time config architecture. - rootfs/root/docker/setup/03-files.sh: rewrite to canonical form with /tmp/bin, /tmp/var, /tmp/etc, /tmp/usr handlers - rootfs/usr/local/etc/docker/functions/entrypoint.sh: update to latest template - rootfs/usr/local/etc/docker/init.d/*.sh: fix $(basename) UUOC; move inline comments above code lines - rootfs/tmp/etc/: add service config files (radicale ) deployed to /etc/ at build time - rootfs/usr/local/share/template-files/: delete; config now deployed via /tmp/etc/ and /tmp/usr/ at build time rootfs/root/docker/setup/03-files.sh rootfs/tmp/ rootfs/usr/local/etc/docker/functions/entrypoint.sh rootfs/usr/local/etc/docker/init.d/01-clamav.sh rootfs/usr/local/etc/docker/init.d/02-tika.sh rootfs/usr/local/etc/docker/init.d/03-radicale.sh rootfs/usr/local/etc/docker/init.d/04-collabora.sh rootfs/usr/local/etc/docker/init.d/05-opencloud.sh rootfs/usr/local/etc/docker/init.d/06-nginx.sh rootfs/usr/local/share/template-files/config/env/default.sample rootfs/usr/local/share/template-files/config/env/examples/00-directory.sh rootfs/usr/local/share/template-files/config/env/examples/addresses.sh rootfs/usr/local/share/template-files/config/env/examples/certbot.sh rootfs/usr/local/share/template-files/config/env/examples/couchdb.sh rootfs/usr/local/share/template-files/config/env/examples/dockerd.sh rootfs/usr/local/share/template-files/config/env/examples/global.sh rootfs/usr/local/share/template-files/config/env/examples/healthcheck.sh rootfs/usr/local/share/template-files/config/env/examples/mariadb.sh rootfs/usr/local/share/template-files/config/env/examples/mongodb.sh rootfs/usr/local/share/template-files/config/env/examples/networking.sh rootfs/usr/local/share/template-files/config/env/examples/other.sh rootfs/usr/local/share/template-files/config/env/examples/php.sh rootfs/usr/local/share/template-files/config/env/examples/postgres.sh rootfs/usr/local/share/template-files/config/env/examples/redis.sh rootfs/usr/local/share/template-files/config/env/examples/services.sh rootfs/usr/local/share/template-files/config/env/examples/ssl.sh rootfs/usr/local/share/template-files/config/env/examples/supabase.sh rootfs/usr/local/share/template-files/config/env/examples/webservers.sh rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh rootfs/usr/local/share/template-files/config/env/opencloud.sh rootfs/usr/local/share/template-files/config/.gitkeep rootfs/usr/local/share/template-files/config/radicale/config rootfs/usr/local/share/template-files/data/.gitkeep rootfs/usr/local/share/template-files/defaults/.gitkeep
This commit is contained in:
@@ -1,49 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
##@Version : 202511211036-git
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
##@Version : 202606041215-git
|
||||
# @@Author : CasjaysDev
|
||||
# @@Contact : CasjaysDev <docker-admin@casjaysdev.pro>
|
||||
# @@License : MIT
|
||||
# @@Copyright : Copyright 2025 CasjaysDev
|
||||
# @@Created : Fri Nov 21 10:36:03 AM EST 2025
|
||||
# @@License : WTFPL
|
||||
# @@ReadME :
|
||||
# @@Copyright : Copyright: (c) 2023 CasjaysDev
|
||||
# @@Created : Mon Aug 28 06:48:42 PM EDT 2023
|
||||
# @@File : 03-files.sh
|
||||
# @@Description : script to run files
|
||||
# @@Changelog : newScript
|
||||
# @@TODO : Refactor code
|
||||
# @@Other : N/A
|
||||
# @@Resource : N/A
|
||||
# @@Terminal App : yes
|
||||
# @@sudo/root : yes
|
||||
# @@Template : templates/dockerfiles/init_scripts/03-files.sh
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2120,SC2155,SC2199,SC2317,SC2329
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Set bash options
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# shellcheck shell=bash
|
||||
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
set -o pipefail
|
||||
[ "$DEBUGGER" = "on" ] && echo "Enabling debugging" && set -x$DEBUGGER_OPTIONS
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Set env variables
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
exitCode=0
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Predefined actions
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
if [ -d "/tmp/bin" ]; then
|
||||
mkdir -p "/usr/local/bin"
|
||||
\mkdir -p "/usr/local/bin"
|
||||
for bin in "/tmp/bin"/*; do
|
||||
name="$(basename -- "$bin")"
|
||||
name="${bin##*/}"
|
||||
echo "Installing $name to /usr/local/bin/$name"
|
||||
copy "$bin" "/usr/local/bin/$name"
|
||||
chmod -f +x "/usr/local/bin/$name"
|
||||
\chmod -f +x "/usr/local/bin/$name"
|
||||
done
|
||||
fi
|
||||
unset bin
|
||||
if [ -d "/tmp/var" ]; then
|
||||
for var in "/tmp/var"/*; do
|
||||
name="$(basename -- "$var")"
|
||||
name="${var##*/}"
|
||||
echo "Installing $var to /var/$name"
|
||||
if [ -d "$var" ]; then
|
||||
mkdir -p "/var/$name"
|
||||
\mkdir -p "/var/$name"
|
||||
copy "$var/." "/var/$name/"
|
||||
else
|
||||
copy "$var" "/var/$name"
|
||||
@@ -53,131 +43,32 @@ fi
|
||||
unset var
|
||||
if [ -d "/tmp/etc" ]; then
|
||||
for config in "/tmp/etc"/*; do
|
||||
name="$(basename -- "$config")"
|
||||
name="${config##*/}"
|
||||
echo "Installing $config to /etc/$name"
|
||||
if [ -d "$config" ]; then
|
||||
mkdir -p "/etc/$name"
|
||||
\mkdir -p "/etc/$name"
|
||||
copy "$config/." "/etc/$name/"
|
||||
mkdir -p "/usr/local/share/template-files/config/$name"
|
||||
copy "$config/." "/usr/local/share/template-files/config/$name/"
|
||||
else
|
||||
copy "$config" "/etc/$name"
|
||||
copy "$config" "/usr/local/share/template-files/config/$name"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
unset config
|
||||
if [ -d "/tmp/data" ]; then
|
||||
for data in "/tmp/data"/*; do
|
||||
name="$(basename -- "$data")"
|
||||
echo "Installing $data to /usr/local/share/template-files/data"
|
||||
if [ -d "$data" ]; then
|
||||
mkdir -p "/usr/local/share/template-files/data/$name"
|
||||
copy "$data/." "/usr/local/share/template-files/data/$name/"
|
||||
if [ -d "/tmp/usr" ]; then
|
||||
for usrpath in "/tmp/usr"/*; do
|
||||
name="${usrpath##*/}"
|
||||
echo "Installing $usrpath to /usr/$name"
|
||||
if [ -d "$usrpath" ]; then
|
||||
\mkdir -p "/usr/$name"
|
||||
copy "$usrpath/." "/usr/$name/"
|
||||
else
|
||||
copy "$data" "/usr/local/share/template-files/data/$name"
|
||||
copy "$usrpath" "/usr/$name"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
unset data
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Main script
|
||||
|
||||
# Install Collabora CODE
|
||||
echo "Adding Collabora CODE repository"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg -o /etc/apt/keyrings/collaboraonline-release-keyring.gpg
|
||||
|
||||
cat > /etc/apt/sources.list.d/collaboraonline.sources << 'EOF'
|
||||
Types: deb
|
||||
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb
|
||||
Suites: ./
|
||||
Signed-By: /etc/apt/keyrings/collaboraonline-release-keyring.gpg
|
||||
EOF
|
||||
|
||||
pkmgr update
|
||||
echo "Installing Collabora CODE"
|
||||
pkmgr install coolwsd code-brand || exitCode=1
|
||||
|
||||
# Install Radicale via pip
|
||||
echo "Installing Radicale"
|
||||
pip3 install --break-system-packages radicale || exitCode=1
|
||||
|
||||
# Detect architecture
|
||||
case "$(uname -m)" in
|
||||
x86_64) ARCH="amd64" ;;
|
||||
aarch64) ARCH="arm64" ;;
|
||||
armv7l) ARCH="arm" ;;
|
||||
*) echo "Unsupported architecture: $(uname -m)" && exit 1 ;;
|
||||
esac
|
||||
|
||||
# Get latest version from GitHub API if not specified
|
||||
if [ -z "${OPENCLOUD_VERSION}" ]; then
|
||||
echo "Fetching latest OpenCloud version..."
|
||||
OPENCLOUD_VERSION=$(curl -fsSL https://api.github.com/repos/opencloud-eu/opencloud/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
|
||||
if [ -z "${OPENCLOUD_VERSION}" ]; then
|
||||
echo "Failed to fetch latest version, falling back to 3.7.0"
|
||||
OPENCLOUD_VERSION="3.7.0"
|
||||
fi
|
||||
fi
|
||||
|
||||
OPENCLOUD_BASE_URL="https://github.com/opencloud-eu/opencloud/releases/download/v${OPENCLOUD_VERSION}"
|
||||
OPENCLOUD_BINARY="opencloud-${OPENCLOUD_VERSION}-linux-${ARCH}"
|
||||
OPENCLOUD_URL="${OPENCLOUD_BASE_URL}/${OPENCLOUD_BINARY}"
|
||||
|
||||
echo "Downloading OpenCloud ${OPENCLOUD_VERSION} for ${ARCH}"
|
||||
|
||||
# Download OpenCloud binary
|
||||
curl -fsSL -o /usr/local/bin/opencloud "${OPENCLOUD_URL}" || {
|
||||
echo "Failed to download OpenCloud binary"
|
||||
exitCode=1
|
||||
}
|
||||
|
||||
# Make binary executable
|
||||
chmod +x /usr/local/bin/opencloud
|
||||
|
||||
# Create required directories
|
||||
mkdir -p /data/opencloud /config/opencloud /data/logs
|
||||
|
||||
# Verify installation
|
||||
if [ -x /usr/local/bin/opencloud ]; then
|
||||
echo "OpenCloud installed successfully"
|
||||
/usr/local/bin/opencloud version || true
|
||||
else
|
||||
echo "OpenCloud installation failed"
|
||||
exitCode=1
|
||||
fi
|
||||
|
||||
# Download Apache Tika Server
|
||||
TIKA_VERSION="${TIKA_VERSION:-2.9.1}"
|
||||
TIKA_URL="https://archive.apache.org/dist/tika/${TIKA_VERSION}/tika-server-standard-${TIKA_VERSION}.jar"
|
||||
echo "Downloading Apache Tika ${TIKA_VERSION}"
|
||||
mkdir -p /opt/tika
|
||||
curl -fsSL -o /opt/tika/tika-server.jar "${TIKA_URL}" || {
|
||||
echo "Failed to download Apache Tika"
|
||||
exitCode=1
|
||||
}
|
||||
|
||||
# Create directories for all services
|
||||
mkdir -p /data/opencloud /config/opencloud /data/logs
|
||||
mkdir -p /data/radicale /config/radicale
|
||||
mkdir -p /data/collabora /config/collabora
|
||||
mkdir -p /data/clamav /config/clamav
|
||||
mkdir -p /run/clamav
|
||||
|
||||
# Download ClamAV virus definitions
|
||||
echo "Downloading ClamAV virus definitions"
|
||||
mkdir -p /var/lib/clamav
|
||||
freshclam --quiet || {
|
||||
echo "Failed to download ClamAV definitions"
|
||||
exitCode=1
|
||||
}
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Set the exit code
|
||||
#exitCode=$?
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
unset usrpath
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
exitCode=$?
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
exit $exitCode
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# ex: ts=2 sw=2 et filetype=sh
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
Reference in New Issue
Block a user