InboxorcistInboxorcist

Single Binary

Deploy Inboxorcist as a single executable with zero dependencies.

The simplest way to run Inboxorcist. A single ~90MB executable with everything included - no Docker, no Node.js, no dependencies.

Features

  • Zero Dependencies - Just download and run
  • Auto-Configuration - Secure secrets generated on first run
  • Database Choice - SQLite (default) or PostgreSQL for cloud deployments
  • Cross-Platform - Linux, macOS, and Windows support
  • Auto-Browser - Opens your browser automatically

Quick Install

curl -fsSL https://inboxorcist.com/install.sh | bash

This will:

  1. Detect your architecture (Apple Silicon or Intel)
  2. Download the latest release
  3. Extract to ~/.inboxorcist
  4. Ask if you want to use SQLite (default) or PostgreSQL

Then start:

~/.inboxorcist/inboxorcist

Add to PATH (run from anywhere):

echo 'export PATH="$HOME/.inboxorcist:$PATH"' >> ~/.zshrc
source ~/.zshrc
inboxorcist
curl -fsSL https://inboxorcist.com/install.sh | bash

This will:

  1. Detect your architecture (x64 or ARM64)
  2. Download the latest release
  3. Extract to ~/.local/share/inboxorcist (XDG compliant)
  4. Ask if you want to use SQLite (default) or PostgreSQL

Then start:

~/.local/share/inboxorcist/inboxorcist

Add to PATH (run from anywhere):

echo 'export PATH="$HOME/.local/share/inboxorcist:$PATH"' >> ~/.bashrc
source ~/.bashrc
inboxorcist

Custom Install Directory:

INSTALL_DIR=~/apps/inboxorcist curl -fsSL https://inboxorcist.com/install.sh | bash

Open PowerShell and run:

irm inboxorcist.com/install.ps1 | iex

This will:

  1. Download the latest release
  2. Extract to %LOCALAPPDATA%\Inboxorcist
  3. Ask if you want to use SQLite (default) or PostgreSQL
  4. Optionally start the application

Then start:

& "$env:LOCALAPPDATA\Inboxorcist\inboxorcist.exe"

Add to PATH (run from anywhere):

[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";$env:LOCALAPPDATA\Inboxorcist", "User")
# Restart PowerShell, then:
inboxorcist

Manual Download

Download from GitHub Releases:

Apple Silicon (M1/M2/M3):

curl -LO https://github.com/inboxorcist/inboxorcist/releases/latest/download/inboxorcist-darwin-arm64.tar.gz
tar -xzf inboxorcist-darwin-arm64.tar.gz
cd inboxorcist
./inboxorcist

Intel Mac:

curl -LO https://github.com/inboxorcist/inboxorcist/releases/latest/download/inboxorcist-darwin-x64.tar.gz
tar -xzf inboxorcist-darwin-x64.tar.gz
cd inboxorcist
./inboxorcist

x64 (most servers):

curl -LO https://github.com/inboxorcist/inboxorcist/releases/latest/download/inboxorcist-linux-x64.tar.gz
tar -xzf inboxorcist-linux-x64.tar.gz
cd inboxorcist
./inboxorcist

ARM64 (Raspberry Pi, AWS Graviton):

curl -LO https://github.com/inboxorcist/inboxorcist/releases/latest/download/inboxorcist-linux-arm64.tar.gz
tar -xzf inboxorcist-linux-arm64.tar.gz
cd inboxorcist
./inboxorcist
  1. Download inboxorcist-windows-x64.zip
  2. Extract the ZIP file
  3. Open the extracted folder
  4. Double-click inboxorcist.exe

What's Included

inboxorcist/
├── inboxorcist       # Single executable (~90MB)
├── public/           # Frontend assets
├── drizzle/
│   ├── sqlite/       # SQLite migrations
│   └── pg/           # PostgreSQL migrations
├── data/             # SQLite database (auto-created if using SQLite)
└── .env              # Configuration (auto-generated on first run)

First Run

On first run, the binary automatically:

  1. Generates secure secrets - JWT_SECRET and ENCRYPTION_KEY are created automatically
  2. Creates .env file - With auto-generated configuration
  3. Runs database migrations - For SQLite or PostgreSQL (based on your choice during install)
  4. Opens your browser - Automatically opens the setup page
./inboxorcist

The first run opens http://localhost:6616/setup where you'll configure Google OAuth credentials.

Configuration

Database Choice

During installation, you'll be asked to choose your database:

  • SQLite (default) - No setup required. Data stored locally in data/. Best for personal use.
  • PostgreSQL - Recommended for cloud deployments or when you need data persistence across machines.

If you chose PostgreSQL, provide your connection URL when prompted:

postgresql://user:password@host:5432/dbname

You can change the database later by editing .env and adding/removing DATABASE_URL.

Environment Variables

The .env file is auto-generated on first run:

# Auto-generated secure configuration
JWT_SECRET=t3HZFTvLM6+HCCR+/5EZTFsrQIToQisyfE54ODxBl2Q=
ENCRYPTION_KEY=5703e421738aa7ae70cb0fefd8bb7671cff812f82ca0b84bfdb3b7d0810bc5f5

# Server port (default: 6616)
PORT=6616

# Google OAuth credentials (configure via /setup UI or edit this file)
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret

# PostgreSQL connection (only if you chose PostgreSQL during install)
# DATABASE_URL=postgresql://user:password@host:5432/dbname

# App URL - used for OAuth redirect URI (optional)
# Default: http://localhost:6616
# APP_URL=https://your-domain.com

Changing the Port

# Edit .env
PORT=8080

# Restart
./inboxorcist

Custom Data Directory

By default, data is stored in the data/ folder next to the binary. To change:

export DATA_DIR=/path/to/custom/data
./inboxorcist

Running as a Service

Create ~/Library/LaunchAgents/com.inboxorcist.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.inboxorcist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/you/.inboxorcist/inboxorcist</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/you/.inboxorcist</string>
</dict>
</plist>

Then load the service:

launchctl load ~/Library/LaunchAgents/com.inboxorcist.plist

Create /etc/systemd/system/inboxorcist.service:

[Unit]
Description=Inboxorcist
After=network.target

[Service]
Type=simple
User=your-user
WorkingDirectory=/home/your-user/.local/share/inboxorcist
ExecStart=/home/your-user/.local/share/inboxorcist/inboxorcist
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Then enable and start:

sudo systemctl daemon-reload
sudo systemctl enable inboxorcist
sudo systemctl start inboxorcist
  1. Open Task Scheduler (search in Start menu)
  2. Click Create Basic Task
  3. Name it "Inboxorcist"
  4. Set trigger to At startup
  5. Set action to Start a program
  6. Browse to inboxorcist.exe in the inboxorcist folder
  7. Set Start in to the inboxorcist folder path
  8. Click Finish

Reverse Proxy (Optional)

Nginx

server {
    listen 80;
    server_name inboxorcist.example.com;

    location / {
        proxy_pass http://127.0.0.1:6616;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

If using a reverse proxy with HTTPS, set APP_URL in your .env file:

APP_URL=https://inboxorcist.example.com

Building from Source

# Clone the repository
git clone https://github.com/inboxorcist/inboxorcist.git
cd inboxorcist

# Install dependencies
bun install

# Build for current platform
bun run build:binary

# Build for specific platform
bun run build:binary:linux       # Linux x64
bun run build:binary:linux-arm   # Linux ARM64
bun run build:binary:macos       # macOS Apple Silicon
bun run build:binary:macos-intel # macOS Intel
bun run build:binary:windows     # Windows x64

Distribution will be created in the dist/ folder.

Troubleshooting

Port Already in Use

# Check what's using the port
lsof -i :6616

# Use a different port
PORT=8080 ./inboxorcist

Permission Denied

chmod +x ./inboxorcist

Browser Doesn't Open

The browser auto-open feature requires a graphical environment. On headless servers, manually open http://your-server:6616 in your browser.

Database Issues

# Reset database
rm -rf data/
./inboxorcist

On this page