Skip to main content

Configuration

The DEJA Server stores all of its configuration in the ~/.deja/ directory inside your home folder. The installer sets this up automatically — you generally won't need to edit these files by hand unless you're troubleshooting or changing advanced settings.

Directory Structure

~/.deja/
├── bin/
│   └── deja              # The deja CLI command
├── server/               # Server runtime files
│   ├── index.js          # Server entry point
│   └── version.txt       # Installed version
├── config.json           # Account and layout configuration
├── .env                  # Environment variables
├── server.pid            # Process ID of running server
├── logs/
│   ├── server.log        # Current server log
│   └── server.log.1      # Previous log (rotated at 10 MB)
└── tunnel.pid            # Process ID of running tunnel (if active)

config.json

Your account, layout, and secure authentication credentials. This file is created during installation and updated when running deja login.

[!WARNING] Secure File Permissions: config.json contains a sensitive Firebase Authentication refreshToken used to fetch custom tokens for your layout access. This file is automatically written with restricted owner-only permissions (0600 / rw-------) to prevent other local users on the machine from reading its contents.

{
  "uid": "your-user-id",
  "layoutId": "your-layout-id",
  "serverId": "01J0...",
  "refreshToken": "AIzaSy..."
}
FieldDescription
uidYour DEJA Cloud user ID
layoutIdThe layout this server is connected to
serverIdSecure server instance identifier generated during login
refreshTokenLong-lived authentication token used to sync layout state

The server also caches your subscription status here after each check. You don't need to edit this — it's managed automatically.

Environment Variables (.env)

The ~/.deja/.env file controls which features are enabled and how the server connects to external services. The installer creates this file with sensible defaults.

Core Settings

VariableDefaultDescription
LAYOUT_ID(from install)Your layout identifier — matches config.json
ENABLE_DEJACLOUDtrueConnect to Firebase for real-time cloud sync
ENABLE_WStrueStart the WebSocket server for browser communication
ENABLE_MQTTfalseConnect to an MQTT broker for IoT devices
ENABLE_SOUNDfalseEnable sound effect playback on the server
VITE_WS_PORT8082Port for the WebSocket server
VITE_WS_IDDEJA.jsServer identifier string

Firebase Credentials

These are public client SDK keys set automatically during installation to connect the server to your DEJA Cloud layout.

VariableDescription
VITE_FIREBASE_API_KEYFirebase API key (public)
VITE_FIREBASE_AUTH_DOMAINFirebase auth domain
VITE_FIREBASE_PROJECT_IDFirebase project ID
VITE_FIREBASE_DATABASE_URLFirebase Realtime Database URL
VITE_FIREBASE_STORAGE_BUCKETFirebase storage bucket
VITE_FIREBASE_MESSAGING_SENDER_IDFirebase messaging sender ID
VITE_FIREBASE_APP_IDFirebase app ID

[!NOTE] No Service Account Keys Required: Historically, the server required a service account email and private key (FIREBASE_CLIENT_EMAIL and FIREBASE_PRIVATE_KEY). These are deprecated for end-user installations and have been removed. Authentication is now handled dynamically and securely via deja login.

Optional Settings

VariableDescription
CLOUDFLARE_TUNNEL_TOKENToken for a named Cloudflare tunnel (see Remote Access)
VITE_MQTT_BROKERMQTT broker URL (default: mqtt://localhost)
VITE_MQTT_PORTMQTT broker port (default: 1883)

Editing Configuration

If you need to change a setting, open the .env file in any text editor:

nano ~/.deja/.env

After making changes, restart the server for them to take effect:

deja restart

Log Rotation

Server logs are stored at ~/.deja/logs/server.log. When the log file reaches 10 MB, it's automatically rotated — the current log is saved as server.log.1 and a new log file is started.