نصب و راه‌اندازی Actual Budget روی VPS: مدیر بودجه شخصی

2 دقیقه خواندن
Tropic
نصب و راه‌اندازی Actual Budget روی VPS: مدیر بودجه شخصی

Actual Budget: مدیر بودجه شخصی شما روی VPS

یک اپلیکیشن بانکی نشان می‌دهد پولتان تا امروز کجا خرج شده است. Actual Budget به پرسش دیگری پاسخ می‌دهد: از موجودی در دسترس واقعاً چقدر می‌توانید خرج کنید، وقتی بخشی از آن از قبل برای اجاره، خرید روزانه، سفر و هزینه‌های پیش‌بینی‌نشده کنار گذاشته شده است؟

Actual Budget یک مدیر مالی شخصی رایگان و متن‌باز است. این برنامه به‌صورت محلی کار می‌کند، از طریق سرور خودتان همگام می‌شود و از رمزنگاری سرتاسری پشتیبانی می‌کند. در این راهنما با قابلیت‌ها و محدودیت‌های آن آشنا می‌شوید و آن را روی VPS نصب می‌کنید.

Actual Budget در هفت گام

  1. یک VPS لینوکسی بسازید و یک زیردامنه مانند budget.example.com را به آن متصل کنید.
  2. Docker و Docker Compose را نصب کنید.
  3. کانتینر رسمی را با یک پوشه دائمی برای داده‌ها اجرا کنید.
  4. با استفاده از Caddy، HTTPS را فعال کنید.
  5. گذرواژه سرور را تنظیم کنید و یک بودجه بسازید.
  6. حساب‌ها، دسته‌بندی‌ها، قوانین و پرداخت‌های دوره‌ای را اضافه کنید.
  7. رمزنگاری را فعال کنید و یک پشتیبان‌گیری خارجی تنظیم کنید.

Actual Budget چیست؟

Actual Budget یک برنامه خودمیزبان برای مدیریت بودجه شخصی یا خانوادگی است. معمولاً آن را جایگزین متن‌باز YNAB می‌دانند، اما می‌توانید کار را با یک بودجه کاملاً جدید نیز شروع کنید.

این سرویس از روش بودجه‌بندی پاکتی مجازی استفاده می‌کند. فرض کنید در حساب‌های شما ۱۰۰٬۰۰۰ روبل وجود دارد. از این مبلغ، ۴۰٬۰۰۰ روبل برای مسکن، ۲۰٬۰۰۰ روبل برای خرید روزانه، ۱۰٬۰۰۰ روبل برای قبوض و ۱۵٬۰۰۰ روبل برای صندوق اضطراری لازم است. پس از اختصاص این مبالغ، فقط ۱۵٬۰۰۰ روبل برای خریدهای اختیاری باقی می‌ماند، نه کل ۱۰۰٬۰۰۰ روبل.

این روش نقش برنامه را تغییر می‌دهد. یک ابزار معمولیِ ثبت هزینه، مخارج گذشته را توضیح می‌دهد؛ اما Actual Budget کمک می‌کند پیش از خرید تصمیم بگیرید. پولی که در یک دسته‌بندی استفاده نشده باشد به دوره بعد منتقل می‌شود و اگر بیش از بودجه خرج کنید، می‌توانید پول را از پاکت دیگری جابه‌جا کنید.

تفاوت دیگر، معماری local-first یا «محلی در اولویت» آن است. بودجه روی دستگاه‌های متصل ذخیره می‌شود و بدون اتصال اینترنت نیز در دسترس می‌ماند. وقتی اتصال برقرار شود، تغییرات از طریق سرور همگام‌سازی می‌شوند. VPS در درجه اول برای تبادل داده میان کامپیوتر، تلفن و مرورگرها استفاده می‌شود، نه برای پردازش هر عملیات.

قابلیت‌های اصلی Actual Budget

  • بودجه‌بندی پاکتی. فقط پولی را اختصاص می‌دهید که واقعاً دریافت کرده‌اید.
  • حساب‌ها و تراکنش‌ها. انتقال وجه، تقسیم یک خرید میان چند دسته‌بندی، یادداشت‌ها و تطبیق موجودی را پشتیبانی می‌کند.
  • قوانین و زمان‌بندی‌ها. می‌توانید توضیحات بانکی را مرتب کنید، دسته‌بندی‌ها را تعیین کنید و حقوق، اجاره یا اشتراک‌ها را از قبل برنامه‌ریزی کنید.
  • درون‌ریزی. از CSV، QIF، OFX، QFX و CAMT پشتیبانی می‌شود. قالب‌هایی که شناسه تراکنش دارند، در برابر ایجاد موارد تکراری محافظت بهتری فراهم می‌کنند.
  • گزارش‌ها. جریان نقدی، ارزش خالص دارایی، هزینه‌ها و نمودارهای قابل تنظیم در دسترس هستند.
  • مهاجرت و API. برنامه می‌تواند داده‌ها را از YNAB4 و نسخه فعلی YNAB درون‌ریزی کند و API برای یکپارچه‌سازی‌های سفارشی در اختیار شما می‌گذارد.

در تلفن همراه، Actual Budget به‌صورت PWA نصب می‌شود؛ یعنی یک برنامه وب که به صفحه اصلی اضافه می‌کنید. بهتر است رابط موبایل را از قبل بررسی کنید تا مطمئن شوید برای شما مناسب است.

پارامترسرویس ابریActual Budget
محل ذخیره‌سازینزد ارائه‌دهندهروی دستگاه و سرور خودتان
استفاده آفلاینبه سرویس بستگی داردقابلیت‌های اصلی به‌صورت محلی در دسترس هستند
نگهداریتوسط ارائه‌دهنده انجام می‌شودبر عهده مالک است
هزینه نرم‌افزاراشتراک یا طرح رایگانبدون اشتراک اجباری
کنترل داده‌هاطبق سیاست‌های ارائه‌دهندهتحت کنترل مالک سرور

Actual Budget برای افرادی مناسب است که حریم خصوصی و کنترل داده‌ها برایشان اهمیت دارد. اگر نمی‌خواهید سرور نگهداری کنید، یک سرویس ابری راحت‌تر است.

نیازمندی‌های سرور Actual Budget

این پروژه حداقل رسمی و دقیقی برای CPU و RAM اعلام نکرده است. سرور عمدتاً مقدار کمی داده مالی را همگام می‌کند؛ بنابراین برای یک نفر یا یک خانواده، پیکربندی اولیه معقول می‌تواند چنین باشد:

  • ۱ vCPU؛
  • ۱ گیگابایت RAM؛
  • ۱۰ گیگابایت SSD؛
  • Ubuntu 24.04 LTS؛
  • یک دامنه یا زیردامنه؛
  • فضای ذخیره‌سازی خارجی برای پشتیبان‌گیری.

این یک پیشنهاد عملی است، نه حداقل رسمی. اگر قصد دارید کانتینرهای دیگری را هم اجرا کنید، بهتر است ۲ گیگابایت RAM اختصاص دهید.

چگونه Actual Budget را روی VPS نصب کنیم؟

در این مثال از Ubuntu 24.04 و زیردامنه budget.example.com استفاده می‌شود.

۱. آماده‌سازی سرور

یک رکورد DNS از نوع A ایجاد کنید که به IP آدرس VPS اشاره کند، از طریق SSH متصل شوید و فقط پورت‌های موردنیاز را باز کنید:

ssh root@SERVER_IP

apt update && apt upgrade -y
apt install -y ca-certificates curl ufw

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

۲. نصب Docker

مخزن رسمی Docker را اضافه کنید:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

۳. اجرای Actual Budget

mkdir -p /opt/actual-budget/data
cd /opt/actual-budget

cat > compose.yml <<'EOF'
services:
  actual:
    image: actualbudget/actual-server:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:5006:5006"
    volumes:
      - ./data:/data
EOF

docker compose up -d
docker compose ps

اتصال سرویس به 127.0.0.1 مانع از آن می‌شود که پورت 5006 مستقیماً در اینترنت در دسترس باشد. بودجه‌ها در /opt/actual-budget/data ذخیره می‌شوند و هنگام به‌روزرسانی کانتینر حذف نخواهند شد.

۴. فعال‌سازی HTTPS

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
budget.example.com {
    reverse_proxy 127.0.0.1:5006
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

وقتی DNS به VPS اشاره کند و پورت‌های 80 و 443 در دسترس باشند، Caddy به‌صورت خودکار گواهی TLS دریافت می‌کند. آدرس https://budget.example.com را باز کنید و یک گذرواژه طولانی برای سرور تعیین کنید.

چگونه اولین بودجه را تنظیم کنیم؟

لازم نیست کار را با درون‌ریزی چند سال سابقه مالی شروع کنید. سریع‌تر است که حساب‌های مورد استفاده فعلی را اضافه کنید، موجودی کنونی آن‌ها را وارد کنید و برای پرداخت‌های ضروری، هزینه‌های روزمره، پس‌انداز و مخارج نامنظم دسته‌بندی بسازید.

فقط پولی را اختصاص دهید که در حال حاضر در دسترس است تا مقدار «To Budget» به صفر برسد. سپس تراکنش‌های اخیر را درون‌ریزی کنید، موجودی‌ها را بررسی کنید و برای فروشگاه‌های پرتکرار، اشتراک‌ها و انتقال وجه قوانین بسازید.

دسته‌بندی‌ها باید به شما در تصمیم‌گیری کمک کنند. پاکت‌های جداگانه برای «هزینه‌های درمانی»، «تعمیر دستگاه» و «اشتراک‌های سالانه» از یک دسته‌بندی عمومی «متفرقه» کاربردی‌تر هستند.

درباره همگام‌سازی بانکی چه باید بدانید؟

اتصال به بانک‌ها در همه کشورها در دسترس نیست و به ارائه‌دهنده API پشتیبانی‌شده بستگی دارد. برای استفاده از آن به سرور خودتان و اطلاعات ورود اضافی نیاز دارید. Actual Budget همگام‌سازی را کاملاً خودکار انجام نمی‌دهد: کاربر آن را از داخل رابط برنامه شروع می‌کند.

توکن‌های اتصال بانکی جداگانه روی سرور ذخیره می‌شوند و رمزنگاری سرتاسری بودجه شامل آن‌ها نمی‌شود. اگر بانک خاصی پشتیبانی نشود، می‌توانید تراکنش‌ها را از صورت‌حساب درون‌ریزی کنید. OFX و QFX معمولاً از CSV راحت‌تر هستند، چون شناسه تراکنش دارند.

رمزنگاری، پشتیبان‌گیری و به‌روزرسانی‌ها

رمزنگاری سرتاسری برای هر بودجه به‌صورت جداگانه فعال می‌شود. گذرواژه را در یک مدیر گذرواژه ذخیره کنید، چون سرور نمی‌تواند آن را بازیابی کند. Actual Budget نسخه محلی خود را به‌تنهایی رمزنگاری نمی‌کند؛ بنابراین تلفن و کامپیوتر باید با قفل صفحه و رمزنگاری دیسک محافظت شوند.

همگام‌سازی جای پشتیبان‌گیری را نمی‌گیرد. به‌طور منظم از بخش تنظیمات بودجه خروجی بگیرید و پوشه داده‌ها را در محل دیگری کپی کنید:

cd /opt/actual-budget
docker compose stop
tar -czf /root/actual-budget-$(date +%F).tar.gz data
docker compose start

آرشیو را به خارج از VPS منتقل کنید. پیش از به‌روزرسانی یک نسخه دیگر بسازید و سپس اجرا کنید:

cd /opt/actual-budget
docker compose pull
docker compose up -d

برای استفاده معمول، تگ پایدار latest را انتخاب کنید، نه تگ آزمایشی nightly را.

برای Actual Budget کدام VPS را انتخاب کنیم؟

یک نمونه شخصی به سرور قدرتمندی نیاز ندارد. یک VPS لینوکسی پایه از tropic.host برای میزبانی Actual Budget، Caddy و یک زیردامنه دارای HTTPS کافی است. شروع با ۱ گیگابایت RAM منطقی است؛ فقط زمانی منابع را افزایش دهید که سرویس‌های خودمیزبان دیگری اضافه کنید.

پورت 5006 را مستقیماً در اینترنت باز نگذارید، به‌روزرسانی‌ها را نصب کنید و دست‌کم یک نسخه پشتیبان خارج از VPS اصلی نگه دارید. امنیت یک سرویس خودمیزبان به نحوه پیکربندی آن توسط مالک بستگی دارد.

محدودیت‌های Actual Budget

Actual Budget به نگهداری و مدیریت توسط خودتان نیاز دارد. همگام‌سازی بانکی به کشور و ارائه‌دهنده محدود است، نسخه موبایل به‌صورت PWA کار می‌کند و گم‌کردن گذرواژه رمزنگاری می‌تواند بودجه را غیرقابل دسترس کند.

این سرویس برای همه مناسب نیست، اما یک کار مشخص را به‌خوبی انجام می‌دهد: بودجه‌بندی پاکتی، خودکارسازی و کنترل داده‌ها را بدون نیاز به اشتراک ماهانه در کنار هم قرار می‌دهد.

جمع‌بندی

Actual Budget ثبت هزینه‌ها را به یک برنامه تبدیل می‌کند: هر مبلغی که دریافت می‌کنید از قبل هدفی مشخص دارد. برنامه به‌صورت محلی کار می‌کند، از طریق سرور خودتان همگام می‌شود و از درون‌ریزی، قوانین، گزارش‌ها و رمزنگاری پشتیبانی می‌کند.

برای اجرای آن یک VPS کوچک کافی است. پس از نصب، مهم‌ترین کارها فعال‌کردن HTTPS، نگهداری امن گذرواژه رمزنگاری و تنظیم یک پشتیبان‌گیری خارجی هستند.

پرسش‌های متداول

آیا Actual Budget رایگان است؟

بله. برنامه متن‌باز است و به اشتراک اجباری نیاز ندارد. هزینه VPS، دامنه و فضای ذخیره‌سازی پشتیبان جداگانه پرداخت می‌شود.

آیا باید Actual Budget را روی VPS نصب کنم؟

خیر. می‌توانید آن را به‌صورت محلی روی یک کامپیوتر استفاده کنید. برای همگام‌سازی میان دستگاه‌ها، اتصال به بانک، دسترسی API و دسترسی دائمی از طریق وب به سرور نیاز دارید.

آیا می‌توانم Actual Budget را به بانک خود متصل کنم؟

بله، به شرطی که بانک و منطقه شما توسط یکی از ارائه‌دهندگان موجود پشتیبانی شود. در غیر این صورت، تراکنش‌ها را می‌توان از فایل‌های CSV، QIF، OFX، QFX یا CAMT درون‌ریزی کرد.

آیا ذخیره بودجه روی سرور شخصی امن است؟

اگر درست پیکربندی شود، بله؛ اما مسئولیت امنیت بر عهده مالک است. به HTTPS، گذرواژه طولانی، رمزنگاری، به‌روزرسانی‌ها و پشتیبان‌های خارجی نیاز دارید.

Actual Budget به چه مقدار RAM نیاز دارد؟

حداقل رسمی اعلام نشده است. برای یک نمونه شخصی، ۱ گیگابایت RAM نقطه شروع عملی است؛ اگر سرویس‌های دیگری را نیز میزبانی می‌کنید، بهتر است ۲ گیگابایت اختصاص دهید.