Configuration
Complete configuration reference for Basepod.
Server Configuration
Location: ~/.basepod/config/basepod.yaml
Full Example
yaml
server:
api_port: 3000
host: 0.0.0.0
domain:
base: apps.example.com
# OR
suffix: .local
podman:
socket: /run/user/1000/podman/podman.sock
network: basepod
database:
path: data/basepod.db
dns:
enabled: false
port: 5353
upstream: 8.8.8.8
webui:
path: "" # Use embedded UI
auth:
enabled: true
session_timeout: 24hServer Options
| Option | Default | Description |
|---|---|---|
server.api_port | 3000 | API server port |
server.host | 0.0.0.0 | Listen address |
Domain Options
| Option | Default | Description |
|---|---|---|
domain.base | - | Base domain (apps get subdomains) |
domain.suffix | .local | Suffix appended to app names |
Examples:
base: apps.example.com→myapp.apps.example.comsuffix: .example.com→myapp.example.comsuffix: .local→myapp.local
Podman Options
| Option | Default | Description |
|---|---|---|
podman.socket | auto-detected | Podman socket path |
podman.network | basepod | Container network name |
Database Options
| Option | Default | Description |
|---|---|---|
database.path | data/basepod.db | SQLite database path |
DNS Options
| Option | Default | Description |
|---|---|---|
dns.enabled | false | Enable built-in DNS server |
dns.port | 5353 | DNS server port |
dns.upstream | 8.8.8.8 | Upstream DNS server |
Auth Options
| Option | Default | Description |
|---|---|---|
auth.enabled | true | Require authentication |
auth.session_timeout | 24h | Session duration |
App Configuration
Location: basepod.yaml in project root
Full Example
yaml
name: myapp
server: pod.example.com
domain: custom.example.com
port: 3000
build:
dockerfile: Dockerfile
context: .
args:
NODE_ENV: production
env:
DATABASE_URL: postgres://user:pass@db:5432/mydb
REDIS_URL: redis://cache:6379
volumes:
- data:/app/data
- uploads:/app/uploads
resources:
memory: 512m
cpus: 1.0App Options
| Option | Description |
|---|---|
name | App name (required) |
server | Server context (optional) |
domain | Custom domain (optional) |
port | Container port (default: 3000) |
Build Options
| Option | Default | Description |
|---|---|---|
build.dockerfile | Dockerfile | Dockerfile path |
build.context | . | Build context |
build.args | - | Build arguments |
Environment
yaml
env:
KEY: value
SECRET: ${SECRET} # From shell environmentVolumes
yaml
volumes:
- name:/container/path
- data:/var/lib/dataResources
yaml
resources:
memory: 512m # Memory limit
cpus: 1.0 # CPU limitCLI Configuration
Location: ~/.basepod.yaml
yaml
current_context: production
servers:
production:
url: https://pod.example.com
token: <jwt-token>
staging:
url: https://staging.pod.example.com
token: <jwt-token>Environment Variables
Server
| Variable | Description |
|---|---|
BASEPOD_CONFIG | Config file path |
BASEPOD_PORT | Override API port |
CADDY_ADMIN_URL | Caddy admin API URL |
CLI
| Variable | Description |
|---|---|
BASEPOD_SERVER | Default server URL |
BASEPOD_TOKEN | Auth token |
Directory Structure
~/.basepod/
├── bin/
│ └── basepod # Server binary
├── config/
│ └── basepod.yaml # Server config
├── data/
│ ├── basepod.db # SQLite database
│ ├── apps/ # App data
│ └── certs/ # SSL certificates
├── logs/
│ └── basepod.log # Server logs
└── tmp/ # Temporary files