What words would you leave behind?
Aeterna is a dead man's switch. You write messages. You check in regularly. If you stop checking in, your messages are delivered. It's that simple. And that important.
Aeterna is a dead man's switch. You write messages. You check in regularly. If you stop checking in, your messages are delivered. It's that simple. And that important.
Aeterna holds these words. It watches. It waits. And when the time comes, it delivers.
Automatic delivery of your messages and files to your loved ones if you fail to check in.
Messages and attachments are encrypted at rest (AES-256-GCM) on your private server.
Securely attach sensitive documents, photos, or instructions to your switches.
Trigger external services, home automation, or custom scripts when your switch is activated.
Attachments are automatically deleted from the server immediately after delivery.
Simple check-in mechanism via web UI or a quick-link from your trusted email.
From a one-click wizard to fully custom deployment. You are in control.
# We recommend using our interactive installer
$ git clone https://github.com/alpyxn/aeterna.git
$ cd aeterna
$ ./install.sh
# The script handles Nginx configuration, Let's Encrypt SSL,
# and encryption key generation automatically.
# 1. Generate encryption key
$ mkdir -p secrets
$ openssl rand -base64 32 | tr -d '\n' > secrets/encryption_key
$ chmod 600 secrets/encryption_key
# 2. Configure environment
$ cp .env.production.example .env && nano .env
# 3. Start services (Exposes 127.0.0.1:8080 & 127.0.0.1:8081)
$ docker compose -f docker-compose.proxy.yml up -d
# You are not bound to Docker. Aeterna can be built natively.
# 1. Backend (Go 1.21+)
$ cd backend && go build -o main .
# Run the binary via systemd
# 2. Frontend (Node.js)
$ cd frontend && npm install && npm run build
# Serve the 'dist' folder with your web server
Designed to be lightweight, fast, and entirely self-contained. Run it anywhere from a Raspberry Pi to a massive enterprise cluster with Docker or Native Bare-Metal deployments.
# Update to the latest version
$ ./install.sh --update
# Create a full backup
$ ./install.sh --backup