You're viewing v1.0.0 — an older version. Go to the latest (v1.4.0) →
Configuration › Persistent Storage

Persistent Storage

📦 Persistent Storage

This page explains how Uptimer stores data and loads configuration, and how to persist them properly in Docker setups.


🗂️ Docker image filesystem

/
├── app
│    ├── configs # 
│    │    └── default.yml # default configuration file 
│    └── uptimer  # application binary, entry point
├── data  # data_dir, mount it to keep data files

📝 Configuration File

Copy config from image

mkdir -p ~/.uptimer
docker create --name temp-uptimer myuptime/uptimer
docker cp temp-uptimer:/app/configs/default.yml ~/.uptimer/config.yml
docker rm temp-uptimer

Mount config

Edit ~/.uptimer/config.yml as needed, then run:

docker run -p 2517:2517 \
-v "$HOME/.uptimer/config.yml:/app/configs/config.yml" \
myuptime/uptimer  dev

Mount config with custom name

docker run -p 2517:2517 \
-v "$HOME/.uptimer/custom-config.yml:/app/configs/custom-config.yml" \
myuptime/uptimer  \
--cfg /app/configs/custom-config.yml dev

Where:

📁 Data directory (/data)

general:  # top level config property
  data_dir: /data/  # default value for docker, env: UPTIMER__GENERAL__DATA_DIR=/data/

📁 Worker Files to Persist

Backing up these files + your config file is enough to clone or restore a worker.

🧳 Using Subfolders for Data

You can organize multiple worker instances or configs under /data subfolders:

/var/lib/uptimer/data/
├── first
├── second

Specify which subfolder to use via environment:

docker run -p 2517:2517 \
  -v /var/lib/uptimer/data:/data \
  -e UPTIMER__GENERAL__DATA_DIR=/data/first \
  -e UPTIMER__SERVER__DB__DSN=sqlite3:///data/first/server.db \
  -e UPTIMER__WORKER__DB__DSN=sqlite3:///data/first/worker.db \
  myuptime/uptimer

Generate worker data files with:

docker run -p 2517:2517 \
  -v /var/lib/uptimer/data:/data \
  -e UPTIMER__GENERAL__DATA_DIR=/data/second \
  myuptime/uptimer worker init

📁 Server files

Initialize or re-generate:

docker run -p 2517:2517 \
  -v /var/lib/uptimer/data:/data \
  myuptime/uptimer server init

You can add --force flag to regenerate em

🛢️ Database Configuration

Worker and server can use the same database because their tables use distinct prefixes

Default settings are:

server:  # Optional for worker configuration
  db:
    dsn: sqlite3:///data/server_db.sqlite   # env: UPTIMER__SERVER__DB__DSN=sqlite3:///data/server_db.sqlite
worker:  # Optional for server configuration
  db:
    dsn: sqlite3:///data/worker_db.sqlite   # env: UPTIMER__WORKER__DB__DSN=sqlite3:///data/worker_db.sqlite

Schema migrations happen automatically on startup.

Example: Minimalistic with persistent storages

git clone https://github.com/myuptime-info/uptimer-docs.git
cd uptimer-docs/examples/dev-persistent-no-config
docker compose up 

📌 Summary

To keep Uptimer data persistent:

➡️ Next Steps

After configuring persistent storage, proceed to Authentication setup.