DIY Installation Instructions
From a bare VPS to a fully working AI accounts department — step by step. Estimated time: 2–3 hours.
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 month — sign up here.
Get it set up for meArchitecture Overview
Before you start, here is a plain-English picture of what you are building and where each component runs.
Luca General Ledger API (Node.js/Docker), PostgreSQL database, Merkle Chain audit files, nginx, SSL certificate, MCP server endpoint.
Claude desktop app (Co-Work mode) with Luca Skills installed. Communicates with your VPS over HTTPS. Your inbox folder for dropping documents.
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.
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.
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
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.
Complete registration and verify your email address.
Add a payment method. Liquid Web accepts card and PayPal.
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:
| Setting | Value |
|---|---|
| Operating System | Ubuntu 24.04 LTS (64-bit) |
| CPU | 2 vCPU minimum — 4 vCPU recommended |
| RAM | 4 GB minimum — 8 GB recommended |
| Storage | 40 GB SSD minimum — 80 GB SSD recommended (Merkle Chain files grow over time) |
| Network | Static IP address (required for domain resolution) |
| Backups | Enable automated daily backups — strongly recommended |
Set a strong root password or, better, add your SSH public key for keyless authentication.
Click Create and wait 1–2 minutes for the server to boot.
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.
Log into your domain registrar's DNS control panel.
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.Wait 5–15 minutes for DNS to propagate. Verify with:
# Run this on your computer
nslookup accounts.yourbusiness.comThe 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.
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.
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
| Prompt | What to enter |
|---|---|
| Company name | Your business name — displayed in the Luca admin UI |
| Domain | The full domain from step 1.3 (e.g. accounts.yourbusiness.com) |
| Admin email | Your email — used for the initial admin account and SSL renewal alerts |
| Admin password | A strong password (12+ characters, mixed types) |
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.
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
Go to claude.ai and sign up or sign in to your Anthropic account.
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
Visit claude.ai/download and download the installer for your OS.
macOS: Open the .dmg and drag Claude to your Applications folder.
Windows: Run the installer and follow the on-screen steps.
Launch the Claude app and sign in with your Anthropic account.
Confirm your Pro subscription is active — you should see "Pro" in the account menu.
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.
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.
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.
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.
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
Open https://your-domain and sign in with your admin credentials.
Navigate to Admin → Co-Work Credentials in the sidebar.
Click + Generate credentials.
You receive three values: the MCP Server URL (
https://your-domain/mcp), a Client ID, and a Client Secret.
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
Open the Claude desktop app.
Go to Settings → Customize → Connectors → Add connector.
Fill in the form:
| Field | Value |
|---|---|
| Name | My Luca Ledger (or any name you prefer) |
| Remote MCP Server URL | https://your-domain/mcp |
| OAuth Client ID | The Client ID from Step 5.1 |
| OAuth Client Secret | The Client Secret from Step 5.1 |
Click Connect. Your browser will open the Luca login page for OAuth authorisation.
Sign in with your Luca admin credentials and click Authorise.
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.
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
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.
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 ledgerThe 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
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/mcpshould 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-domainand 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 Issues | github.com/roger296/lucaV0.5/issues — bugs and technical questions |
| eTail Support | sales@etailsupport.com · +44 1227 39 0441 |
| Customisation | Bespoke packages from £500 — luca-signup |
| Security issues | security@lucaledger.com — responsible disclosure |
| Technical Glossary | luca-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.