Skip to content
OneBacklogPublic

About

Personal Note-Taking App

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

71 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OneArctic

CI License: AGPL v3

OneArctic is a self-hosted and single-user Google Keep-style note app. Built with Nuxt, SQLite, and Meilisearch.

Features

  • Text and checklist notes in a masonry grid
  • Labels with drag-and-drop ordering
  • Archive and trash
  • Full-text search powered by Meilisearch
  • Image and file attachments with thumbnails and a lightbox
  • Real-time sync across open tabs and devices
  • Installable as a PWA
  • Login with a TOTP authenticator app (no password to leak)
  • All data stored locally in SQLite and plain files

Screenshots

TBA

Requirements

  • Docker and Docker Compose v2

Production (Docker)

  1. Clone the repo:
git clone https://github.com/OneBacklog/OneArctic
cd OneArctic
  1. Generate secrets and create data folders (run it as your normal user, not with sudo):
APP_ENV=production bash setup.sh

The containers run as the user who ran setup.sh, so everything in data/ stays owned by you.

Important

It is recommended to serve the app over HTTPS. If you don't, change COOKIE_SECURE to false in the .env file.

  1. Start the services:
docker compose up -d

The app will be available at http://localhost:3000.

  1. After the app is running, generate your OTP secret:
docker compose run --rm setup-auth
  1. Reset the OTP secret (generates a new key) if somehow you lose it:
docker compose run --rm -e RESET=1 setup-auth

Reverse Proxy

See compose.traefik.yaml for a Traefik example.

Configuration (Optional)

The app reads secrets from .env (created by setup.sh).

Variable Required Description
JWT_SECRET Yes Secret for signing auth tokens (min 32 chars).
MEILI_MASTER_KEY Yes Meilisearch master key.
COOKIE_SECURE No Use secure cookies (HTTPS). Defaults to true; set to false when serving over plain HTTP.
PORT Yes Host port for the app. Default 3000.
DATABASE_PATH Yes SQLite database file path.
FILES_PATH Yes Attachments storage path.
MEILISEARCH_HOST Yes Meilisearch HTTP endpoint.
PUID / PGID No User and group that own everything in data/. Set automatically by setup.sh; if empty, the app uses the owner of data/db.
SEARCH_REINDEX No Set to true to rebuild the search index on startup, e.g. after deleting data/meili/. Remove it afterwards.

Data Location

All data is stored under ./data/:

data/
  db/      — SQLite Database
  files/   — Uploaded Images and Files
  meili/   — Meilisearch Index

Everything in data/ is owned by the user set in PUID/PGID. If setup.sh reports files owned by another user (for example root), fix them once with the chown command it prints.

Backup and Restore

Everything lives in data/, so a backup is a copy of that directory. Stop the app first so the SQLite database is in a consistent state:

docker compose stop app
tar czf onearctic-backup-$(date +%F).tar.gz data/
docker compose start app

To restore, stop the services, replace data/ with the contents of the archive, and start them again. If you leave data/meili/ out of the backup, start the app once with SEARCH_REINDEX=true after restoring to rebuild search.

Update

docker compose pull
docker compose up -d

Contributing

See DEVELOPMENT.md for local setup and CONTRIBUTING.md for guidelines. Please report security issues privately as described in SECURITY.md.

License

OneArctic is licensed under the GNU Affero General Public License v3.0.

About

Personal Note-Taking App

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages