name: Patch Server RAM Limits on: push: branches: - master paths: - 'privat/CV/andreknie.de/.gitea/workflows/patch-ram.yml' workflow_dispatch: jobs: patch: runs-on: ubuntu-latest steps: - name: Patch NoteGraph and OrgMyLife uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.DEPLOY_SSH_HOST }} username: ${{ secrets.DEPLOY_SSH_USER }} key: ${{ secrets.DEPLOY_SSH_KEY }} script: | echo "Patching NoteGraph..." if [ -d /opt/NoteGraph ]; then cd /opt/NoteGraph cat << 'EOF' > docker-compose.yml services: silverbullet: image: zefhemel/silverbullet:latest restart: unless-stopped deploy: resources: limits: memory: 256M environment: SB_USER: "${SB_USER:-admin:changeme}" volumes: - ./notes:/space ports: - "3000:3000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s timeout: 5s retries: 3 git-sync: image: alpine/git:latest restart: unless-stopped deploy: resources: limits: memory: 64M volumes: - ./notes:/space - ./.git:/repo-git:ro entrypoint: /bin/sh command: | -c ' cd /space git init 2>/dev/null || true git config user.name "NoteGraph Auto-Sync" git config user.email "notegraph@andreknie.de" while true; do sleep 300 cd /space git add -A if ! git diff --cached --quiet 2>/dev/null; then git commit -m "auto: sync notes \$(date +%Y-%m-%d_%H:%M)" fi done ' ingestion: build: context: ./ingestion restart: unless-stopped deploy: resources: limits: memory: 256M ports: - "8001:8001" volumes: - ./notes:/app/notes - ./ingestion/inbox:/app/inbox env_file: - .env environment: NOTES_DIR: /app/notes INBOX_DIR: /app/inbox depends_on: - silverbullet EOF docker compose up -d fi echo "Patching OrgMyLife..." if [ -d /opt/OrgMyLife ]; then cd /opt/OrgMyLife cat << 'EOF' > docker-compose.yml version: "3.8" services: db: image: postgres:16-alpine restart: unless-stopped command: postgres -c shared_buffers=32MB -c max_connections=20 deploy: resources: limits: memory: 256M environment: POSTGRES_DB: orgmylife POSTGRES_USER: orgmylife POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U orgmylife"] interval: 5s timeout: 3s retries: 5 app: build: . restart: unless-stopped deploy: resources: limits: memory: 256M depends_on: db: condition: service_healthy ports: - "8000:8000" environment: DATABASE_URL: postgresql://orgmylife:${POSTGRES_PASSWORD:-changeme}@db:5432/orgmylife NEXTCLOUD_URL: ${NEXTCLOUD_URL} NEXTCLOUD_USERNAME: ${NEXTCLOUD_USERNAME} NEXTCLOUD_PASSWORD: ${NEXTCLOUD_PASSWORD} IMAP_SERVER: ${IMAP_SERVER} IMAP_PORT: ${IMAP_PORT:-993} EMAIL_USERNAME: ${EMAIL_USERNAME} EMAIL_PASSWORD: ${EMAIL_PASSWORD} EMAIL_WEBMAIL_URL: ${EMAIL_WEBMAIL_URL:-} GMAIL_USERNAME: ${GMAIL_USERNAME:-} GMAIL_PASSWORD: ${GMAIL_PASSWORD:-} API_SECRET: ${API_SECRET:-} APP_USERNAME: ${APP_USERNAME:-admin} APP_PASSWORD: ${APP_PASSWORD:-changeme} volumes: - ./BACKLOG.md:/app/BACKLOG.md:ro command: > sh -c "python -c 'from app.db.session import engine, Base; from app.models import *; Base.metadata.create_all(bind=engine)' && uvicorn app.main:app --host 0.0.0.0 --port 8000" volumes: pgdata: EOF docker compose up -d fi