Pale means "to speak" in Haitian Creole

Palephone

Free, open source communications software for teams that want to speak freely. Run your own calling, chat, meetings, files, PBX workflows, and compliance controls without pretending the hard enterprise dependencies are magic.

Self-hosted SIP and PBX workflows Matrix-backed chat path Admin readiness checks

One workspace for the conversations that run the business.

Palephone brings the day-to-day communication surface together while keeping provider choices visible and under tenant control.

Calling and PBX

SIP accounts, call routing, extensions, ring groups, queues, IVR, voicemail, call recording, call park, business hours, holidays, emergency calling models, and PSTN gateway readiness.

Messaging and meetings

Direct messages, rooms, channels, presence, file sharing, scheduled meetings, webinar records, lobby, polls, Q&A, reactions, whiteboard records, transcripts, and attendance.

Files and collaboration

Uploads, downloads, folders, file versions, locks, wiki pages, tasks, approvals, tabs, apps, bots, connectors, custom emojis, federation records, and automation records.

See the application, not a mockup.

These screenshots are from the current Pale desktop client connected to drcpbx.com. They show the calling surface, admin sign-in state, and the grouped admin console.

Pale desktop dialer with SIP URI entry, numeric keypad, and bottom navigation

Calling workspace

The main client keeps calls, chat, people, files, recent activity, calendar, admin, and settings in one workspace.

Pale admin sign-in form with server URL, username, password, and SSO option

Admin access

Admin features are role-based and connect to the backend server URL configured for the signed-in deployment.

Enterprise controls without hiding the dependencies.

Palephone includes the admin and governance surfaces expected in serious deployments, and it shows which outside systems still need to be installed or connected.

Compliance and security

Retention, eDiscovery, DLP, ATP quarantine records, compliance reviews, audit logs, sensitivity labels, information barriers, data residency records, MFA/session APIs, SSO records, and security score reporting.

Provider readiness

Admin reports track readiness, health, provider probes, validation, and deployment plans for systems such as LLM, STT, TTS, storage, malware scanning, CASB, PSTN, E911, and broadcast media.

Honest boundaries

Provider contracts are not the same as certified integrations. Production use still needs real services such as Matrix, coturn, PostgreSQL, ClamAV or YARA, Whisper or Vosk, Ollama or vLLM, storage providers, and carrier/E911 providers.

Download Palephone.

Installers are available for the current public builds hosted on drcpbx.com. The server API is running at this domain, and the desktop/mobile clients can be pointed at this host during setup.

Install Pale from the Linux repositories

Use the Linux repositories when you want package-managed installs instead of loose downloads. The client package is named pale. The server package is named pale-server and installs the systemd unit, service user, and example configuration file.

Debian and Ubuntu

Add the signed APT repository, update package metadata, then install the client, the server, or both.

curl -fsSL https://drcpbx.com/pale-repo.gpg | sudo tee /usr/share/keyrings/pale-repo.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/pale-repo.gpg] https://drcpbx.com/apt stable main" | sudo tee /etc/apt/sources.list.d/pale-server.list
sudo apt update
sudo apt install pale
# Server operators can also install:
sudo apt install pale-server

RHEL, Rocky, AlmaLinux, CentOS Stream, and Fedora

Add the DNF repository file, refresh metadata, then install the client, the server, or both. RPM package signing is not enabled yet, so keep the checksum file handy for release verification.

sudo curl -fsSL https://drcpbx.com/rpm/pale-server.repo -o /etc/yum.repos.d/pale-server.repo
sudo dnf makecache
sudo dnf install pale
# Server operators can also install:
sudo dnf install pale-server
curl -fsSL https://drcpbx.com/downloads/pale-client-SHA256SUMS.txt

Windows note: /downloads/Pale-Windows-Client.zip is the recommended client download because some browsers block unsigned raw .exe files before they reach disk. The raw installer remains available at /downloads/Pale-Setup.exe for manual validation. Checksums for desktop clients are published at /downloads/pale-client-SHA256SUMS.txt.

Android note: /downloads/Pale.apk is the v0.1.6 sideload-signed APK (APK Signature Scheme v2/v3). The same binary is at /downloads/current/Pale_0.1.6_android.apk. Checksums: /downloads/pale-android-SHA256SUMS.txt. If you installed an older APK with a different certificate, uninstall it first. Enable Install unknown apps for your browser/Files app on Android 14+.

The current built-in SIP registrar path requires PALE_SIP_BACKEND=udp-parser and the explicit development fallback gate for insecure UDP parsing. The default server runtime uses the PJSIP transport path and does not advertise itself as a client registrar.

Release notes.

These notes track what is actually published on drcpbx.com today: client installers, server binaries, Linux package repositories, and the operational limits that still matter for production.

Palephone client 0.1.4

July 7, 2026

This build fixes the single sign-in path. When a user signs in to Pale Server, the desktop client now provisions the matching SIP account, stores the SIP credential in the operating system keychain, and registers the account for calling without asking for a second login.

  • Server sign-in, reconnect, and Settings sign-in now all feed the same SIP registration path.
  • Existing connected sessions repair SIP registration from the saved account and keychain credential instead of showing SIP account is not registered yet.
  • Provisioned accounts continue to prefer SIP over TLS on port 5061.
  • macOS, Windows, Debian/Ubuntu, AppImage, APT, and DNF client packages are published as 0.1.4.
Checksums are published at /downloads/pale-client-SHA256SUMS.txt. The DNF client package is pale-0.1.4-1.x86_64.rpm.

Palephone client 0.1.3

July 7, 2026

This desktop client build tightens the default calling path and cleans up the compact chat composer. New and reconnected clients now register to Pale Server with SIP over TLS on port 5061 when no explicit registrar port is provided.

  • Setup now starts at https://drcpbx.com, and provisioned SIP accounts normalize to sips: on port 5061.
  • Manual SIP account saves use the same TLS-first normalization, and unsupported transport values are rejected instead of silently falling back to UDP.
  • The native PJSIP registration path keeps the registrar URI alive through account creation, fixing a TLS/TCP registration stability issue.
  • The chat composer is split into a toolbar row and a clear message row so compact desktop windows keep the input and send controls readable.
  • macOS, Windows, Debian/Ubuntu, AppImage, APT, and DNF client packages were published as 0.1.3.
Checksums are published at /downloads/pale-client-SHA256SUMS.txt. The DNF client package is pale-0.1.3-1.x86_64.rpm.

Pale Server 0.1.1+git1dad20d

July 5, 2026

This is the current public Pale Server build available from the APT and DNF repositories and from the direct Linux server download. Windows now has a Pale Server setup installer that creates the local service wrapper, config directory, shortcuts, and local secret file.

What changed

  • Published the Linux x86_64 server binary and refreshed the APT and DNF packages.
  • Added a signed APT repository for Debian and Ubuntu systems.
  • Added a DNF repository file for RHEL-compatible systems and Fedora.
  • Published SHA256 checksums for server binaries, package artifacts, and repository packages.
  • Added package-managed Linux installation paths so operators can install and upgrade Pale Server with apt or dnf.

Packaging details

  • Packages install the pale-server binary, service user, systemd unit, and example environment file.
  • The Debian package depends on the runtime libraries needed by the current server binary and recommends PostgreSQL and coturn.
  • The service does not auto-start until operators create /etc/pale/pale-server.env with their own secrets and network settings.

Install or upgrade

  • Debian and Ubuntu: add the Pale APT repository, run sudo apt update, then install or upgrade pale-server.
  • RHEL-compatible systems and Fedora: install the Pale repo file, run sudo dnf makecache, then install or upgrade pale-server.
  • Direct binary users can download the Linux tarball and verify it with the checksum file.

Verify the release

  • APT metadata is published at /apt/dists/stable/InRelease.
  • The DNF repo file is published at /rpm/pale-server.repo.
  • Checksums are published at /downloads/pale-server-SHA256SUMS.txt.
RPM package signing is not enabled yet. Use the published checksum file when verifying RPM-based deployments.

Previous client 0.1.2

July 7, 2026

This previous desktop build refreshed startup login, SIP registration, and shell navigation behavior. It remains listed for history; the current download links now point to 0.1.4.

  • The Linux Debian package is published as /downloads/pale.deb and /downloads/Pale_0.1.2_amd64.deb, and as package pale in the APT repository.
  • The recommended Windows client download is /downloads/Pale-Windows-Client.zip; MSI and raw setup files are also published as /downloads/Pale-Windows.msi and /downloads/Pale-Setup.exe.
  • The Linux RPM package is published as pale-0.1.2-1.x86_64.rpm in the DNF repository and wraps the CI-built AppImage.
  • The desktop client can be pointed at https://drcpbx.com during setup.
  • The client now shows connection and SIP registration problems directly, keeps server auto-login from creating duplicate SIP registrations, and uses a cleaner desktop side rail with a teal accent palette.
  • Admin screens include grouped navigation for core PBX, voice, meetings, contact center, files and data, security, devices, and platform areas.

Known limits in this public build

Current
  • The built-in SIP registrar path is not enabled by default in the current public server package.
  • If PALE_SIP_BACKEND=pjsip is configured without a native PJSIP-enabled server build, Pale Server keeps the HTTP API running and disables the SIP listener instead of falling back silently.
  • External systems such as Matrix, coturn, PostgreSQL, ClamAV or YARA, Whisper or Vosk, Ollama or vLLM, storage providers, PSTN, and E911 providers must be installed or connected separately for production use.
  • Provider readiness screens and API contracts do not replace provider certification or carrier acceptance testing.

Docs for getting Pale running.

These notes are meant for operators, not brochure readers. They cover the parts people usually need first: installing the server, creating users, pointing clients at the right host, and fixing the most common setup problems.

Install Pale Server on Linux with Docker Compose

Docker Compose is the quickest Linux path in this repository. It runs Pale Server with PostgreSQL, coturn, and NATS, then exposes the HTTP API on port 8090 and SIP on 5060/5061. Use this when you want the bundled stack managed together.

  1. Install Docker and Docker Compose on a Linux host.
  2. Clone the repository and enter the project directory.
  3. Generate secrets, review the generated .env, then start the stack.
git clone https://github.com/loreste/palephone.git
cd palephone
./scripts/generate-secrets.sh
docker compose up -d
curl http://localhost:8090/health

Important Linux settings

  • PALE_SERVER_TOKEN, PALE_ADMIN_PASSWORD, and PALE_STORAGE_KEY are required and must be at least 24 characters.
  • PALE_DATABASE_URL points Pale Server at PostgreSQL. Docker Compose sets this for you.
  • PALE_SIP_EXTERNAL_ADDR should be passed to Pale Server for remote SIP clients, especially when using a registrar path.
  • PALE_SIP_BACKEND=pjsip requires a native PJSIP-enabled server build. The packaged server keeps the API online and disables the SIP listener if that native backend is unavailable. The udp-parser backend is a development fallback and requires PALE_ALLOW_INSECURE_SIP_UDP=1.
For public deployments, put TLS in front of the HTTP API or set PALE_HTTP_TLS_CERT and PALE_HTTP_TLS_KEY. Open only the ports your deployment actually uses.

Install Pale Server from our Linux repositories

The production package repositories are hosted on drcpbx.com. Packages install the pale-server binary, a systemd unit, and an example environment file. They do not auto-start the service, because the server must be configured with your own secrets, database URL, TLS choices, and network settings first.

Debian and Ubuntu with apt

The APT repository is signed with the Pale repository key. This package depends on the runtime libraries Pale Server needs and recommends PostgreSQL and coturn.

curl -fsSL https://drcpbx.com/pale-repo.gpg | sudo tee /usr/share/keyrings/pale-repo.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/pale-repo.gpg] https://drcpbx.com/apt stable main" | sudo tee /etc/apt/sources.list.d/pale-server.list
sudo apt update
sudo apt install pale
# Server operators can also install:
sudo apt install pale-server

Red Hat, Rocky, AlmaLinux, CentOS Stream, and Fedora with dnf

The RPM repository is available for x86_64 systems. The RPM package declares the runtime libraries needed by the current server binary, including glibc and CA certificates, and recommends PostgreSQL and coturn. RPM package signing is not enabled yet, so verify the package checksum from the published checksum file when you deploy.

sudo curl -fsSL https://drcpbx.com/rpm/pale-server.repo -o /etc/yum.repos.d/pale-server.repo
sudo dnf makecache
sudo dnf install pale
# Server operators can also install:
sudo dnf install pale-server
curl -fsSL https://drcpbx.com/downloads/pale-client-SHA256SUMS.txt

Configure after package install

Both packages create a locked-down service user and install /etc/pale/pale-server.env.example. Copy it to the live environment file, replace every placeholder secret, then start the service.

sudo cp /etc/pale/pale-server.env.example /etc/pale/pale-server.env
sudo editor /etc/pale/pale-server.env
sudo chown root:pale /etc/pale/pale-server.env
sudo chmod 0640 /etc/pale/pale-server.env
sudo systemctl enable --now pale-server
sudo systemctl status pale-server
curl http://127.0.0.1:8080/health

Important package configuration values

  • PALE_SERVER_TOKEN, PALE_ADMIN_PASSWORD, and PALE_STORAGE_KEY must be strong values with at least 24 characters.
  • PALE_DATABASE_URL should point to your PostgreSQL database for production.
  • PALE_HTTP_ADDR=127.0.0.1:8080 is a good default when Nginx, Caddy, or another reverse proxy terminates HTTPS.
  • PALE_SIP_EXTERNAL_ADDR should be set when remote SIP clients need to reach this server.

Direct server downloads

Operators who do not want a package manager can download the release artifacts directly. The current server binaries were built on the production host from commit 8977191.

For production Linux deployments, prefer the APT or DNF package path over a loose binary. For Windows deployments, prefer the Pale Server setup installer over the raw executable because it creates the service wrapper and local config layout.

Install Pale Server on bare-metal Linux

You can run Pale Server directly on Linux without Docker. In that model, Pale Server is just a native binary managed by systemd, while PostgreSQL, coturn, TLS certificates, backups, and optional services such as NATS are installed and operated separately.

Install OS packages

sudo apt update
sudo apt install -y build-essential pkg-config python3 nasm \
  libssl-dev libasound2-dev libopus-dev uuid-dev libclang-dev clang \
  postgresql postgresql-contrib coturn curl git

Install Rust with the stable toolchain before building the server. On production hosts, pin the Rust version in your build process instead of building from an untracked shell history.

Create the database

sudo -u postgres createuser --pwprompt pale
sudo -u postgres createdb -O pale pale

Build and install the server

git clone https://github.com/loreste/palephone.git
cd palephone/src-tauri/crates/pale-server
cargo build --release --bin pale-server
sudo install -m 0755 ../../target/release/pale-server /usr/local/bin/pale-server
id -u pale >/dev/null 2>&1 || sudo useradd --system --home /var/lib/pale --create-home --shell /usr/sbin/nologin pale
sudo install -d -o root -g pale -m 0750 /etc/pale
sudo install -d -o pale -g pale -m 0750 /var/lib/pale

Create /etc/pale/pale-server.env

PALE_HTTP_ADDR=127.0.0.1:8080
PALE_SIP_ADDR=0.0.0.0:5060
PALE_DATA_DIR=/var/lib/pale
PALE_DATABASE_URL="host=localhost user=pale password=replace-with-db-password dbname=pale"
PALE_SERVER_TOKEN=replace-with-strong-token-24-plus-chars
PALE_ADMIN_PASSWORD=replace-with-strong-admin-password
PALE_STORAGE_KEY=replace-with-strong-storage-key
PALE_ADMIN_USERNAME=admin
PALE_SIP_BACKEND=pjsip
RUST_LOG=info
sudo chown root:pale /etc/pale/pale-server.env
sudo chmod 0640 /etc/pale/pale-server.env

Create a systemd service

sudo tee /etc/systemd/system/pale-server.service >/dev/null <<'EOF'
[Unit]
Description=Pale Server
After=network-online.target postgresql.service
Wants=network-online.target

[Service]
User=pale
Group=pale
EnvironmentFile=/etc/pale/pale-server.env
ExecStart=/usr/local/bin/pale-server
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ReadWritePaths=/var/lib/pale

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now pale-server
curl http://127.0.0.1:8080/health
In bare-metal installs, you own the dependency lifecycle. Keep PostgreSQL, coturn, certificates, firewall rules, and backups patched and tested like any other production service.

Install Pale Server on Windows

The recommended Windows path is the Pale Server setup installer. It installs the server binary, adds the Pale logo, creates a Windows service through WinSW, writes local config under C:\\ProgramData\\Pale Server, and keeps generated secrets on the machine.

  1. Download PaleServerSetup.exe, or pin the versioned installer at PaleServerSetup-0.1.1-x64.exe.
  2. Run the installer as Administrator.
  3. Leave Run Pale Server configuration after install selected.
  4. Choose the HTTP bind address, admin username, admin password, optional database URL, and SIP backend.
  5. Use the Start Menu shortcuts to configure, start, stop, restart, or open the health check.

The manual zip and direct executable remain available for operators who already have their own service management and configuration process.

Set the required environment variables

$env:PALE_SERVER_TOKEN = "replace-with-strong-token-24-plus-chars"
$env:PALE_ADMIN_PASSWORD = "replace-with-strong-admin-password"
$env:PALE_STORAGE_KEY = "replace-with-strong-storage-key"
$env:PALE_HTTP_ADDR = "0.0.0.0:8080"
$env:PALE_DATABASE_URL = "host=localhost user=pale password=... dbname=pale"
C:\Pale\Server\pale-server.exe

Verify with curl http://localhost:8080/health. If Windows Firewall is enabled, allow the HTTP API and any SIP/TURN ports you plan to expose.

How-tos

Create an admin user

Pale Server ships with an admin account controlled by PALE_ADMIN_USERNAME and PALE_ADMIN_PASSWORD. You can also create users through the server CLI.

docker compose exec pale-server pale-server user create \
  --username sip:admin@example.com \
  --display-name "Admin" \
  --password "replace-with-a-strong-password" \
  --role admin

On a bare-metal Linux server, load the same environment file first so the CLI connects to the same data store:

set -a
. /etc/pale/pale-server.env
set +a
pale-server user create \
  --username sip:admin@example.com \
  --display-name "Admin" \
  --password "replace-with-a-strong-password" \
  --role admin

Point a client at your server

  1. Install the Palephone client for macOS, Linux, Windows, or Android.
  2. Open Settings, set the server URL, and sign in with the SIP URI and password for that user.
  3. Admin appears only for users whose server role is admin.

Check server health

curl https://your-domain.example/health

A healthy server returns JSON with ok, service, and status fields.

TLS guidance

We recommend TLS anywhere Pale is reachable outside a trusted local machine. The server handles sign-in, bearer tokens, admin actions, files, call records, presence, and meeting data. Sending that over plain HTTP makes credentials and session traffic easier to intercept.

HTTP API

The simplest production pattern is to terminate HTTPS at a reverse proxy such as Nginx, Caddy, or Traefik, then proxy to Pale Server on localhost or a private network. Pale Server can also serve TLS directly when PALE_HTTP_TLS_CERT and PALE_HTTP_TLS_KEY are set.

PALE_HTTP_ADDR=0.0.0.0:8080
PALE_HTTP_TLS_CERT=/etc/letsencrypt/live/your-domain/fullchain.pem
PALE_HTTP_TLS_KEY=/etc/letsencrypt/live/your-domain/privkey.pem

SIP signaling

SIP TLS should be used when SIP traffic crosses networks you do not fully control. Set PALE_SIP_TLS_CERT and PALE_SIP_TLS_KEY to enable SIP TLS, and expose port 5061 only when your deployment actually uses it.

PALE_SIP_TLS=true
PALE_SIP_TLS_CERT=/etc/letsencrypt/live/your-domain/fullchain.pem
PALE_SIP_TLS_KEY=/etc/letsencrypt/live/your-domain/privkey.pem
PALE_SIP_TLS_PORT=5061
TLS protects signaling and API traffic. Media privacy still depends on your media path, SRTP settings, and TURN deployment, so test calls from the real networks your users will use.

Troubleshooting

Sign-in says unauthorized

  • Confirm the client is using the same server URL you tested with /health.
  • Check the SIP URI format. Use sip:name@domain when the user was created that way.
  • Reset the user's password from the admin UI or recreate the user with the CLI.

The Admin tab disappears

  • The tab is role-based. The signed-in user must have role admin.
  • Sign out and sign back in after changing a user's role so the client refreshes the stored session.

SIP clients do not register

  • Pass PALE_SIP_EXTERNAL_ADDR to Pale Server with the public SIP host and port clients should use.
  • Use a dedicated SIP registrar/proxy for production, or use PALE_SIP_BACKEND=udp-parser plus PALE_ALLOW_INSECURE_SIP_UDP=1 only when you intentionally accept the current fallback parser path.
  • Check firewall rules for SIP and RTP/TURN traffic.

Calls connect but audio fails

  • Verify TURN settings: PALE_TURN_SERVER, PALE_TURN_USERNAME, PALE_TURN_PASSWORD, and PALE_TURN_REALM.
  • Make sure UDP relay ports are reachable from the client networks.
  • If you terminate TLS at a proxy, confirm WebSocket/SSE and long-running HTTP requests are not being buffered or dropped.

Browsers or clients reject the server

  • Check that the certificate covers the exact hostname users enter in the client.
  • Confirm the full certificate chain is served, not just the leaf certificate.
  • If TLS terminates at a proxy, forward the original host and protocol headers so generated URLs stay correct.

Production notes

Pale gives you the communications surface and the admin hooks, but a production deployment still needs real infrastructure around it: DNS, TLS certificates, backups, monitoring, a TURN relay, PostgreSQL, and any external providers you decide to use for AI, speech, malware scanning, storage, PSTN, or E911.

  • Keep .env and generated secrets out of Git.
  • Back up PostgreSQL and any file storage location before upgrades.
  • Rotate PALE_SERVER_TOKEN and admin passwords when staff changes.
  • Use the admin readiness reports to separate configured providers from fully tested integrations.