Seed a default admin account and harden the installer; update symlink behavior and LXC hook argument handling. - Install: downgrade Node setup to 22, write ADMIN_EMAIL/ADMIN_PASSWORD into /opt/trek/server/.env for initial boot, chmod the file, wait for app health, then remove plaintext creds from the env and print the default admin credentials. Remove previous DB patching script and credentials file generation. Add health-check failure handling. - ct/trek.sh: check for /opt/trek instead of ~/.trek, run npm ci without --production, and recreate server data/uploads by removing any existing dirs and creating explicit symlinks. - Installer: mirror symlink strategy used in the container (rm then ln -s) and ensure generated ENCRYPTION_KEY note; add ADMIN_EMAIL default. - json: set default username to admin@trek.local, update notes about seeded admin, ENCRYPTION_KEY storage, and APP_URL recommendation. - tools/pve/lxc-prehook.sh: fix append_unique_line_in_ct to pass positional arguments into the bash -c snippet safely (avoid parent-shell expansion). These changes ensure a reproducible default admin creation flow without leaving plaintext credentials, improve symlink handling, and fix a bug in the LXC prehook.
99 lines
2.5 KiB
Bash
99 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2026 community-scripts ORG
|
|
# Author: MickLesk (CanbiZ)
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
|
|
# Source: https://github.com/mauriceboe/TREK
|
|
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
color
|
|
verb_ip6
|
|
catch_errors
|
|
setting_up_container
|
|
network_check
|
|
update_os
|
|
|
|
msg_info "Installing Dependencies"
|
|
$STD apt install -y build-essential
|
|
msg_ok "Installed Dependencies"
|
|
|
|
NODE_VERSION="22" setup_nodejs
|
|
|
|
fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball"
|
|
|
|
msg_info "Building Client"
|
|
cd /opt/trek/client
|
|
$STD npm ci
|
|
$STD npm run build
|
|
msg_ok "Built Client"
|
|
|
|
msg_info "Setting up Server"
|
|
cd /opt/trek/server
|
|
$STD npm ci
|
|
mkdir -p /opt/trek/server/public
|
|
cp -r /opt/trek/client/dist/* /opt/trek/server/public/
|
|
cp -r /opt/trek/client/public/fonts /opt/trek/server/public/fonts 2>/dev/null || true
|
|
mkdir -p /opt/trek/{data/logs,uploads/{files,covers,avatars,photos}}
|
|
rm -rf /opt/trek/server/data /opt/trek/server/uploads
|
|
ln -s /opt/trek/data /opt/trek/server/data
|
|
ln -s /opt/trek/uploads /opt/trek/server/uploads
|
|
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
|
ADMIN_EMAIL="admin@trek.local"
|
|
ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'A-Za-z0-9' | head -c 16)
|
|
cat <<EOF >/opt/trek/server/.env
|
|
NODE_ENV=production
|
|
PORT=3000
|
|
ENCRYPTION_KEY=${ENCRYPTION_KEY}
|
|
ADMIN_EMAIL=${ADMIN_EMAIL}
|
|
ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
|
COOKIE_SECURE=false
|
|
FORCE_HTTPS=false
|
|
LOG_LEVEL=info
|
|
TZ=UTC
|
|
EOF
|
|
chmod 600 /opt/trek/server/.env
|
|
msg_ok "Set up Server"
|
|
|
|
msg_info "Creating Service"
|
|
cat <<EOF >/etc/systemd/system/trek.service
|
|
[Unit]
|
|
Description=TREK Travel Planner
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
WorkingDirectory=/opt/trek/server
|
|
EnvironmentFile=/opt/trek/server/.env
|
|
ExecStart=/usr/bin/node --import tsx src/index.ts
|
|
Restart=on-failure
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
systemctl enable -q --now trek
|
|
msg_ok "Created Service"
|
|
|
|
msg_info "Waiting for TREK to initialize"
|
|
for i in $(seq 1 30); do
|
|
if curl -sf http://localhost:3000/api/health >/dev/null 2>&1; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
if ! curl -sf http://localhost:3000/api/health >/dev/null 2>&1; then
|
|
msg_error "TREK failed to initialize"
|
|
exit
|
|
fi
|
|
sed -i '/^ADMIN_EMAIL=/d;/^ADMIN_PASSWORD=/d' /opt/trek/server/.env
|
|
msg_ok "TREK initialized"
|
|
|
|
echo -e "${INFO}${YW} Default Admin Account:${CL}"
|
|
echo -e "${TAB}${GATEWAY}${BGN}Email: ${ADMIN_EMAIL}${CL}"
|
|
echo -e "${TAB}${GATEWAY}${BGN}Password: ${ADMIN_PASSWORD}${CL}"
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|