SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-08-27

วิธีติดตั้ง Actual Budget บน VPS ด้วย Docker Compose

เรียนรู้วิธีติดตั้ง Actual Budget บน VPS ผ่าน Docker Compose พร้อมตั้งค่า HTTPS และจัดการข้อมูลสำรอง เพื่อให้การซิงค์งบประมาณส่วนตัวของคุณมีความปลอดภัยและเสถียรที่สุด

สิ่งที่คุณกำลังสร้าง

Actual Budget เป็นแอปพลิเคชันจัดการงบประมาณแบบซอง (envelope budgeting) ที่สามารถโฮสต์ด้วยตนเองได้ และเป็นคำตอบมาตรฐานสำหรับผู้ที่มองหาทางเลือกแทน YNAB ที่สามารถโฮสต์เองได้ เซิร์ฟเวอร์นี้ประกอบด้วย 1 คอนเทนเนอร์, 1 data volume และ 1 ชื่อโดเมน HTTPS ทุกอย่างที่จำเป็นสำหรับการทำงบประมาณทั่วไปสามารถทำงานได้อย่างราบรื่นบน VPS ขนาดเล็กที่สุดที่คุณสามารถเช่าได้ เนื่องจากเซิร์ฟเวอร์ทำหน้าที่หลักในการจัดเก็บไฟล์และซิงค์ข้อมูลเท่านั้น

สถาปัตยกรรมนี้เป็นสิ่งที่ควรทำความเข้าใจก่อนที่คุณจะเริ่มพิมพ์คำสั่งใดๆ ตัวงบประมาณเองคือฐานข้อมูล SQLite ที่อยู่ในเบราว์เซอร์และในแอปมือถือแต่ละเครื่อง เซิร์ฟเวอร์ที่คุณกำลังจะติดตั้งทำหน้าที่เป็นจุดเชื่อมต่อสำหรับการซิงค์ (sync endpoint) โดยจะเก็บรายการบัญชี, ไฟล์งบประมาณ และบันทึกการเปลี่ยนแปลง (change log) ที่ช่วยให้โทรศัพท์และแล็ปท็อปมีข้อมูลตรงกัน นี่คือเหตุผลที่แอปยังคงทำงานได้แม้เซิร์ฟเวอร์จะล่ม และเป็นเหตุผลว่าทำไมการสูญเสียเซิร์ฟเวอร์จึงไม่ทำให้งบประมาณของคุณหายไป ตราบใดที่ยังมีไคลเอนต์เครื่องใดเครื่องหนึ่งเก็บสำเนาข้อมูลไว้อยู่

เหตุผลที่เซิร์ฟเวอร์จำเป็นต้องใช้ HTTPS

Actual จำเป็นต้องใช้ HTTPS และไม่ใช่เพียงแค่เรื่องของรูปแบบเท่านั้น เบราว์เซอร์จะเปิดใช้งาน Web Crypto API ซึ่งเป็นอินเทอร์เฟซที่ Actual ใช้สำหรับการเข้ารหัสแบบ end-to-end เฉพาะในบริบทที่ข้อกำหนดระบุว่าเป็น secure context เท่านั้น โดย secure context จะหมายถึง https:// หรือ http://localhost หากคุณโหลดแอปจาก http://203.0.113.10:5006 บนเบราว์เซอร์ของเครื่องอื่น ฟีเจอร์เหล่านี้จะไม่ปรากฏขึ้นเลย เนื่องจากเบราว์เซอร์ไม่ได้ส่งมอบฟีเจอร์เหล่านั้นให้กับหน้าเว็บ นอกจากนี้ แอปเวอร์ชันมือถือที่เป็นทางการยังปฏิเสธการเชื่อมต่อกับ URL เซิร์ฟเวอร์ที่เป็น http:// แบบธรรมดาอีกด้วย

ดังนั้นจึงมีแนวทางการตั้งค่าที่ใช้งานได้จริงอยู่ 2 วิธี วิธีแรกคือการติดตั้งใบรับรองจริงบนชื่อโดเมนจริงไว้หน้าคอนเทนเนอร์ ซึ่งเป็นวิธีที่คู่มือนี้แนะนำ หรือวิธีที่สองคือการกำหนดใบรับรองแบบ self-signed ให้กับเซิร์ฟเวอร์ด้วย ACTUAL_HTTPS_KEY และ ACTUAL_HTTPS_CERT ตามที่เอกสารของโปรเจกต์ระบุไว้ ซึ่งคุณจะต้องยอมรับคำเตือนจากเบราว์เซอร์ในทุกอุปกรณ์ที่ใช้งาน การขอใบรับรองฟรีจาก Let's Encrypt ใช้เวลาเพียง 5 นาที ดังนั้นควรเลือกวิธีแรกจะดีที่สุด

การติดตั้ง Actual Budget ด้วย Docker Compose

หากเซิร์ฟเวอร์เป็นเครื่องใหม่ ให้ติดตั้ง Docker ก่อน หากคุณยังไม่คุ้นเคยกับไวยากรณ์ของไฟล์ Compose คู่มือ พื้นฐาน Docker Compose สำหรับ VPS ได้อธิบายฟิลด์ต่างๆ ที่ใช้ด้านล่างนี้ไว้แล้ว

sudo install -d -m 755 /opt/actual
sudo install -d -m 700 /opt/actual/data

สร้างไฟล์ /opt/actual/docker-compose.yml:

services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual
    restart: unless-stopped
    ports:
      - '127.0.0.1:5006:5006'
    volumes:
      - ./data:/data

มีรายละเอียด 3 ส่วนในไฟล์นี้ที่สำคัญ

image ที่ใช้คือ actualbudget/actual-server:latest ซึ่งเผยแพร่โดยโครงการบน Docker Hub และมี mirror อยู่ที่ ghcr.io/actualbudget/actual นอกจากนี้ยังมี tag latest-alpine สำหรับเครื่องที่มีทรัพยากรจำกัด

คอนเทนเนอร์จะเขียนข้อมูลทั้งหมดไว้ภายใต้ /data ภายใน path นี้จะมี server-files ซึ่งเก็บ account.sqlite ที่ใช้สำหรับข้อมูลการเข้าสู่ระบบและ session token ของคุณ และ user-files ซึ่งเก็บไฟล์งบประมาณจริง คุณต้อง mount path นี้ไว้ มิฉะนั้น docker compose pull จะทำให้ข้อมูลงบประมาณของคุณสูญหาย คุณสามารถใช้ ACTUAL_DATA_DIR เพื่อย้ายตำแหน่งได้ แต่ค่าเริ่มต้นก็เพียงพอแล้ว

พอร์ตจะถูกเผยแพร่บน 127.0.0.1 เท่านั้น การใช้เพียง 5006:5006 จะเป็นการเผยแพร่บนทุกอินเทอร์เฟซ และเนื่องจาก Docker จะเขียนกฎของตัวเองนำหน้า ufw แอปพลิเคชันจึงอาจเปิดรับการเชื่อมต่อจากอินเทอร์เน็ตได้แม้ว่าคุณจะตั้งค่า firewall เป็น deny-all ก็ตาม ปัญหานี้อธิบายไว้ใน เหตุใดพอร์ตที่เผยแพร่โดย Docker จึงข้าม ufw การผูกพอร์ตไว้กับ loopback หมายความว่ามีเพียง reverse proxy บนเครื่องเดียวกันเท่านั้นที่เข้าถึงได้

เริ่มการทำงาน:

cd /opt/actual
docker compose up --detach
docker compose logs -f actual

log จะนิ่งเมื่อเซิร์ฟเวอร์รายงานว่ากำลังฟังอยู่ที่พอร์ต 5006 ให้ตรวจสอบการทำงานในเครื่องก่อนที่จะตั้งค่า DNS:

curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:5006/

ค่า 200 หมายความว่าแอปพลิเคชันกำลังทำงานอยู่ ส่วน curl: (7) Failed to connect หมายความว่าคอนเทนเนอร์ไม่ได้ทำงาน และ docker compose ps จะแสดงว่าคอนเทนเนอร์หยุดทำงานไปแล้ว สาเหตุที่พบบ่อยคือปัญหาเรื่องสิทธิ์การเข้าถึง (permission) บน volume ที่ mount ไว้ ซึ่งจะปรากฏเป็นบรรทัด EACCES ใน log

การติดตั้งใบรับรองและชื่อโดเมนจริง

ชี้ A record ไปยัง VPS ของคุณที่ budget.example.com และรอให้ DNS อัปเดต จากนั้นติดตั้ง nginx และออกใบรับรอง คู่มือ Certbot บน Ubuntu 24.04 ร่วมกับ nginx ได้อธิบายขั้นตอนการออกใบรับรองและการตั้งเวลาต่ออายุไว้อย่างครบถ้วน

บล็อกของ proxy:

server {
    listen 443 ssl;
    http2 on;
    server_name budget.example.com;

    ssl_certificate     /etc/letsencrypt/live/budget.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/budget.example.com/privkey.pem;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:5006;
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

client_max_body_size คือบรรทัดที่ผู้ใช้งานมักลืมตั้งค่า ไฟล์งบประมาณจะถูกอัปโหลดทั้งหมดในคราวเดียวเมื่อทำการ sync ข้อมูลแบบเต็ม โดยปกติ nginx จะจำกัดขนาด request body ไว้ที่ 1 MB ดังนั้นเมื่อไฟล์มีขนาดใหญ่กว่านั้น การ sync จะล้มเหลวและแสดงข้อความ 413 Request Entity Too Large ใน access log ของ nginx ในขณะที่ตัวแอปพลิเคชันจะแสดงเพียงข้อผิดพลาดทั่วไปในการ sync เท่านั้น ตัวเซิร์ฟเวอร์เองมีขีดจำกัดแยกต่างหาก โดย ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB มีค่าเริ่มต้นที่ 20 และ ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB มีค่าเริ่มต้นที่ 50 ดังนั้นควรตั้งค่าขีดจำกัดของ nginx ให้สูงกว่าค่าที่คุณใช้งานจริง

โหลดการตั้งค่าใหม่และทดสอบ:

sudo nginx -t && sudo systemctl reload nginx
curl -fsS -o /dev/null -w '%{http_code}\n' https://budget.example.com/

การใช้งานครั้งแรก: รหัสผ่านและไฟล์งบประมาณไฟล์แรกของคุณ

เปิด https://budget.example.com ในเว็บเบราว์เซอร์ หน้าจอแรกจะให้คุณตั้งรหัสผ่านสำหรับเซิร์ฟเวอร์ รหัสผ่านนี้เพียงรหัสเดียวจะทำหน้าที่ปกป้องเซิร์ฟเวอร์ทั้งหมด ดังนั้นควรสร้างรหัสผ่านแบบสุ่มที่มีความยาวและเก็บไว้ในที่ที่คุณสามารถเรียกใช้ได้อีกครั้ง เช่น โปรแกรมจัดการรหัสผ่าน Vaultwarden ที่โฮสต์เอง ระบบนี้ไม่มีการสร้างบัญชีผู้ใช้ เนื่องจาก Actual ถูกออกแบบมาให้ใช้รหัสผ่านเดียว ดังนั้นการแชร์งบประมาณจึงหมายถึงการแชร์รหัสผ่านนั้นด้วย

จากนั้นให้สร้างไฟล์งบประมาณ Actual จะถามว่าต้องการเปิดใช้งานการเข้ารหัสแบบ end-to-end หรือไม่ ให้ตอบตกลงเพื่อที่เซิร์ฟเวอร์จะจัดเก็บเฉพาะข้อมูลที่เข้ารหัสไว้เท่านั้น ซึ่งเป็นวิธีที่ถูกต้องสำหรับข้อมูลทางการเงินบนเครื่องเช่า สิ่งที่ต้องแลกคือรหัสผ่านสำหรับการเข้ารหัสจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ ดังนั้นหากคุณทำรหัสผ่านหาย ไฟล์ข้อมูลจะสูญหายไปทันทีและไม่สามารถกู้คืนได้ ให้จดรหัสผ่านนั้นไว้ก่อนที่จะคลิกผ่านหน้าจอดังกล่าว

กำหนดเงินคงเหลือเริ่มต้นของคุณจากตัวเลขปัจจุบันในธนาคาร แทนการนำเข้าประวัติย้อนหลังหลายปี การทำงบประมาณแบบซอง (Envelope budgeting) จะเน้นการวางแผนจากเงินที่คุณมีอยู่ในปัจจุบัน ดังนั้นการไม่มีประวัติข้อมูลย้อนหลังจึงไม่ส่งผลกระทบใดๆ ต่อการใช้งานของคุณ

การนำเข้าธุรกรรม

ในส่วนนี้ความซื่อสัตย์สำคัญกว่าความกระตือรือร้น เพราะขั้นตอนการนำเข้าข้อมูลคือเหตุผลหลักที่ทำให้ผู้ใช้งานเลิกใช้ระบบทำงบประมาณแบบ self-hosted

การบันทึกด้วยตนเองเป็นพื้นฐานที่ใช้งานได้เสมอ สำหรับวิธีการแบ่งงบประมาณแบบซอง (envelope method) นี่อาจเป็นหัวใจสำคัญ เพราะการพิมพ์รายการซื้อคือสิ่งที่ทำให้คุณตระหนักถึงการใช้จ่ายนั้น

การนำเข้าไฟล์ช่วยจัดการข้อมูลจำนวนมาก Actual รองรับไฟล์ CSV, QIF, OFX และ QFX ซึ่งธนาคารทุกแห่งมีตัวเลือกการส่งออกข้อมูลอย่างน้อยหนึ่งรูปแบบ ให้ทำการนำเข้าแยกตามบัญชีจากหน้าจอของบัญชีนั้นๆ โดยทำการจับคู่คอลัมน์เพียงครั้งเดียว จากนั้น Actual จะจดจำรูปแบบดังกล่าวไว้สำหรับบัญชีนั้น

ระบบซิงค์ธนาคารอัตโนมัติมีให้บริการ แต่จำเป็นต้องใช้บริการจากบุคคลที่สามเนื่องจากเซิร์ฟเวอร์ไม่สามารถติดต่อกับธนาคารได้โดยตรง Actual รองรับ SimpleFIN Bridge สำหรับธนาคารในอเมริกาเหนือ, Enable Banking สำหรับยุโรป, Akahu สำหรับนิวซีแลนด์ และ Pluggy.ai สำหรับบราซิล ส่วน GoCardless ยังคงรองรับอยู่แต่ไม่เปิดรับบัญชีใหม่ คุณต้องสมัครใช้บริการกับผู้ให้บริการด้วยตนเอง สร้างข้อมูลรับรอง (credentials) แล้วนำมาเพิ่มในเซิร์ฟเวอร์ โดย SimpleFIN Bridge มีค่าบริการ 15 ดอลลาร์สหรัฐต่อปีสำหรับสถาบันการเงินสูงสุด 25 แห่ง ณ เดือนกรกฎาคม 2026 ส่วนผู้ให้บริการรายอื่นจะมีโครงสร้างราคาที่แตกต่างกันออกไป

มีข้อจำกัดสองประการที่ต้องยอมรับก่อนที่คุณจะพึ่งพาระบบนี้ ประการแรก ข้อมูลรับรอง API จะถูกเก็บไว้บนเซิร์ฟเวอร์และไม่ได้รับการคุ้มครองด้วยการเข้ารหัสแบบ end-to-end เนื่องจากเซิร์ฟเวอร์จำเป็นต้องใช้ข้อมูลดังกล่าว ประการที่สอง Actual ไม่มีการดึงข้อมูลอัตโนมัติ (polling): การซิงค์ข้อมูลคือปุ่มที่คุณต้องกดเอง ไม่ใช่การทำงานเบื้องหลัง (background job)

การสำรองข้อมูล เพราะมันเป็นเพียงไฟล์

ทุกสิ่งที่คุณให้ความสำคัญจะอยู่ภายใต้ /opt/actual/data ไม่จำเป็นต้องมีขั้นตอนการส่งออก (export) หรือการเขียนสคริปต์เพื่อดัมพ์ฐานข้อมูล

ข้อควรระวังเพียงอย่างเดียวคือ SQLite การคัดลอก account.sqlite ในขณะที่เซิร์ฟเวอร์กำลังเขียนข้อมูลลงไป อาจทำให้ได้ไฟล์ที่ธุรกรรมยังไม่สมบูรณ์ ซึ่งคุณจะไม่ทราบจนกว่าจะพยายามกู้คืนข้อมูล ดังนั้นให้หยุด container ไว้ชั่วคราวในช่วงเวลาไม่กี่วินาทีที่ทำการคัดลอก:

cd /opt/actual
docker compose stop
restic -r sftp:backup@backup.example.com:/srv/restic backup /opt/actual/data
docker compose start

กำหนดตารางเวลาการทำงานนี้โดยใช้วิธีการใน การสำรองข้อมูลด้วย restic บน VPS ซึ่งครอบคลุมถึงการตั้งค่า repository, การเก็บรักษาข้อมูล และขั้นตอนการซ้อมกู้คืนข้อมูล จงทำการซ้อมกู้คืนข้อมูลเสมอ การสำรองข้อมูลที่คุณไม่เคยทดสอบกู้คืนถือเป็นเพียงการคาดเดาเท่านั้น

การสำรองข้อมูลฝั่งไคลเอนต์ของ Actual เองเป็นอีกส่วนหนึ่งที่ควรทราบ เบราว์เซอร์จะเก็บสำเนาไฟล์งบประมาณล่าสุดไว้ ซึ่งเข้าถึงได้จากเมนูไฟล์ วิธีนี้ช่วยแก้ปัญหา "ฉันเผลอลบหมวดหมู่โดยไม่ได้ตั้งใจ" ได้โดยไม่ต้องแตะต้องเซิร์ฟเวอร์เลย

การอัปเดตเซิร์ฟเวอร์

cd /opt/actual
docker compose pull
docker compose up --detach

Compose จะสร้าง container จาก image ใหม่และเชื่อมต่อ volume เดิมกลับมา ดังนั้นข้อมูลจึงยังคงอยู่ ควรอัปเดต client ด้วย เวอร์ชันของ server และแอปควรใกล้เคียงกัน และ client ที่เก่ากว่า server มากอาจปฏิเสธการ sync พร้อมข้อความแจ้งว่าเวอร์ชันไม่ตรงกัน ให้สำรองข้อมูลก่อนข้ามไปใช้ major version ใหม่ เนื่องจาก migration จะทำงานเมื่อเริ่มต้นครั้งแรก และไม่มีแนวทาง downgrade

Actual รองรับ tag latest ที่เลื่อนไปตามเวอร์ชันได้ค่อนข้างดี เพราะ state ของ Actual เป็นไดเรกทอรีที่ประกอบด้วยไฟล์ ขณะที่แอปที่ใช้ฐานข้อมูลจริงไม่เหมาะกับวิธีนี้ และ การ self-hosting Chatwoot อธิบายการใช้ tag แบบระบุเวอร์ชันและการ dump ฐานข้อมูลก่อนอัปเกรด ซึ่งเป็นแนวทางที่ควรทำ

สิ่งที่มักจะเกิดข้อผิดพลาดและสิ่งที่คุณจะพบ

แอปโหลดได้แต่การซิงค์ไม่เสร็จสิ้น ให้ตรวจสอบ log ของ nginx สำหรับ 413 ซึ่งหมายความว่า client_max_body_size ถูกตั้งค่าไว้ต่ำเกินไป หากพบ 502 แสดงว่า nginx ทำงานอยู่แต่คอนเทนเนอร์ไม่ได้ทำงาน

ตัวเลือกการเข้ารหัสหายไป หรือแอปบนมือถือปฏิเสธ URL หน้าเว็บไม่ได้อยู่ในบริบทที่ปลอดภัย แถบที่อยู่จะแสดง http:// พร้อมกับ IP address หรือ hostname ที่ไม่ใช่ localhost ให้แก้ไขที่ certificate แทนการเลี่ยงปัญหา

ข้อความแจ้งว่าไฟล์งบประมาณไม่รองรับกับเวอร์ชันนี้ เวอร์ชันของไคลเอนต์และเซิร์ฟเวอร์ไม่ตรงกัน ให้อัปเดตทั้งสองฝั่งให้เป็น release เดียวกันแล้วโหลดหน้าเว็บใหม่

คอนเทนเนอร์รีสตาร์ทวนซ้ำ ให้อ่าน docker compose logs actual หากพบข้อผิดพลาดเรื่องสิทธิ์บน /data หมายความว่าไดเรกทอรีที่ mount ไว้ไม่สามารถเขียนข้อมูลได้โดยผู้ใช้ของคอนเทนเนอร์ หากพบข้อผิดพลาดว่า address-in-use หมายความว่ามีบริการอื่นใช้งานพอร์ต 5006 บน loopback อยู่แล้ว

การโหลดครั้งแรกช้า ไฟล์งบประมาณทั้งหมดจะถูกดาวน์โหลดลงเบราว์เซอร์เมื่อคุณเปิดใช้งาน ซึ่งเป็นการรับส่งข้อมูลขนาดใหญ่ในครั้งเดียว จากนั้นจะเป็นการอ่านข้อมูลจากภายในเครื่อง ไม่ใช่ปัญหาเรื่องขนาดของเซิร์ฟเวอร์ และการเพิ่ม RAM จะไม่ช่วยให้เร็วขึ้น

FAQ

Actual Budget จำเป็นต้องใช้ HTTPS เพื่อทำงานหรือไม่?

ในทางปฏิบัติจำเป็นต้องใช้ เนื่องจากระบบการเข้ารหัสแบบ end-to-end ของ Actual ใช้ Web Crypto API ของเบราว์เซอร์ ซึ่งเบราว์เซอร์จะเปิดใช้งาน API นี้เฉพาะในบริบทที่ปลอดภัยเท่านั้น กล่าวคือ https:// หรือ http://localhost หากใช้งานผ่าน HTTP ปกติจากเครื่องอื่น ฟีเจอร์เหล่านี้จะไม่สามารถใช้งานได้ และแอปมือถือที่เป็นทางการจะปฏิเสธการเชื่อมต่อกับ URL ของเซิร์ฟเวอร์ที่เป็น HTTP ปกติ คุณควรใช้ใบรับรองจาก Let’s Encrypt บนชื่อโฮสต์จริง หรือใช้ใบรับรองแบบ self-signed ร่วมกับ ACTUAL_HTTPS_KEY และ ACTUAL_HTTPS_CERT หากคุณใช้งานผ่านเบราว์เซอร์บนเดสก์ท็อปเท่านั้น

Actual สามารถนำเข้าธุรกรรมธนาคารโดยอัตโนมัติได้หรือไม่?

สามารถทำได้ผ่านบริการของบุคคลที่สามที่คุณต้องสมัครใช้งานด้วยตนเองเท่านั้น ได้แก่ SimpleFIN Bridge ในอเมริกาเหนือ, Enable Banking ในยุโรป, Akahu ในนิวซีแลนด์ หรือ Pluggy.ai ในบราซิล ส่วน GoCardless นั้นรองรับการใช้งานแต่ไม่เปิดรับบัญชีใหม่ ข้อมูลรับรอง API เหล่านี้จะถูกเก็บไว้บนเซิร์ฟเวอร์ของคุณและไม่ครอบคลุมอยู่ในการเข้ารหัสแบบ end-to-end นอกจากนี้การซิงค์ข้อมูลยังต้องทำด้วยตนเอง คุณต้องกดปุ่มสั่งการเอง ไม่มีการดึงข้อมูลอัตโนมัติในเบื้องหลัง สำหรับการนำเข้าไฟล์ CSV, QIF, OFX และ QFX ไม่จำเป็นต้องใช้บริการของบุคคลที่สามแต่อย่างใด

ฉันต้องสำรองข้อมูลส่วนใดบ้าง?

คุณต้องสำรองข้อมูลไดเรกทอรีที่ mount ไว้ ซึ่งในคู่มือนี้คือ /opt/actual/data โดยภายในจะประกอบด้วย user-files ซึ่งเป็นไฟล์งบประมาณ และ server-files/account.sqlite ซึ่งเก็บข้อมูลการเข้าสู่ระบบและเซสชัน ให้หยุดการทำงานของ container ก่อนทำการคัดลอกเสมอ เนื่องจากการคัดลอกฐานข้อมูล SQLite ขณะที่กำลังทำงานอยู่อาจทำให้ได้ข้อมูลที่ไม่สมบูรณ์ ส่วนอื่นของเซิร์ฟเวอร์ไม่มีการเก็บสถานะการทำงานใดๆ

จะเกิดอะไรขึ้นหากฉันทำรหัสผ่านสำหรับการเข้ารหัสหาย?

ไฟล์ดังกล่าวจะไม่สามารถกู้คืนได้ รหัสผ่านจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ ซึ่งเป็นหัวใจสำคัญของการเข้ารหัสแบบ end-to-end ดังนั้นจึงไม่มีระบบรีเซ็ตรหัสผ่านและไม่มีช่องทางสนับสนุนใดๆ ให้เก็บรหัสผ่านไว้ในโปรแกรมจัดการรหัสผ่านทันทีที่สร้างไฟล์ และเก็บสำเนาไว้ในที่ที่ไม่ได้ขึ้นอยู่กับเซิร์ฟเวอร์เครื่องนี้

Actual Budget ต้องการทรัพยากรเซิร์ฟเวอร์มากน้อยเพียงใด?

ต้องการน้อยมาก ตัว container ทำหน้าที่เพียงเสิร์ฟไฟล์ static และไฟล์ข้อมูล ส่วนการคำนวณงบประมาณทั้งหมดจะเกิดขึ้นในเบราว์เซอร์ของคุณ การใช้ vCPU ร่วมกัน 1 คอร์และ RAM 1 GB ก็เพียงพอต่อการทำงานได้อย่างราบรื่น และไดเรกทอรีข้อมูลสำหรับงบประมาณครัวเรือนที่มีประวัติย้อนหลังหลายปีจะมีขนาดเพียงไม่กี่สิบเมกะไบต์เท่านั้น ภาระของดิสก์จะมาจากไฟล์สำรองข้อมูลและ container อื่นๆ ของคุณ ไม่ใช่จาก Actual หากคุณกำลังวางแผนขนาดเซิร์ฟเวอร์เพื่อรันแอปพลิเคชันอื่นที่กินทรัพยากรมากกว่าควบคู่ไปด้วย โดยปกติแล้วเซิร์ฟเวอร์รูปภาพจะเป็นตัวกำหนดสเปกขั้นต่ำ ดังนั้นควรตรวจสอบ ปริมาณ RAM ที่ PhotoPrism และ Immich ต้องการจริงๆ ก่อนตัดสินใจเลือกแผนการใช้งาน