Skip to content

Database schema ​

PostgreSQL 15 or newer. db/schema.sql is applied idempotently at API startup and is additive: tables and columns are created if missing and never dropped. Column types are shown as written in the schema; columns marked added later arrived through an ALTER TABLE in a newer release.

There are 80 tables.

account_suspension_events · account_suspensions · allocations · api_tokens · audit_events · auth_challenges · backups · billing_customers · billing_events · branding_blobs · branding_history · collaborators · console_events · console_interests · console_nodes · email_outbox · email_templates · failover_events · file_transfers · invoices · jobs · login_attempts · node_events · nodes · notification_channels · notification_deliveries · notification_emissions · notifications · orders · passkeys · plan_prices · plans · plugin_kv · plugin_logs · plugins · recovery_codes · request_limits · schedule_runs · schedules · server_addons · server_events · server_metrics · servers · sessions · settings · sftp_tokens · signup_invites · subscription_events · subscriptions · support_article_search · support_article_votes · support_articles · support_attachments · support_categories · support_drafts · support_events · support_group_members · support_groups · support_hours · support_inbound_messages · support_macros · support_messages · support_presence · support_rules · support_ticket_reads · support_tickets · support_tiers · team_transfers · template_versions · templates · usage_reporting · user_tokens · users · vm_addresses · vm_console_tickets · vm_media · vm_networks · vm_profiles · vm_snapshots · webauthn_challenges

account_suspension_events ​

ColumnType
idbigserial
suspension_iduuid
kindtext
actoruuid
datajsonb
created_attimestamptz

account_suspensions ​

ColumnType
iduuid
user_iduuid
referencetext
reasontext
sourcetext
messagetext
internal_notetext
stop_serversboolean
stopped_server_idsuuid[]
allow_backup_downloadboolean
allow_account_deletionboolean
lift_on_paymentboolean
notifyboolean
untiltimestamptz
created_byuuid
created_attimestamptz
lifted_attimestamptz
lifted_byuuid
lift_notetext
retention_notified_attimestamptz

allocations ​

ColumnType
node_iduuid
server_iduuid
portinteger
protocoltext

api_tokens ​

ColumnType
iduuid
user_iduuid
nametext
token_hashtext
scopestext[]
expires_attimestamptz
created_attimestamptz

audit_events ​

ColumnType
idbigserial
actor_iduuid
actiontext
target_typetext
target_idtext
detailjsonb
created_attimestamptz

auth_challenges ​

ColumnType
token_hashtext
user_iduuid
expires_attimestamptz
attemptsinteger

backups ​

ColumnType
iduuid
server_iduuid
job_iduuid
object_keytext
statetext
size_bytesbigint
errortext
created_attimestamptz
completed_attimestamptz

billing_customers ​

ColumnType
user_iduuid
providertext
livemodeboolean
provider_customer_idtext
created_attimestamptz

billing_events ​

The webhook inbox: stored first, acknowledged, processed with retries. Unique per provider event.

ColumnType
idbigserial
providertext
event_idtext
typetext
livemodeboolean
refsjsonb
received_attimestamptz
processed_attimestamptz
attemptsinteger
next_attempt_attimestamptz
errortext

branding_blobs ​

0.6.2.1 "Plumage": appearance. The document is the settings row "branding"; uploaded images and the last 20 versions live here.

ColumnType
sha256text
kindtext
mimetext
bytesbytea
widthinteger
heightinteger
created_attimestamptz

branding_history ​

ColumnType
idbigserial
revisioninteger
attimestamptz
byuuid
reasontext
valuejsonb

collaborators ​

ColumnType
server_iduuid
user_iduuid
permissionstext[]

console_events ​

ColumnType
idbigserial
server_iduuid
framejsonb
created_attimestamptz

console_interests ​

ColumnType
replicauuid
server_iduuid
expires_attimestamptz

console_nodes ​

ColumnType
node_iduuid
replicauuid
expires_attimestamptz

email_outbox ​

ColumnType
idbigserial
to_addrtext
templatetext
user_iduuid
subjecttext
text_bodytext
html_bodytext
statustext
attemptsinteger
next_attempt_attimestamptz
last_errortext
dedupe_keytext
created_attimestamptz
sent_attimestamptz

email_templates ​

Email: editable templates and a retrying outbox.

ColumnType
idtext
subjecttext
text_bodytext
html_bodytext
enabledboolean
updated_attimestamptz
updated_byuuid

failover_events ​

ColumnType
iduuid
server_iduuid
kindtext
statetext
reasontext
from_nodeuuid
to_nodeuuid
backup_iduuid
data_age_secondsinteger
errortext
job_iduuid
actor_iduuid
started_attimestamptz
updated_attimestamptz
finished_attimestamptz
target_network_iduuidadded later

file_transfers ​

ColumnType
iduuid
server_iduuid
user_iduuid
directiontext
pathtext
size_bytesbigint
object_keytext
statetext
job_iduuid
expires_attimestamptz
storetextadded later

invoices ​

ColumnType
iduuid
subscription_iduuid
user_iduuid
providertext
provider_invoice_idtext
numbertext
statustext
amount_duebigint
amount_paidbigint
amount_refundedbigint
currencytext
period_starttimestamptz
period_endtimestamptz
hosted_urltext
pdf_urltext
descriptiontext
livemodeboolean
created_attimestamptz
paid_attimestamptz

jobs ​

ColumnType
iduuid
node_iduuid
server_iduuid
kindtext
payloadjsonb
statetext
resultjsonb
errortext
attemptinteger
lease_untiltimestamptz
created_attimestamptz
started_attimestamptz
finished_attimestamptz

login_attempts ​

Shared login throttling survives API restarts and works across replicas.

ColumnType
bucket_hashtext
attemptsinteger
expires_attimestamptz

node_events ​

ColumnType
idbigserial
node_iduuid
kindtext
attimestamptz
detailtext

nodes ​

ColumnType
iduuid
nametext
locationtext
statustext
last_seen_attimestamptz
drainingboolean
headroom_mbinteger
memory_mbinteger
cpu_percentinteger
disk_mbinteger
versiontext
usagejsonb
deleted_attimestamptz
credential_hashtext
enrollment_hashtext
enrollment_expires_attimestamptz
vm_enabledboolean
created_attimestamptz
agentjsonbadded later
public_hosttextadded later

notification_channels ​

ColumnType
iduuid
scopetext
user_iduuid
nametext
kindtext
configjsonb
secrettext
eventstext[]
server_idsuuid[]
enabledboolean
last_statustext
last_errortext
last_sent_attimestamptz
created_attimestamptz

notification_deliveries ​

ColumnType
iduuid
channel_iduuid
payloadjsonb
attemptsinteger
statetext
available_attimestamptz
created_attimestamptz

notification_emissions ​

Durable external delivery and atomic event claims, shared by API replicas.

ColumnType
identitytext
expires_attimestamptz

notifications ​

ColumnType
idbigserial
user_iduuid
kindtext
severitytext
titletext
bodytext
server_iduuid
node_iduuid
datajsonb
created_attimestamptz

orders ​

A checkout attempt. The payment is matched to an order, never to what the browser says.

ColumnType
iduuid
user_iduuid
plan_iduuid
price_iduuid
statustext
snapshotjsonb
detailsjsonb
providertext
provider_session_idtext
provider_customer_idtext
livemodeboolean
terms_versiontext
subscription_iduuid
errortext
created_attimestamptz
expires_attimestamptz
paid_attimestamptz
checkout_urltextadded later

passkeys ​

ColumnType
idtext
user_iduuid
public_keybytea
counterbigint
transportstext[]
nametext
device_typetext
backed_upboolean
created_attimestamptz
last_used_attimestamptz

plan_prices ​

ColumnType
iduuid
plan_iduuid
cycletext
amountbigint
currencytext
trial_daysinteger
setup_feebigint
activeboolean
created_attimestamptz

plans ​

Plans: something that can be given or sold. A server plan carries a preset (one server per subscription); an account plan carries an allowance added to the customer's limits.

ColumnType
iduuid
slugtext
nametext
descriptiontext
kindtext
visibilitytext
activeboolean
sort_orderinteger
featuresjsonb
presetjsonb
limitsjsonb
optionsjsonb
stockinteger
per_customer_maxinteger
trial_onceboolean
retention_daysinteger
archived_attimestamptz
created_attimestamptz
updated_attimestamptz
support_tiertextadded later

plugin_kv ​

ColumnType
plugin_idtext
keytext
valuejsonb

plugin_logs ​

ColumnType
idbigserial
plugin_idtext
leveltext
messagetext
attimestamptz

plugins ​

Installed plugins. Code lives here (not on disk) so every API replica sees the same version; the plugin host receives it per call and caches it by checksum.

ColumnType
idtext
nametext
versiontext
tiertext
sourcetext
manifestjsonb
codetext
code_sha256text
package_sha256text
icontext
readmetext
changelogtext
enabledboolean
granted_permissionstext[]
settingsjsonb
secretstext
previousjsonb
failure_countinteger
last_errortext
disabled_reasontext
installed_byuuid
installed_attimestamptz
updated_attimestamptz

recovery_codes ​

ColumnType
user_iduuid
code_hashtext

request_limits ​

ColumnType
bucket_hashtext
attemptsinteger
expires_attimestamptz

schedule_runs ​

ColumnType
iduuid
schedule_iduuid
server_iduuid
statetext
stepinteger
next_step_attimestamptz
resultsjsonb
errortext
triggertext
started_attimestamptz
finished_attimestamptz

schedules ​

ColumnType
iduuid
server_iduuid
kindtext
commandtext
interval_minutesinteger
next_run_attimestamptz
enabledboolean
created_attimestamptz
nametextadded later
crontextadded later
timezonetextadded later
tasksjsonbadded later
missedtextadded later
last_run_attimestamptzadded later
last_statustextadded later
last_errortextadded later

server_addons ​

Files that plugins installed into servers (mods and plugins), tracked so they can be updated, disabled and removed. plugin_id is not a foreign key on purpose: removing a catalog plugin leaves the installed files and their records in place.

ColumnType
iduuid
server_iduuid
plugin_idtext
providertext
kindtext
dirtext
project_idtext
project_titletext
project_slugtext
icon_urltext
version_idtext
version_labeltext
filenametext
sha512text
size_bytesbigint
source_urltext
statetext
disabledboolean
pinnedboolean
is_dependencyboolean
errortext
job_iduuid
installed_byuuid
installed_attimestamptz
updated_attimestamptz

server_events ​

ColumnType
idbigserial
server_iduuid
kindtext
messagetext
detailjsonb
attimestamptz

server_metrics ​

Resource history per server: 1-minute buckets (24 h), 5-minute (7 days) and hourly (30 days).

ColumnType
server_iduuid
ressmallint
buckettimestamptz
cpu_sumdouble precision
cpu_maxreal
mem_sumdouble precision
mem_maxdouble precision
disk_bytesbigint
ninteger

servers ​

ColumnType
iduuid
nametext
owner_iduuid
node_iduuid
template_idtext
memory_mbinteger
cpu_percentinteger
disk_mbinteger
portinteger
desired_statustext
observed_statustext
suspendedboolean
deleted_attimestamptz
variablesjsonb
usagejsonb
created_attimestamptz
updated_attimestamptz
backup_retention_daysintegeradded later
verify_interval_hoursintegeradded later
verify_last_runtimestamptzadded later
failover_enabledbooleanadded later
template_versionintegeradded later
extra_portsjsonbadded later
crash_policyjsonbadded later
crash_statejsonbadded later
last_exitjsonbadded later
alert_statejsonbadded later
subscription_iduuidadded later
suspended_reasontextadded later
created_viatextadded later
pending_delete_attimestamptzadded later
runtimetextadded later
vm_configjsonbadded later

sessions ​

ColumnType
iduuid
user_iduuid
token_hashtext
expires_attimestamptz
created_attimestamptz
iptextadded later
user_agenttextadded later
last_seen_attimestamptzadded later
stepped_up_attimestamptzadded later

settings ​

0.5.1.1: panel-managed settings (secrets AES-GCM encrypted with ENCRYPTION_KEY).

ColumnType
keytext
valuejsonb
secrettext
updated_byuuid
updated_attimestamptz

sftp_tokens ​

ColumnType
token_hashtext
user_iduuid
server_iduuid
expires_attimestamptz

signup_invites ​

Invite links and codes for invite-only sign-up.

ColumnType
iduuid
code_hashtext
emailtext
notetext
created_byuuid
expires_attimestamptz
max_usesinteger
usesinteger
plan_iduuid
created_attimestamptz

subscription_events ​

ColumnType
idbigserial
subscription_iduuid
attimestamptz
from_statustext
to_statustext
reasontext
sourcetext
reftext
detailjsonb

subscriptions ​

ColumnType
iduuid
user_iduuid
plan_iduuid
price_iduuid
order_iduuid
providertext
provider_subscription_idtext
provider_customer_idtext
livemodeboolean
statustext
cancel_at_period_endboolean
cycletext
amountbigint
currencytext
current_period_starttimestamptz
current_period_endtimestamptz
trial_endtimestamptz
past_due_sincetimestamptz
suspended_attimestamptz
canceled_attimestamptz
ended_attimestamptz
terminated_attimestamptz
retention_untiltimestamptz
manual_ends_attimestamptz
notetext
fulfilmenttext
fulfilment_attemptsinteger
fulfilment_errortext
next_fulfilment_attimestamptz
server_detailsjsonb
dunningjsonb
holdsjsonb
versioninteger
created_attimestamptz
updated_attimestamptz
reconciled_attimestamptzadded later
provider_statustextadded later

support_article_search ​

ColumnType
querytext
countinteger
no_resultsinteger

support_article_votes ​

ColumnType
article_iduuid
user_iduuid
helpfulboolean

support_articles ​

ColumnType
iduuid
slugtext
titletext
bodytext
categorytext
visibilitytext
helpful_yesinteger
helpful_nointeger
updated_byuuid
updated_attimestamptz

support_attachments ​

ColumnType
iduuid
ticket_iduuid
message_iduuid
sha256text
mimetext
nametext
sizeinteger
bytesbytea
uploaded_byuuidadded later
created_attimestamptzadded later

support_categories ​

ColumnType
iduuid
nametext
group_iduuid
default_prioritytext
tier_idtext
publicboolean
sortinteger

support_drafts ​

ColumnType
user_iduuid
ticket_idtext
bodyjsonb
updated_attimestamptz

support_events ​

ColumnType
idbigserial
ticket_iduuid
kindtext
actoruuid
datajsonb
created_attimestamptz

support_group_members ​

ColumnType
group_iduuid
user_iduuid

support_groups ​

Help desk data. Customer projections never select private fields or notes.

ColumnType
iduuid
nametext

support_hours ​

ColumnType
idinteger
timezonetext
weeklyjsonb
holidaysjsonb

support_inbound_messages ​

ColumnType
idtext
ticket_iduuid
created_attimestamptz

support_macros ​

ColumnType
iduuid
nametext
shortcuttext
bodytext
scopetext
owner_iduuid

support_messages ​

ColumnType
iduuid
ticket_iduuid
author_user_iduuid
author_kindtext
kindtext
bodytext
viatext
created_attimestamptz

support_presence ​

ColumnType
ticket_iduuid
user_iduuid
seen_attimestamptz

support_rules ​

ColumnType
iduuid
nametext
enabledboolean
positioninteger
triggertext
conditionsjsonb
actionsjsonb

support_ticket_reads ​

ColumnType
ticket_iduuid
user_iduuid
read_attimestamptz

support_tickets ​

ColumnType
iduuid
numberserial
requester_user_iduuid
requester_emailtext
sourcetext
subjecttext
category_iduuid
prioritytext
statustext
assignee_iduuid
group_iduuid
server_iduuid
subscription_iduuid
suspension_iduuid
tier_idtext
first_reply_due_attimestamptz
solve_due_attimestamptz
first_reply_attimestamptz
solved_attimestamptz
closed_attimestamptz
reopen_untiltimestamptz
ratingsmallint
rating_commenttext
tagstext[]
linked_ticket_idsuuid[]
diagnosticsjsonb
last_customer_activity_attimestamptz
last_agent_activity_attimestamptz
paused_attimestamptz
created_attimestamptz
updated_attimestamptz
warning_sent_attimestamptz
breach_sent_attimestamptz

support_tiers ​

ColumnType
idtext
nametext
first_reply_minutesinteger
solve_minutesinteger
warn_percentinteger

team_transfers ​

ColumnType
token_hashtext
sender_iduuid
receiver_iduuid
expires_attimestamptz
created_attimestamptz

template_versions ​

ColumnType
template_idtext
versioninteger
snapshotjsonb
created_byuuid
created_attimestamptz

templates ​

ColumnType
idtext
nametext
imagetext
startuptext
internal_portsjsonb
envjsonb
memory_mbinteger
cpu_percentinteger
disk_mbinteger
editable_variablestext[]
officialboolean
created_attimestamptz
stop_commandtextadded later
addonsjsonbadded later
descriptiontextadded later
variablesjsonbadded later
versionintegeradded later
quick_commandsjsonbadded later
updated_attimestamptzadded later
customer_visiblebooleanadded later
customer_descriptiontextadded later
runtimetextadded later
vm_configjsonbadded later

usage_reporting ​

Reporting is disabled until a super-administrator explicitly consents and connects GitHub.

ColumnType
singletonboolean
consentboolean
consent_attimestamptz
policy_hashtext
installation_idtext
secrettext
last_activity_attimestamptz
last_report_daydate
last_report_versiontext
next_attempt_attimestamptz
last_errortext
withdrawal_pendingboolean
withdrawal_untiltimestamptz
updated_attimestamptz

user_tokens ​

ColumnType
token_hashtext
user_iduuid
kindtext
expires_attimestamptz
created_attimestamptz
payloadjsonbadded later

users ​

ColumnType
iduuid
emailtext
password_hashtext
roletext
disabledboolean
totp_secrettext
totp_pendingtext
created_attimestamptz
quotajsonbadded later
notifications_seen_idbigintadded later
preferencesjsonbadded later
statustextadded later
email_verified_attimestamptzadded later
signup_sourcetextadded later
terms_versiontextadded later
terms_accepted_attimestamptzadded later
terms_ip_hashtextadded later
deletion_attimestamptzadded later
display_nametextadded later
is_superbooleanadded later
admin_permissionstext[]added later

vm_addresses ​

ColumnType
network_iduuid
addressinet
server_iduuid

vm_console_tickets ​

ColumnType
token_hashtext
server_iduuid
user_iduuid
session_hashtext
modetext
expires_attimestamptz
used_attimestamptz
agent_connectedbooleanadded later

vm_media ​

ColumnType
iduuid
nametext
kindtext
urltext
sha256text
size_bytesbigint
enabledboolean
ostext
created_attimestamptz

vm_networks ​

ColumnType
iduuid
nametext
libvirt_nametext
modetext
node_idsuuid[]
gatewayinet
prefixinteger
dnsinet[]
enabledboolean
created_attimestamptz

vm_profiles ​

ColumnType
iduuid
nametext
configjsonb
enabledboolean
created_attimestamptz

vm_snapshots ​

ColumnType
iduuid
server_iduuid
nametext
statetext
size_mbbigint
job_iduuid
created_attimestamptz

webauthn_challenges ​

ColumnType
user_iduuid
kindtext
challengetext
expires_attimestamptz

Released under the AGPL-3.0-only license.