diff --git a/ct/wikijs.sh b/ct/wikijs.sh index deaca6f32..b30a4c57d 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -30,6 +30,41 @@ function update_script() { exit fi + if [[ -d /opt/wikijs/backend ]]; then + NODE_VERSION="26" setup_nodejs + + if check_for_gh_release "wikijs" "requarks/wiki"; then + PUPPETEER_INSTALLED=$([[ -d /opt/wikijs/backend/node_modules/puppeteer ]] && echo "true" || echo "false") + + msg_info "Stopping Service" + systemctl stop wikijs + msg_ok "Stopped Service" + + create_backup /opt/wikijs/config.yml + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz" + restore_backup + + cd /opt/wikijs/backend + if [[ "$(arch_resolve)" == "arm64" ]]; then + msg_info "Building Wiki.js Dependencies" + $STD npm ci --omit=dev + msg_ok "Built Wiki.js Dependencies" + fi + if [[ "$PUPPETEER_INSTALLED" == "true" ]]; then + msg_info "Reinstalling Puppeteer" + $STD npm install --no-save --force --include=optional --no-ignore-scripts --no-audit --no-fund "puppeteer@$(sed -n 's/^installVersion: *//p' modules/extensions/puppeteer/definition.yml)" + msg_ok "Reinstalled Puppeteer" + fi + + msg_info "Starting Service" + systemctl start wikijs + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit + fi + + msg_warn "Wiki.js 3 cannot update a 2.x install in place. Export it under Administration > Utilities > Export for Wiki.js 3.x and import it into a new Wiki.js 3 container." NODE_VERSION="26" NODE_MODULE="yarn,node-gyp" setup_nodejs if check_for_gh_release "wikijs" "requarks/wiki-v2"; then diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index cfcf42063..f1705b0b2 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -17,26 +17,44 @@ msg_info "Installing Dependencies" $STD apt install -y git msg_ok "Installed Dependencies" -NODE_VERSION="26" NODE_MODULE="yarn,node-gyp" setup_nodejs +NODE_VERSION="26" setup_nodejs PG_VERSION="17" setup_postgresql -PG_DB_NAME="wiki" PG_DB_USER="wikijs_user" PG_DB_EXTENSIONS="pg_trgm" setup_postgresql_db -fetch_and_deploy_gh_release "wikijs" "requarks/wiki-v2" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz" +PG_DB_NAME="wiki" PG_DB_USER="wikijs_user" setup_postgresql_db +fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz" + +if [[ "$(arch_resolve)" == "arm64" ]]; then + msg_info "Building Wiki.js Dependencies" + cd /opt/wikijs/backend + $STD npm ci --omit=dev + msg_ok "Built Wiki.js Dependencies" +fi msg_info "Configuring Wiki.js" -mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml -sed -i -E 's|^( *user: ).*|\1'"$PG_DB_USER"'|' /opt/wikijs/config.yml -sed -i -E 's|^( *pass: ).*|\1'"$PG_DB_PASS"'|' /opt/wikijs/config.yml +mkdir -p /opt/wikijs_data +cp /opt/wikijs/config.sample.yml /opt/wikijs/config.yml +sed -i \ + -e "s|^ user: .*| user: wikijs_user|" \ + -e "s|^ pass: .*| pass: ${PG_DB_PASS}|" \ + -e "s|^ db: .*| db: wiki|" \ + -e "s|^dataPath: .*|dataPath: /opt/wikijs_data|" \ + /opt/wikijs/config.yml +ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-16) +cat <~/wikijs.creds +Wiki.js Admin +Email: admin@example.com +Password: ${ADMIN_PASS} +EOF msg_ok "Configured Wiki.js" msg_info "Creating Service" cat </etc/systemd/system/wikijs.service [Unit] Description=Wiki.js -After=network.target +After=network.target postgresql.service [Service] Type=simple -ExecStart=/usr/bin/node server +ExecStart=/usr/bin/node --no-experimental-webstorage backend Restart=always User=root Environment=NODE_ENV=production @@ -45,7 +63,13 @@ WorkingDirectory=/opt/wikijs [Install] WantedBy=multi-user.target EOF +systemctl set-environment ADMIN_PASS="${ADMIN_PASS}" systemctl enable -q --now wikijs +for _ in $(seq 60); do + curl -fs -o /dev/null http://127.0.0.1:3000 && break + sleep 2 +done +systemctl unset-environment ADMIN_PASS msg_ok "Created Service" motd_ssh