Clear community instance (operator guide)¶
Glassy Clear is a community membership — a private community that lives inside Glassy, with early access to new tools, a downloads store, roadmap input, and the unrestricted single-user Docker build. For what the membership includes, see the Clear page.
This page is the operator runbook for running the Clear community instance — the private, Clear-mode deployment that hosts the membership. It is not a "self-hosted tier" that end users buy; members get their own single-user Docker build separately (see Self-hosting Glassy).
The full operator runbook lives in the application repo at deploy/clear/README.md.
What the Clear community instance is¶
The Clear community instance is the same Glassy application binary, configured at deploy time with INSTANCE_ID=clear. At that point:
- Pro upsells are hidden. The Pro pricing card, AI upgrade modal, Public Window upsell, Pro-only checkout flows, FAQ pricing rows, and landing-page Pro teaser all branch on
isClearInstance()and either hide or redirect. - Clear membership plans remain available. Glassy Clear ($80/mo or $300/yr) and the GlassyCalc sidecar ($7 one-time) continue to be purchasable.
pro_*plans are server-rejected. The commerce checkout endpoint returns400 Pro plans are not available on this instanceif apro_*plan is requested on a Clear instance, even if a stale client tries.- The public app.glassy.fyi instance is unaffected — Clear gating is opt-in via the
INSTANCE_IDenv var; default deployments behave exactly as before.
What you need¶
- A host with Docker and Docker Compose (Linux recommended).
- A Stripe account with the Clear monthly + yearly prices (and optionally
clear_lifetimeif you want to grandfather an existing cohort). - A domain pointed at your host. TLS via your usual reverse proxy (Caddy / Cloudflare / nginx).
Cloud vs self-hosted: what works where¶
Some features require the Glassy server to reach services on your machine
(127.0.0.1). A cloud-hosted server cannot do this. Self-hosting on your
own machine is required for:
| Capability | Cloud (app.glassy.fyi) | Self-hosted (this) |
|---|---|---|
| Notes, AI, capture, companion | Yes | Yes |
| Live Obsidian vault sync | No (server cannot reach your localhost) | Yes |
| Ollama local AI | No | Yes |
| Data location | Cloud VM | Your machine |
For a neutral self-host recipe (not Clear-specific), see
deploy/selfhost/docker-compose.yml in the application repo.
Security recommendations¶
For any self-hosted deployment, we recommend:
- SSH: Disable root login and password authentication. Use key-based auth only.
- Firewall: Enable UFW or equivalent, allowing only ports you actively use (e.g., 22, 80, 443, 3000).
- Fail2ban: Install and enable fail2ban with the sshd jail for brute-force protection.
- File permissions: Ensure .env.production and your SQLite database are 600 (owner read/write only).
- Updates: Enable unattended-upgrades for automatic security patches.
Quick start¶
# Note: The 0Reliance/glassy repo is private during beta. Request access first.
git clone https://github.com/0Reliance/glassy.git
cd glassy/deploy/clear
cp .env.example .env
# Edit .env — set INSTANCE_ID=clear, INSTANCE_ACCESS_MODE_DEFAULT,
# Stripe keys, JWT secret, allowed origins, etc.
docker compose up -d
The Compose file launches the app with INSTANCE_ID=clear baked in. On first boot the database is migrated automatically.
Key environment variables¶
| Variable | Effect |
|---|---|
INSTANCE_ID=clear |
Activates the Clear gating SSOT (isClearInstance() returns true). |
INSTANCE_ACCESS_MODE_DEFAULT=private |
Optional. Hides the entire site from logged-out visitors; deep-links resume after sign-in. See Private instance mode once that page is published, or docs/private-instance-mode.md in the repo. |
STRIPE_SECRET_KEY / STRIPE_PUBLISHABLE_KEY |
Stripe live keys for your Clear instance. |
ENABLE_CLEAR_LIFETIME / VITE_ENABLE_CLEAR_LIFETIME |
Off by default. Only enable if you are migrating a grandfathered Clear Lifetime cohort. New Clear Lifetime sales are not offered on the public instance. |
The full list of environment variables is in deploy/clear/.env.example.
Public + private modes¶
A Clear instance can be combined with instance-wide private mode (see Private instance mode — runbook at docs/private-instance-mode.md in the application repo). Any combination is supported:
| Visibility | Registration | Use case |
|---|---|---|
| Public | Open | Public Clear instance with self-serve signup |
| Public | Closed | Public Clear instance with admin-issued invitations |
| Private | Open | Members-only site with public registration form |
| Private | Closed | Fully closed Clear instance — admin invites only |
Stripe configuration¶
Clear instances resolve priceId from the Stripe catalog by lookup key at boot. Provision these lookup keys in Stripe (Dashboard → Products → Prices → Edit price → "Lookup key"):
clear_monthlyclear_yearly- (optional, only if grandfathering)
clear_lifetime ai_topup_10/ai_topup_20/ai_topup_50(one-time AI credit packs)
You do not need any pro_* lookup keys on a Clear instance — those routes are gated server-side.
Upgrading¶
The Clear community instance follows the public Glassy release cadence. To upgrade:
Database migrations run automatically on container start.
Pointers¶
- Application repo:
https://github.com/0Reliance/glassy - Operator runbook:
deploy/clear/README.md - Clear pricing & policy: see the in-app Settings → Billing screen on a Clear instance.
- Pricing source of truth: Pro $17/mo or $100/yr · Clear $80/mo or $300/yr · AI top-ups $10/$20/$50 → 100k/200k/500k credits, never expire.