Skip to content

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: 24h

Server Options

OptionDefaultDescription
server.api_port3000API server port
server.host0.0.0.0Listen address

Domain Options

OptionDefaultDescription
domain.base-Base domain (apps get subdomains)
domain.suffix.localSuffix appended to app names

Examples:

  • base: apps.example.commyapp.apps.example.com
  • suffix: .example.commyapp.example.com
  • suffix: .localmyapp.local

Podman Options

OptionDefaultDescription
podman.socketauto-detectedPodman socket path
podman.networkbasepodContainer network name

Database Options

OptionDefaultDescription
database.pathdata/basepod.dbSQLite database path

DNS Options

OptionDefaultDescription
dns.enabledfalseEnable built-in DNS server
dns.port5353DNS server port
dns.upstream8.8.8.8Upstream DNS server

Auth Options

OptionDefaultDescription
auth.enabledtrueRequire authentication
auth.session_timeout24hSession 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.0

App Options

OptionDescription
nameApp name (required)
serverServer context (optional)
domainCustom domain (optional)
portContainer port (default: 3000)

Build Options

OptionDefaultDescription
build.dockerfileDockerfileDockerfile path
build.context.Build context
build.args-Build arguments

Environment

yaml
env:
  KEY: value
  SECRET: ${SECRET}  # From shell environment

Volumes

yaml
volumes:
  - name:/container/path
  - data:/var/lib/data

Resources

yaml
resources:
  memory: 512m    # Memory limit
  cpus: 1.0       # CPU limit

CLI 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

VariableDescription
BASEPOD_CONFIGConfig file path
BASEPOD_PORTOverride API port
CADDY_ADMIN_URLCaddy admin API URL

CLI

VariableDescription
BASEPOD_SERVERDefault server URL
BASEPOD_TOKENAuth 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

Released under the MIT License.