Self-Hosting Guide

DIY Installation Instructions

From a bare VPS to a fully working AI accounts department — step by step. Estimated time: 2–3 hours.

✓ Claude Co-Work Pro ($20/mo) ✓ A domain name ✓ Ubuntu 24.04 VPS ✓ Basic SSH comfort
Download as Word Document ⭐ Star on GitHub

Prefer a hands-off setup? If you'd rather have the Luca General Ledger set up for you by our technical staff, you can get that for just £20 per monthsign up here.

Get it set up for me

Architecture Overview

Before you start, here is a plain-English picture of what you are building and where each component runs.

Your VPS

Luca General Ledger API (Node.js/Docker), PostgreSQL database, Merkle Chain audit files, nginx, SSL certificate, MCP server endpoint.

Your Computer

Claude desktop app (Co-Work mode) with Luca Skills installed. Communicates with your VPS over HTTPS. Your inbox folder for dropping documents.

Anthropic Cloud

Claude Co-Work Pro ($20/mo) provides the AI reasoning. No financial data is stored by Anthropic — only structured MCP responses pass through the AI layer.

🔒 Your data stays on your server

All journal entries, bank transactions, invoices, and ledger data are stored exclusively on your VPS in PostgreSQL and the Merkle Chain files. Claude Co-Work only receives typed responses from the MCP tools — not raw database content.

1

Provision a Server on Liquid Web

Liquid Web is a premium managed hosting provider with data centres in the US and Europe — known for excellent performance and 24/7 support. Using our referral link supports Luca's continued development at no extra cost to you.

Step 1.1 Create your Liquid Web account

  1. Go to cart.liquidweb.com/refer-a-friend/574405721575 and click Sign Up. Using this referral link gives us a small commission at no cost to you — it directly funds Luca development.

  2. Complete registration and verify your email address.

  3. Add a payment method. Liquid Web accepts card and PayPal.

💡 Pick a data centre close to you

Choose a location geographically close to your main office — this reduces latency when Claude Co-Work on your desktop communicates with the MCP server. For UK businesses, the Amsterdam or London locations work well.

Step 1.2 Create a VPS

From your Liquid Web control panel, click Create server and choose the following configuration:

SettingValue
Operating SystemUbuntu 24.04 LTS (64-bit)
CPU2 vCPU minimum — 4 vCPU recommended
RAM4 GB minimum — 8 GB recommended
Storage40 GB SSD minimum — 80 GB SSD recommended (Merkle Chain files grow over time)
NetworkStatic IP address (required for domain resolution)
BackupsEnable automated daily backups — strongly recommended
  1. Set a strong root password or, better, add your SSH public key for keyless authentication.

  2. Click Create and wait 1–2 minutes for the server to boot.

  3. Note the server's public IP address — you will need it for DNS.

Step 1.3 Point your domain at the server

Luca requires HTTPS and a valid domain. The automated installer handles the SSL certificate, but your domain must be pointing at the server IP first.

  1. Log into your domain registrar's DNS control panel.

  2. Create an A record pointing your chosen subdomain (e.g. accounts.yourbusiness.com) to the server's IP address. TTL of 300 seconds is fine.

  3. Wait 5–15 minutes for DNS to propagate. Verify with:

# Run this on your computer
nslookup accounts.yourbusiness.com
⚠️ Domain must resolve before running the installer

The installer requests a free Let's Encrypt SSL certificate automatically. Let's Encrypt needs to reach your domain over the internet. If DNS has not propagated, the SSL step fails. Double-check with nslookup first.

Step 1.4 Connect via SSH

ssh root@<your-server-ip>

Accept the host key fingerprint when prompted. You should now see a root shell.

2

Install the Luca General Ledger

The entire installation — Docker, nginx, PostgreSQL, SSL certificate, systemd service — is handled by a single script. On a fresh Ubuntu 24.04 server it typically takes 5–10 minutes.

Step 2.1 Run the one-command installer

From your SSH session on the server:

curl -sSL https://raw.githubusercontent.com/roger296/luca-general-ledger/main/install.sh \
  -o /tmp/luca-install.sh && sudo bash /tmp/luca-install.sh

The script downloads first and then runs — this is intentional. Piping directly to bash would prevent interactive prompts from working on all systems.

💡 What the installer does automatically

Installs Docker, Docker Compose, nginx and certbot · Builds and starts the Luca API and PostgreSQL containers · Obtains a free Let's Encrypt TLS certificate · Generates secure random secrets for JWT signing and the database · Configures systemd so Luca restarts automatically after a reboot.

Step 2.2 Answer the installer prompts

PromptWhat to enter
Company nameYour business name — displayed in the Luca admin UI
DomainThe full domain from step 1.3 (e.g. accounts.yourbusiness.com)
Admin emailYour email — used for the initial admin account and SSL renewal alerts
Admin passwordA strong password (12+ characters, mixed types)
⚠️ Save your admin credentials now

Write down your admin email and password immediately. You will need them to generate the Claude Co-Work credentials in Part 5 and to log into the Luca admin panel.

Step 2.3 Verify the installation

# Check containers are running — all should show "Up"
docker compose ps

# Check the GL API is responding
curl -s https://your-domain/api/health | python3 -m json.tool

You should receive {"status": "ok"}. Open https://your-domain in your browser — you should see the Luca login page. Sign in with your admin credentials.

3

Set Up Claude Co-Work

Luca runs inside Claude Co-Work — Anthropic's agentic AI desktop application. You must have an active Claude Co-Work Pro subscription ($20/month) to use Luca.

Step 3.1 Subscribe to Claude Co-Work Pro

  1. Go to claude.ai and sign up or sign in to your Anthropic account.

  2. Upgrade to the Pro plan ($20/month). This is billed directly by Anthropic and is separate from any Luca hosting costs.

Step 3.2 Download and install the Claude desktop app

  1. Visit claude.ai/download and download the installer for your OS.

  2. macOS: Open the .dmg and drag Claude to your Applications folder.

  3. Windows: Run the installer and follow the on-screen steps.

  4. Launch the Claude app and sign in with your Anthropic account.

  5. Confirm your Pro subscription is active — you should see "Pro" in the account menu.

ℹ️ Claude Co-Work mode

Claude Co-Work is currently a research preview feature of the Claude desktop app. Make sure you have the latest version installed. Check via the app's menu if you do not see Co-Work functionality.

4

Install the Luca Skills

Luca's intelligence is delivered through Claude Co-Work Skills — structured instruction bundles that tell Claude how to perform accounting tasks. They live in a folder inside your workspace.

Step 4.1 Create a Co-Work workspace folder

# macOS / Linux
mkdir -p ~/LucaWorkspace

# Windows (PowerShell)
New-Item -ItemType Directory -Path "$env:USERPROFILE\LucaWorkspace"

In the Claude desktop app, open Co-Work mode and select this folder as your workspace when prompted (or via Settings → Co-Work → Workspace Folder → Browse).

Step 4.2 Download the skill files from GitHub

Clone the Luca repository into your workspace:

cd ~/LucaWorkspace
git clone https://github.com/roger296/lucaV0.5.git luca-source

Alternatively, go to github.com/roger296/lucaV0.5, click the green Code button → Download ZIP, and extract it.

⭐ Please star the repository!

If you find Luca useful, please click Star on the GitHub page. Stars help the project gain visibility, attract contributors, and show Anthropic there is community interest. It takes three seconds and makes a genuine difference — github.com/roger296/lucaV0.5

Step 4.3 Copy skills into your workspace

# macOS / Linux
mkdir -p ~/LucaWorkspace/.claude/skills
cp -r ~/LucaWorkspace/luca-source/skills/lucas-general-ledger \
    ~/LucaWorkspace/.claude/skills/
cp -r ~/LucaWorkspace/luca-source/skills/luca-setup \
    ~/LucaWorkspace/.claude/skills/

# Windows (PowerShell)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\LucaWorkspace\.claude\skills"
Copy-Item -Recurse "luca-source\skills\lucas-general-ledger" `
    "$env:USERPROFILE\LucaWorkspace\.claude\skills\"
Copy-Item -Recurse "luca-source\skills\luca-setup" `
    "$env:USERPROFILE\LucaWorkspace\.claude\skills\"

Fully quit and relaunch the Claude desktop app so it picks up the new skills.

💡 Verify skill installation

After restarting Claude, open a Co-Work session in your workspace and type: "What skills do you have access to?" — Claude should list lucas-general-ledger and luca-setup. If they don't appear, double-check the folder path. Skills must be at .claude/skills/ inside your workspace root.

5

Connect Claude to Your Luca Server (MCP)

The MCP connector is the secure bridge between Claude Co-Work on your computer and the Luca General Ledger on your VPS. It uses OAuth 2.0 with PKCE for authentication.

Step 5.1 Generate Co-Work credentials on your server

  1. Open https://your-domain and sign in with your admin credentials.

  2. Navigate to Admin → Co-Work Credentials in the sidebar.

  3. Click + Generate credentials.

  4. You receive three values: the MCP Server URL (https://your-domain/mcp), a Client ID, and a Client Secret.

⚠️ The Client Secret is shown only once

Copy it immediately and store it in a password manager. If you lose it, regenerate new credentials — the old pair will be invalidated.

Step 5.2 Add the connector in Claude Co-Work

  1. Open the Claude desktop app.

  2. Go to Settings → Customize → Connectors → Add connector.

  3. Fill in the form:

FieldValue
NameMy Luca Ledger (or any name you prefer)
Remote MCP Server URLhttps://your-domain/mcp
OAuth Client IDThe Client ID from Step 5.1
OAuth Client SecretThe Client Secret from Step 5.1
  1. Click Connect. Your browser will open the Luca login page for OAuth authorisation.

  2. Sign in with your Luca admin credentials and click Authorise.

  3. Return to the Claude app. The connector should show as Connected with a green indicator.

Step 5.3 Verify the MCP connection

In a Co-Work session in your workspace, type:

How many MCP tools do you have access to?

Claude should report access to 50 Luca MCP tools. If it reports zero, see the troubleshooting section below.

6

Your First Luca Session

Server running, Skills installed, MCP connector active — you're ready. Here is how to wake Luca and run your first accounting operations.

Step 6.1 Wake Luca

In a Co-Work session in your workspace, type:

Wake Luca

Claude will load the lucas-general-ledger skill and confirm Luca is active and connected to your General Ledger, with a summary of your current ledger state.

Step 6.2 Review your Chart of Accounts

Show me the current Chart of Accounts

Luca ships with a UK SME default Chart of Accounts. Customise it conversationally:

Add a new expense account called "AWS Infrastructure" under code 7200
Rename account 4000 to "Online Sales Revenue"

Step 6.3 Example commands to explore

Financial reports:

Show me the Profit and Loss for this month
What is the current balance sheet?
Who are my top 5 overdue debtors?
What is our VAT position for Q1?

Posting transactions:

Post a purchase invoice from Acme Ltd for £450 + VAT, dated today, for office supplies
Record a payment received from Johnson & Co for £2,340 against invoice INV-0042

Bank reconciliation:

Start a bank reconciliation for the current account
Import this bank statement and match any transactions you can
7

Document Inbox and Scheduled Tasks

Luca can process financial documents — invoices, receipts, bank statements — automatically. Set up a watched folder and Luca will classify and post them without manual description.

Step 7.1 Create your document inbox folder

# macOS / Linux
mkdir -p ~/LucaWorkspace/inbox
mkdir -p ~/LucaWorkspace/inbox/processed

# Windows (PowerShell)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\LucaWorkspace\inbox"
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\LucaWorkspace\inbox\processed"

Drop documents into inbox/. Luca moves them to inbox/processed/ after handling them.

💡 Supported document formats

PDF invoices and receipts, CSV bank statement exports, OFX and MT940 bank feeds. Drag and drop files directly into the Co-Work chat window, or place them in the inbox folder and ask Luca to process them.

Step 7.2 Process documents manually

Process all documents in my inbox

# Or with a specific file attached or referenced:
Post this invoice to the ledger

The gl-document-posting skill activates automatically, reads each document, identifies the type, extracts key fields, determines the correct accounting treatment, and posts the journal entry.

Step 7.3 Set up a nightly scheduled batch task

For fully automated daily processing, set up a scheduled task in Claude Co-Work. In a Co-Work session:

Set up a scheduled task for Luca's nightly batch processing

Claude will guide you through the setup. Specify:

  • Schedule: Daily at 02:00 (runs while you sleep)
  • Task: Run Luca's nightly batch — reconcile bank feeds, process inbox documents, prepare VAT data, generate exception report
  • Workspace: Your LucaWorkspace folder

Trigger a test run immediately to verify:

Run the Luca batch now
📋 What the nightly batch does

Processes inbox documents · Runs bank reconciliation and auto-matches high-confidence transactions · Flags uncertain matches for your review · Computes FX revaluation adjustments · Updates aged debtor/creditor reports · Prepares VAT data · Sends a summary of exceptions needing a decision.

Step 7.4 Morning briefing

Once the nightly batch has run, ask Luca for a briefing:

Wake Luca
Give me a morning briefing

Luca summarises what happened overnight, what was reconciled automatically, and what needs your attention — a CFO-level view of your financial position in under a minute.

Troubleshooting

MCP connector shows "Not Connected"

  • SSH to the server and run docker compose ps — all services should show "Up".
  • Test the endpoint directly: curl https://your-domain/mcp should return a JSON-RPC response.
  • Rebuild the containers: docker compose up -d --build
  • In Claude, disconnect and reconnect the connector — the OAuth token may have expired.

"Invalid client" error during OAuth

  • Regenerate credentials: Admin → Co-Work Credentials → + Generate credentials.
  • Re-enter the new Client ID and Client Secret in Claude's connector settings.

Skills not appearing in Co-Work

  • Skills must be at .claude/skills/ inside your workspace root — not in a sub-subfolder.
  • Fully quit and relaunch the Claude desktop app after copying skills.
  • Type: "What skills do you have?" — the skills must appear in the list to be active.

Installer fails at SSL certificate step

  • DNS has not propagated yet. Run nslookup your-domain and confirm it returns your server IP.
  • Port 80 must be open on the server for the Let's Encrypt HTTP-01 challenge. Check Liquid Web firewall settings.
  • Re-run the installer: sudo bash /tmp/luca-install.sh

Useful Server Commands

# Check all containers are running
docker compose ps

# View recent API logs
docker compose logs api --tail=50 -f

# Restart all services
docker compose restart

# Update to the latest Luca version
git pull && docker compose up -d --build
docker compose exec api npm run migrate

# Check disk space (chain files grow over time)
df -h

# Verify Merkle chain integrity (or ask Luca: "Verify the chain")
curl -s https://your-domain/api/chain/verify | python3 -m json.tool

Getting Help

GitHub Issuesgithub.com/roger296/lucaV0.5/issues — bugs and technical questions
eTail Supportsales@etailsupport.com · +44 1227 39 0441
CustomisationBespoke packages from £500 — luca-signup
Security issuessecurity@lucaledger.com — responsible disclosure
Technical Glossaryluca-accountant.com/glossary/ — plain-English explanations of every technical term

Prefer to Skip the Setup?

Get Luca fully hosted and managed for just £20/month — no server, no Docker, no deployment. We handle everything. Claude Co-Work Pro ($20/month) is still required.

Get Hosted Luca — £20/month Talk to Us First