Installation
Ideon is designed to be self-hosted and easy to deploy using Docker.
Requirements
- Docker (Engine 24+)
- Docker Compose (v2+)
If you can run containers, you can run Ideon.
Automated Installation (Recommended)
Ideon includes an ultra-automated installation script (install.sh) that handles everything for you: dependency checks, secret generation, environment configuration, and startup.
1. Clone the repository
git clone https://github.com/3xpyth0n/ideon.git
cd ideon
2. Run the wizard
./install.sh
This interactive wizard will:
- Check prerequisites: Verifies Docker, Docker Compose, and OpenSSL.
- Configure environment: Generates a
.envfile with secure random keys. - Setup SMTP (Optional): Configures email for invitations.
- Launch Ideon: Starts the application.
Configuration (.env)
The application is configured via environment variables.
App Settings
APP_PORT: Port to expose (default:3000)APP_URL: Public URL (e.g.,https://ideon.example.com)TIMEZONE: Server timezone (default:UTC)
Database
DB_HOST: Hostname (default:ideon-dbfor Docker)DB_PORT: Port (default:5432)DB_NAME: Database nameDB_USER: UsernameDB_PASS: Password
Security
SECRET_KEY: Critical. 32+ char random string used for signing sessions and encryption.
SMTP (Email)
Required for invitations and magic links.
SMTP_HOST: Mail server hostSMTP_PORT: Port (e.g., 587)SMTP_USER: UsernameSMTP_PASSWORD: PasswordSMTP_FROM_EMAIL: Sender addressSMTP_USE_TLS:trueorfalse
Manual Setup (Docker Compose)
For manual deployment, create a docker-compose.yml:
services:
ideon-app:
image: ghcr.io/3xpyth0n/ideon:latest
container_name: ideon-app
environment:
- DB_HOST=ideon-db
- DB_PORT=5432
- DB_USER=ideon
- DB_PASS=ideon
- DB_NAME=ideon
- APP_PORT=3000
- APP_URL=http://localhost:3000
- SECRET_KEY=change_this_to_a_secure_random_string
depends_on:
ideon-db:
condition: service_healthy
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ideon-app-data:/app/storage
ideon-db:
image: postgres:15-alpine
container_name: ideon-db
environment:
- POSTGRES_USER=ideon
- POSTGRES_PASSWORD=ideon
- POSTGRES_DB=ideon
volumes:
- ideon-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ideon"]
interval: 5s
timeout: 5s
retries: 5
volumes:
ideon-app-data:
ideon-db-data: