Server SSH
ssh root@46.62.213.56
This document provides a high-level overview of the server architecture, the services running on it, and how to access them.
Portainer A web dashboard for managing Docker containers. Use it to start/stop stacks, view logs, or update configurations.
Docker Compose
The main configuration is in /opt/websitebackend/docker-compose.yml. This file defines all services and is used by Portainer to deploy the stack.
Git & GitHub Actions
Pushing to the main branch of the websitebackend repository triggers a GitHub Action that SSHes into the server, pulls the latest code, and applies the latest Directus schema snapshot from snapshots/schema.yaml.
Caddy
Acts as a reverse proxy, routing traffic from the Cloudflare Tunnel to the correct service. It also handles security headers. The configuration file is at /opt/websitebackend/Caddyfile.
Directus The headless CMS, connected to the PostgreSQL database.
PostgreSQL The main database with the PostGIS extension for geospatial data.
Plausible An analytics service, connected to both PostgreSQL and ClickHouse.
ClickHouse
A column-oriented database used for Plausible’s event data. Config files are in /opt/websitebackend/clickhouse/.
Netdata A real-time server monitoring dashboard.
Server SSH
ssh root@46.62.213.56
Portainer
Directus Admin
Plausible Analytics
Netdata
The Cloudflare Tunnel creates a secure, private connection from Cloudflare directly to the server, bypassing the main firewall for web traffic.
The cloudflared service runs on the server and reads its configuration from /etc/cloudflared/config.yml.
docs and portainer are protected by Cloudflare Access (Zero Trust). Users must authenticate via email + OTP before accessing any service. Allowed emails are managed in reusable access policies at Cloudflare One dashboard.
| URL | Tunnel Target |
|---|---|
admin.innovspatial.com | Caddy (port 80) → Directus |
analytics.innovspatial.com | Caddy (port 80) → Plausible |
portainer.innovspatial.com | Portainer (port 9001) |
docs.innovspatial.com | Cloudflare Pages → This website |
Cloudflare DNS uses CNAME records pointing to the tunnel ID for these subdomains.