Fixed Caddy config and file permissions issues

This commit is contained in:
Andreas Düren 2025-03-18 19:55:11 +01:00
parent 2fac328b3c
commit 20c0f80de0

147
start.sh
View File

@ -10,6 +10,11 @@ echo "==> Starting Ente Cloudron app..."
# Create necessary directories
mkdir -p /app/data/config /app/data/storage /app/data/caddy /app/data/go /app/data/logs
# Create and set proper permissions for patched directory early
mkdir -p /app/data/patched
chmod -R 777 /app/data/patched
echo "==> Created and set full permissions (777) on /app/data/patched directory"
# Add comment about Cloudron filesystem limitations
echo "==> NOTE: Running in Cloudron environment with limited write access"
echo "==> Writable directories: /app/data, /tmp, /run"
@ -400,6 +405,7 @@ echo "==> Created db_override.go in writable location: /app/data/overrides"
mkdir -p /app/data/patched
cp /app/data/overrides/db_override.go /app/data/patched/
chmod -R 777 /app/data/patched
chmod 666 /app/data/patched/db_override.go
echo "==> Copied db_override.go to patched directory for Go compiler compatibility"
echo "==> Set permissions on patched directory to 777"
@ -474,25 +480,45 @@ if [ -d "$SERVER_DIR/cmd/museum" ]; then
#!/bin/bash
# Unset any module-related flags that cause issues
unset GOFLAGS
cd "$SERVER_DIR" && \
PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
PGSSLMODE="disable" \
ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
ENTE_PG_USER="${MUSEUM_DB_USER}" \
ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \
CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \
CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \
CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \
CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
CLOUDRON_POSTGRESQL_DATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
cp $SERVER_DIR/cmd/museum/main.go /app/data/patched/ && cd /app/data/patched && GO111MODULE=on go run -ldflags "-X 'github.com/lib/pq.defaulthost=${MUSEUM_DB_HOST}'" *.go db force 25
unset GO111MODULE
# Set PostgreSQL environment variables
export PGHOST="${CLOUDRON_POSTGRESQL_HOST}"
export PGPORT="${CLOUDRON_POSTGRESQL_PORT}"
export PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}"
export PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}"
export PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
export PGSSLMODE="disable"
# Create go.mod and go.sum files
cd /app/data/patched
cat > go.mod <<EOG
module ente.io/server
go 1.24
require (
github.com/lib/pq v1.10.9
)
EOG
# Generate empty go.sum file (needed to prevent errors)
touch go.sum
chmod 666 go.mod go.sum
# Download the dependency to populate go.sum
go mod tidy
go mod download github.com/lib/pq
# Echo the pq dependency explicitly
cat >> go.sum <<EOG
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
EOG
# Run the migration
export GO111MODULE=on
go run -ldflags "-X 'github.com/lib/pq.defaulthost=${MUSEUM_DB_HOST}'" *.go db force 25
EOF
chmod +x /tmp/run_migration.sh
@ -531,23 +557,23 @@ elif [ -d "$SERVER_DIR/cmd/museum" ]; then
# Create a startup script
cat > /tmp/run_server.sh <<EOF
#!/bin/bash
cd "$SERVER_DIR" && \\
PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \\
PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \\
PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \\
PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \\
PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \\
PGSSLMODE="disable" \\
ENTE_PG_HOST="${MUSEUM_DB_HOST}" \\
ENTE_PG_PORT="${MUSEUM_DB_PORT}" \\
ENTE_PG_USER="${MUSEUM_DB_USER}" \\
ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \\
ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \\
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \\
CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \\
CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \\
CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \\
CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \\
cd "$SERVER_DIR" && \
PGHOST="${CLOUDRON_POSTGRESQL_HOST}" \
PGPORT="${CLOUDRON_POSTGRESQL_PORT}" \
PGUSER="${CLOUDRON_POSTGRESQL_USERNAME}" \
PGPASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
PGDATABASE="${CLOUDRON_POSTGRESQL_DATABASE}" \
PGSSLMODE="disable" \
ENTE_PG_HOST="${MUSEUM_DB_HOST}" \
ENTE_PG_PORT="${MUSEUM_DB_PORT}" \
ENTE_PG_USER="${MUSEUM_DB_USER}" \
ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" \
ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" \
ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable&host=${MUSEUM_DB_HOST}" \
CLOUDRON_POSTGRESQL_HOST="${CLOUDRON_POSTGRESQL_HOST}" \
CLOUDRON_POSTGRESQL_PORT="${CLOUDRON_POSTGRESQL_PORT}" \
CLOUDRON_POSTGRESQL_USERNAME="${CLOUDRON_POSTGRESQL_USERNAME}" \
CLOUDRON_POSTGRESQL_PASSWORD="${CLOUDRON_POSTGRESQL_PASSWORD}" \
CLOUDRON_POSTGRESQL_DATABASE="${CLOUDRON_POSTGRESQL_DATABASE}"
EOF
@ -859,33 +885,28 @@ cat > /app/data/caddy/Caddyfile <<EOT
output file /app/data/logs/caddy.log
}
# MIME types settings
mime {
# JavaScript files
ext js application/javascript
# Next.js chunks
path /_next/static/chunks/* application/javascript
# CSS files
ext css text/css
# JSON files
ext json application/json
# SVG files
ext svg image/svg+xml
# WOFF2 font files
ext woff2 font/woff2
}
# Root path serves the photos app
handle / {
root * /app/web/photos
try_files {path} /index.html
file_server
file_server {
# Set headers for common static file types
header /*.js Content-Type application/javascript
header /*.css Content-Type text/css
header /*.json Content-Type application/json
header /*.svg Content-Type image/svg+xml
header /*.woff2 Content-Type font/woff2
}
}
# Next.js static files
handle /_next/* {
root * /app/web/photos
file_server
file_server {
# Set specific headers for Next.js chunks
header /static/chunks/*.js Content-Type application/javascript
header /static/css/*.css Content-Type text/css
}
}
# Accounts app
@ -893,7 +914,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
root * /app/web/accounts
uri strip_prefix /accounts
try_files {path} /index.html
file_server
file_server {
# Set headers for common static file types
header /*.js Content-Type application/javascript
header /*.css Content-Type text/css
}
}
# Auth app
@ -901,7 +926,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
root * /app/web/auth
uri strip_prefix /auth
try_files {path} /index.html
file_server
file_server {
# Set headers for common static file types
header /*.js Content-Type application/javascript
header /*.css Content-Type text/css
}
}
# Cast app
@ -909,7 +938,11 @@ cat > /app/data/caddy/Caddyfile <<EOT
root * /app/web/cast
uri strip_prefix /cast
try_files {path} /index.html
file_server
file_server {
# Set headers for common static file types
header /*.js Content-Type application/javascript
header /*.css Content-Type text/css
}
}
# Main API proxy