Added Typst and Overleaf CE to fold-stack with toggle scripts, updated diagnostics and rclone sync
This commit is contained in:
+48
-1
@@ -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
|
||||
|
||||
@@ -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
@@ -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."
|
||||
|
||||
Executable
+7
@@ -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"
|
||||
Executable
+6
@@ -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"
|
||||
@@ -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
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user