Public-cloud deployment of a single-user expense tracker: - 4-container stack: Caddy (HTTPS via Let's Encrypt), nginx (React/Vite SPA), Express API, Postgres 16 - Repeatable deployment via prepare-app.sh using only OCI CLI (no web console) - Persistent Postgres volume, auto-restart policies, healthchecks, backup + restore scripts - DuckDNS dynamic DNS for the public hostname; secrets isolated to gitignored .env Author: Gigi Saji Live URL: https://savesave.duckdns.org
29 lines
999 B
Plaintext
29 lines
999 B
Plaintext
# Copy this file to .env and fill in real values.
|
|
# .env is gitignored — never commit secrets.
|
|
|
|
# ---- Database ----
|
|
POSTGRES_USER=expenses
|
|
POSTGRES_DB=expenses
|
|
# Leave empty and prepare-app.sh will generate a strong random password
|
|
POSTGRES_PASSWORD=
|
|
|
|
# ---- DNS / HTTPS ----
|
|
# Your DuckDNS hostname (without https://), e.g. myexpenses.duckdns.org
|
|
DUCKDNS_DOMAIN=
|
|
# Your DuckDNS token (https://www.duckdns.org/ → Sign in → copy token)
|
|
DUCKDNS_TOKEN=
|
|
# Email Let's Encrypt will use for renewal notices
|
|
LE_EMAIL=
|
|
|
|
# ---- OCI / VM ----
|
|
# Display name for the new VM (kept distinct from existing gymsys-server)
|
|
OCI_VM_NAME=sk1-expense-tracker
|
|
# OCID of compartment to deploy into (default: tenancy root)
|
|
OCI_COMPARTMENT_ID=
|
|
# Path to your SSH public key (used to log into the VM)
|
|
OCI_SSH_PUBLIC_KEY_PATH=~/.ssh/id_ed25519.pub
|
|
# Path to your SSH private key (used by scripts to ssh in)
|
|
OCI_SSH_PRIVATE_KEY_PATH=~/.ssh/id_ed25519
|
|
# Availability domain
|
|
OCI_AVAILABILITY_DOMAIN=Cekz:EU-ZURICH-1-AD-1
|