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
One-Line Install (Recommended)
curl -fsSL https://inboxorcist.com/install.sh | bashThis will:
- Detect your architecture (Apple Silicon or Intel)
- Download the latest release
- Extract to
~/.inboxorcist - Ask if you want to use SQLite (default) or PostgreSQL
Then start:
~/.inboxorcist/inboxorcistAdd to PATH (run from anywhere):
echo 'export PATH="$HOME/.inboxorcist:$PATH"' >> ~/.zshrc
source ~/.zshrc
inboxorcistcurl -fsSL https://inboxorcist.com/install.sh | bashThis will:
- Detect your architecture (x64 or ARM64)
- Download the latest release
- Extract to
~/.local/share/inboxorcist(XDG compliant) - Ask if you want to use SQLite (default) or PostgreSQL
Then start:
~/.local/share/inboxorcist/inboxorcistAdd to PATH (run from anywhere):
echo 'export PATH="$HOME/.local/share/inboxorcist:$PATH"' >> ~/.bashrc
source ~/.bashrc
inboxorcistCustom Install Directory:
INSTALL_DIR=~/apps/inboxorcist curl -fsSL https://inboxorcist.com/install.sh | bashOpen PowerShell and run:
irm inboxorcist.com/install.ps1 | iexThis will:
- Download the latest release
- Extract to
%LOCALAPPDATA%\Inboxorcist - Ask if you want to use SQLite (default) or PostgreSQL
- 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:
inboxorcistManual 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
./inboxorcistIntel 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
./inboxorcistx64 (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
./inboxorcistARM64 (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- Download
inboxorcist-windows-x64.zip - Extract the ZIP file
- Open the extracted folder
- 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:
- Generates secure secrets -
JWT_SECRETandENCRYPTION_KEYare created automatically - Creates
.envfile - With auto-generated configuration - Runs database migrations - For SQLite or PostgreSQL (based on your choice during install)
- Opens your browser - Automatically opens the setup page
./inboxorcistThe 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/dbnameYou 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.comChanging the Port
# Edit .env
PORT=8080
# Restart
./inboxorcistCustom Data Directory
By default, data is stored in the data/ folder next to the binary. To change:
export DATA_DIR=/path/to/custom/data
./inboxorcistRunning 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.plistCreate /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.targetThen enable and start:
sudo systemctl daemon-reload
sudo systemctl enable inboxorcist
sudo systemctl start inboxorcist- Open Task Scheduler (search in Start menu)
- Click Create Basic Task
- Name it "Inboxorcist"
- Set trigger to At startup
- Set action to Start a program
- Browse to
inboxorcist.exein the inboxorcist folder - Set Start in to the inboxorcist folder path
- 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.comBuilding 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 x64Distribution 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 ./inboxorcistPermission Denied
chmod +x ./inboxorcistBrowser 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