Not currently hosted. The containers are stopped, so the site does not answer.
A multi-purpose web platform, built with Django and shipped with Docker Compose on an Ubuntu server. It ran at aetherus.net and brought its own mail server along.
What it does
Real-time chat
WebSocket messaging built on Django Channels. With avatars, timestamps, a typing indicator, a counter of who is online, and automatic reconnect after a drop.
Cloud storage
Drag and drop upload with file preview, a 50 MB limit per file and a 500 MB quota per user. Files can be shared by link, split into a personal and a shared tab. Objects live in Hetzner S3.
Dashboard and accounts
A landing view with widgets for storage usage, file count, recent files and chat activity. Alongside it, profiles with an avatar and changes to username, email and password, plus a password reset by email with a token that expires after an hour.
Stoxview
A stock market viewer served by a dedicated Node.js service behind the same reverse proxy. It draws on several market data sources and runs as its own container next to the Django application.
Architecture
Caddy accepts all traffic and manages the certificates itself. Static files are served straight from a shared volume, everything else goes to Daphne, the ASGI server in front of Django.
Internet │ ├─ aetherus.net ──▶ Caddy (:80/:443) │ │ │ ├─ /static/* ──▶ staticfiles volume │ ├─ /stoxview-api/* ──▶ Stoxview (Node.js :5000) │ └─ /* ──▶ Daphne (Django ASGI :8000) │ │ │ ├──▶ SQLite │ ├──▶ Redis │ └──▶ Hetzner S3 │ └─ mail.aetherus.net ──▶ Caddy ──▶ Mailcow
Containers and stack
| Container | Purpose |
|---|---|
| caddy | Reverse proxy, TLS, static files |
| backend | Django 5.2 with Channels, run through Daphne |
| stoxview | Node.js service for market data |
| aetherus-redis | Channel layer and cache |
The database is SQLite, bind-mounted from the host rather than living in the image. Alongside it, self-hosted mail through Mailcow on its own Docker network, object storage in Hetzner S3, and rate limiting on the authentication endpoints.
Deployment
Every push to main triggers a deployment through GitHub Actions. The run signs in to the server over SSH, resets hard onto the remote branch, rebuilds the backend and stoxview images, force-recreates the containers and removes orphans. The migrations run afterwards.
Credentials live only in an .env at the project root and are never committed. Caddy obtains and renews the certificates for both names by itself, for the application as well as for the mail server's web interface.