Home server installation

Ubuntu 24.04 · Private LAN HTTP · Development/testing

Installation choices · User guide

This configuration uses unencrypted HTTP. Use only on a trusted private LAN with test data. Never forward TCP 8090 from your router. The iOS development build must explicitly permit local HTTP.

1. Prepare Ubuntu

Install Ubuntu 24.04, create a non-root account with sudo access, and open a terminal.

sudo apt update
sudo apt install -y git ca-certificates curl python3 python3-cryptography
mkdir -p ~/git/listmyday
git clone https://gitlab.com/careboard/listmyday-server.git ~/git/listmyday/listmyday-server
cd ~/git/listmyday/listmyday-server
python3 -c 'from cryptography.hazmat.primitives.ciphers.aead import AESGCM'

2. Install the server

bash install.sh new
sudo loginctl enable-linger "$(id -un)"
ip -4 addr

Find the computer's actual private IPv4 address. For example, replace 192.168.1.50 below with that address:

bash tools/bootstrap/home-http.sh 192.168.1.50

3. Restrict the network

If UFW is active, allow port 8090 only from your own home subnet (example below; replace with your real subnet). Do not allow it from everywhere.

sudo ufw allow from 192.168.1.0/24 to any port 8090 proto tcp
sudo ufw status verbose

4. Connect devices

Use http://192.168.1.50:8090 in a development iOS app build that permits local HTTP. Keep caregiver approval and device authentication enabled. An App Store build may reject HTTP.

5. Verify and maintain

systemctl --user status listmyday.service --no-pager
systemctl --user status listmyday-deletion.timer --no-pager
curl -fsS http://192.168.1.50:8090/v1/health

To update, pull GitLab changes and run bash install.sh upgrade. For complete details and security limitations, see the maintained home installation runbook.

Automated installation verification

Install jq if it is not already available. The verifier reports PASS/FAIL and writes a structured JSON diagnostic file in logs/verification/. No household secrets are included. A passing result does not replace firewall, backup-restore, or external exposure checks.

bash tools/bootstrap/verify.sh home 192.168.1.50

Replace the example IP with the home server's actual address where applicable. Inspect the generated JSON with jq . REPORT_PATH.