Added Typst and Overleaf CE to fold-stack with toggle scripts, updated diagnostics and rclone sync

This commit is contained in:
2025-05-26 20:39:04 -05:00
parent b9f9a3ecc7
commit 0c768a0fd0
7 changed files with 103 additions and 15 deletions
+48 -1
View File
@@ -55,6 +55,7 @@ services:
- ./volumes/scrolls:/workspace
working_dir: /workspace
entrypoint: /bin/sh
command: ["-c", "tail -f /dev/null"]
networks:
- fold-network
@@ -121,7 +122,6 @@ services:
volumes:
- ./config/rclone/rclone.conf:/config/rclone/rclone.conf:ro
- ./volumes:/data:ro
- /mnt/nas:/nas
- ./scripts/rclone-sync.sh:/rclone-sync.sh:ro
- ./scripts/rclone-watch.sh:/rclone-watch.sh:ro
entrypoint: ["/bin/sh", "/rclone-watch.sh"]
@@ -129,6 +129,53 @@ services:
networks:
- fold-network
typst:
image: ghcr.io/typst/typst:latest
container_name: typst_dev
volumes:
- ./volumes/scrolls:/workspace
working_dir: /workspace
entrypoint: /bin/sh
command: ["-c", "tail -f /dev/null"]
networks:
- fold-network
overleaf-mongo:
image: mongo:6
container_name: overleaf_mongo_dev
volumes:
- ./volumes/overleaf/mongo:/data/db
networks:
- fold-network
overleaf-redis:
image: redis:7
container_name: overleaf_redis_dev
volumes:
- ./volumes/overleaf/redis:/data
networks:
- fold-network
overleaf:
image: overleaf/overleaf:latest
container_name: overleaf_dev
ports:
- "8090:80"
volumes:
- ./volumes/overleaf/data:/var/lib/sharelatex
- ./volumes/scrolls:/var/lib/sharelatex/data/files:ro
environment:
- SHARELATEX_MONGO_URL=mongodb://overleaf-mongo:27017/sharelatex
- SHARELATEX_REDIS_URL=redis://overleaf-redis:6379
- SHARELATEX_LISTEN_IP=0.0.0.0
- SHARELATEX_PORT=80
- SHARELATEX_ADMIN_EMAIL=admin@example.com
depends_on:
- overleaf-mongo
- overleaf-redis
networks:
- fold-network
networks:
fold-network:
driver: bridge
+29 -9
View File
@@ -10,35 +10,35 @@ NC='\033[0m' # No Color
echo "================================="
echo "🩺 FOLD STACK COMPREHENSIVE DIAGNOSTICS"
echo "================================="
echo "📅 Date: Mon May 26 20:28:00 CDT 2025"
echo "📅 Date: $(date)"
echo ""
# Helper function to print section headers
print_section() {
echo "---------------------------------"
echo "📌 "
echo "📌 $1"
echo "---------------------------------"
}
# Helper function to print success
print_success() {
echo -e ""
echo -e "${GREEN}$1${NC}"
}
# Helper function to print warning
print_warning() {
echo -e "⚠️ "
echo -e "${YELLOW}⚠️ $1${NC}"
}
# Helper function to print error
print_error() {
echo -e ""
echo -e "${RED}$1${NC}"
}
# 1. Check Current Directory
print_section "Current Directory"
echo "📁 Current Directory: /home/mrhavens/fieldwork/fold-stack"
if [[ "/home/mrhavens/fieldwork/fold-stack" != *"/fieldwork/fold-stack" ]]; then
echo "📁 Current Directory: $(pwd)"
if [[ "$(pwd)" != *"/fieldwork/fold-stack" ]]; then
print_error "You are not in the expected fold-stack directory. Please run this script from ~/fieldwork/fold-stack."
exit 1
fi
@@ -73,6 +73,7 @@ docker compose -f docker-compose.dev.yml port trilium 8080 || print_error "Trili
docker compose -f docker-compose.dev.yml port hedgedoc 3000 || print_error "HedgeDoc not exposing port 3000"
docker compose -f docker-compose.dev.yml port mailhog 8025 || print_error "MailHog not exposing port 8025"
docker compose -f docker-compose.dev.yml port nextcloud 80 || print_error "Nextcloud not exposing port 80"
docker compose -f docker-compose.dev.yml port overleaf 80 || print_warning "Overleaf CE not exposing port 80 (run ./scripts/enable-overleaf.sh to start)"
# 6. Check Logs for Each Service
print_section "Forgejo Logs (last 50 lines)"
@@ -96,6 +97,21 @@ docker logs nextcloud_dev --tail=20 2>&1 || print_warning "Nextcloud container n
print_section "Rclone Logs (last 20 lines)"
docker logs rclone_dev --tail=20 2>&1 || print_warning "Rclone container not found."
print_section "Pandoc Logs (last 20 lines)"
docker logs pandoc_dev --tail=20 2>&1 || print_warning "Pandoc container not found."
print_section "Typst Logs (last 20 lines)"
docker logs typst_dev --tail=20 2>&1 || print_warning "Typst container not found."
print_section "Overleaf Logs (last 20 lines)"
docker logs overleaf_dev --tail=20 2>&1 || print_warning "Overleaf CE container not found (run ./scripts/enable-overleaf.sh to start)."
print_section "Overleaf Mongo Logs (last 20 lines)"
docker logs overleaf_mongo_dev --tail=20 2>&1 || print_warning "Overleaf Mongo container not found (run ./scripts/enable-overleaf.sh to start)."
print_section "Overleaf Redis Logs (last 20 lines)"
docker logs overleaf_redis_dev --tail=20 2>&1 || print_warning "Overleaf Redis container not found (run ./scripts/enable-overleaf.sh to start)."
# 7. Check Volume Permissions and Contents
print_section "Forgejo Volume Permissions"
ls -ld ./volumes/forgejo || print_error "Missing volumes/forgejo"
@@ -115,7 +131,7 @@ ls -la ./volumes/nextcloud/html || print_warning "Nextcloud html volume contents
ls -ld ./volumes/nextcloud/data || print_error "Missing volumes/nextcloud/data"
ls -la ./volumes/nextcloud/data || print_warning "Nextcloud data volume contents not accessible"
print_section "Scrolls Volume Permissions (Pandoc)"
print_section "Scrolls Volume Permissions (Pandoc/Typst/Overleaf)"
ls -ld ./volumes/scrolls || print_error "Missing volumes/scrolls"
ls -la ./volumes/scrolls || print_warning "Scrolls volume contents not accessible"
@@ -123,6 +139,10 @@ print_section "Trilium Backup Volume Permissions"
ls -ld ./volumes/trilium-backup || print_warning "Missing volumes/trilium-backup (needed for Web3.storage sync)"
ls -la ./volumes/trilium-backup || print_warning "Trilium backup volume contents not accessible"
print_section "Overleaf Volume Permissions"
ls -ld ./volumes/overleaf || print_warning "Missing volumes/overleaf (needed for Overleaf CE persistence)"
ls -la ./volumes/overleaf || print_warning "Overleaf volume contents not accessible"
# 8. Check Entrypoint Script for Forgejo
print_section "Forgejo Entrypoint Script Check (forgejo-entrypoint.sh)"
head -n 10 scripts/forgejo-entrypoint.sh 2>/dev/null || print_warning "Missing forgejo-entrypoint.sh script"
@@ -154,7 +174,7 @@ fi
# 11. Test Rclone Sync by Adding a Test File
print_section "Rclone Sync Test"
TEST_FILE="./volumes/scrolls/diagnostic-test-1748309280.scroll"
TEST_FILE="./volumes/scrolls/diagnostic-test-$(date +%s).scroll"
echo "Test file for diagnostics" > "$TEST_FILE"
echo "Created test file: $TEST_FILE"
echo "Waiting for Rclone to detect and sync (up to 30 seconds)..."
+5 -1
View File
@@ -1,2 +1,6 @@
#!/bin/bash
docker compose -f docker-compose.dev.yml --env-file .env.dev down -v
set -e
echo "Shutting down fold-stack development environment..."
docker compose -f docker-compose.dev.yml down
echo "All services stopped."
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
set -e
echo "Enabling Overleaf CE and its dependencies..."
docker compose -f docker-compose.dev.yml up -d overleaf-mongo overleaf-redis overleaf
echo "Overleaf CE enabled. Access at http://localhost:8090"
echo "Check status with: docker ps | grep overleaf"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
set -e
echo "Enabling Typst service..."
docker compose -f docker-compose.dev.yml up -d typst
echo "Typst service enabled. Check status with: docker ps | grep typst_dev"
+3 -3
View File
@@ -11,12 +11,12 @@ sync_to_gdrive() {
rclone sync "$src" "gdrive:$dest" --progress --transfers=4 --checkers=8 --exclude "*.{db,db-shm,db-wal}" --log-level INFO
}
# Function to sync to Internet Archive (only .scroll and .seal files)
# Function to sync to Internet Archive (only .scroll, .seal, .typ, and .tex files)
sync_to_ia() {
local src=$1
local dest=$2
echo "Syncing $src to Internet Archive (ia:$dest)"
rclone sync "$src" "ia:$dest" --progress --transfers=4 --checkers=8 --wait-archive=1h --include "*.{scroll,seal}" --log-level INFO
rclone sync "$src" "ia:$dest" --progress --transfers=4 --checkers=8 --wait-archive=1h --include "*.{scroll,seal,typ,tex}" --log-level INFO
}
# Function to sync to Web3.storage
@@ -35,7 +35,7 @@ sync_to_web3() {
sync_to_gdrive "/data/scrolls" "fold-stack/scrolls"
sync_to_gdrive "/data/hedgedoc/uploads" "fold-stack/hedgedoc_uploads"
# Sync scrolls/seals to Internet Archive
# Sync scrolls/seals/typ/tex to Internet Archive
sync_to_ia "/data/scrolls" "fold-stack-scrolls"
# Sync Trilium backups to Web3.storage
+5 -1
View File
@@ -1,2 +1,6 @@
#!/bin/bash
docker compose -f docker-compose.dev.yml --env-file .env.dev up -d
set -e
echo "Starting fold-stack development environment (excluding Overleaf CE by default)..."
docker compose -f docker-compose.dev.yml up -d --build ghost forgejo radicle pandoc mailhog trilium hedgedoc nextcloud rclone typst
echo "Core services started. To enable Overleaf CE, run: ./scripts/enable-overleaf.sh"