
- Published on
רייזאפ AI פרטי בחינם
- Authors
- Name
- ברוך אודם
- @baruchiro
הקדמה והיסטוריה
כבר שנים שאני מוביל פרויקטים שמטרתם לעזור לכולנו לנהל הכנסות והוצאות בגישה עצמאית ואוטומטית. זה התחיל בהצטרפות שלי לפרויקט israeli-bank-scrapers, ואחר כך ביצירה של ממשק משתמש ידידותי בשם כספיון, יחד עם חבר. רוב הכלים שמבוססים על פרויקט scrapers רק מושכים את המידע ומעבירים אותו הלאה או מבצעים עליו ניתוח מסוים, כי ניהול כספים דורש מומחיות בפני עצמו, וכדאי להתמקד בתחום אחד. אפשר לקרוא עוד על כספיון בפוסט שכתבתי לפני שנים, אבל החיסרון של כספיון הוא שאי אפשר להפעיל אותו אוטומטית בתדירות יומיומית.
פתרון אוטומטי
כדי למשוך את המידע בצורה אוטומטית, קם פרויקט נפלא נוסף בשם Moneyman, שמבוסס על אותם scrapers, ואותו אפשר להריץ אוטומטית ולחבר לכלי ניהול כספים שונים. הצטרפתי גם לפרויקט הזה כדי להוסיף לו חיבור לכלי שנקרא Actual Budget — כלי לניהול תקציב שמריצים על שרת מקומי. כך נראה השילוב של שני הכלים אצלי בשרת:
services:
actual-budget:
image: actualbudget/actual-server:latest
ports:
- '5006:5006'
volumes:
- actual-data:/data
healthcheck:
test: ['CMD-SHELL', 'node src/scripts/health-check.js']
interval: 60s
timeout: 10s
retries: 3
start_period: 20s
restart: unless-stopped
networks:
- budget_net
moneyman:
image: ghcr.io/baruchiro/moneyman:pr-2
container_name: moneyman
command: tail -f /dev/null
env_file:
- moneyman.env
labels:
ofelia.enabled: 'true'
ofelia.job-exec.moneyman.schedule: '0 0 8,20 * * *'
ofelia.job-exec.moneyman.command: 'npm run start'
ofelia.job-exec.moneyman.container: 'moneyman'
ofelia.job-exec.moneyman.user: 'pptruser'
networks:
- budget_net
depends_on:
- actual-budget
ofelia:
image: mcuadros/ofelia:latest
command: daemon --docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
budget_net:
name: budget_network
driver: bridge
volumes:
actual-data:
הכלי ofelia ישן ולא מתוחזק, אבל עדיין עובד. הוא מאפשר להריץ פקודות בתוך קונטיינרים אחרים בתדירות מסוימת (cron).
את Actual Budget עדיין לא חקרתי לעומק. יש בו מנגנון חלוקה לקטגוריות — חשוב, אבל קצת מעצבן וידני — וגם מנגנון למעקב אחרי הוצאות קבועות וחוזרות שעוד לא הבנתי עד הסוף. (אבל שימו לב לפיצ׳ר הנוח שמאפשר להעביר אותו למצב חסוי ולהסתיר את כל הנתונים)

בונוס: AI
אז איך אפשר בלי AI? אם אני רוצה לתת ל-AI גישה למידע שלי, אני יכול להשתמש ב-MCP — שרת קטן שמספק ל-AI גישה מתועדת ומוסברת להפעלת פעולות. קצת כמו Swagger, אבל מותאם ל-AI.
למזלי, מצאתי מישהו שכבר התחיל לכתוב MCP ל-Actual Budget, וכל מה שנשאר לי זה להפעיל קצת AI כדי לעדכן את הפיתוח שלו שיתאים להרצה על שרת (וגם להוציא את סימן הדולר מהקוד, להתאים אותו ל-n8n שלא תומך כרגע בפיצ׳רים החדשים של MCP, ולשפר את הפלט שהוא מאוד ספציפי ולא נותן ל-AI את הנתונים הגולמיים לעבוד איתם. אתם יכולים לנחש שאלו רק תוכניות ולא באמת סיימתי)
ברגע שיש לי את ה-MCP, אני יכול לחבר אותו ל-AI הפרטי שלי שאני מריץ ב-n8n. אפשר לקרוא עוד על n8n בפוסט על RAG.

להרצה, פשוט מוסיפים אותו לשאר הקונטיינרים:
actual-mcp:
image: ghcr.io/baruchiro/baruchiro/actual-mcp:main
restart: unless-stopped
ports:
- '5007:3000'
env_file:
- shared.env
- moneyman.env
networks:
- budget_net
