feat: add Joplin Server stack for note-taking and synchronization
Added Joplin Server deployment at joplin.pivoine.art: **Joplin stack** (joplin.pivoine.art): - joplin: Note-taking server with multi-device sync - PostgreSQL backend for data persistence - End-to-end encryption support - Compatible with official Joplin clients (desktop, mobile, CLI) - Markdown-based notes with attachments Infrastructure updates: - Added joplin database to PostgreSQL init script - Updated compose.yaml to include joplin stack - Added JOPLIN_* environment variables to arty.yml - Added joplin-backup plan to restic (13th backup plan) - Updated restic/compose.yaml with joplin_data volume mount - Updated README.md and CLAUDE.md documentation All services integrated with Traefik for SSL termination and include Watchtower auto-update labels. Daily backups scheduled for 2 AM with 7 daily, 4 weekly, 6 monthly, and 2 yearly retention. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
30
CLAUDE.md
30
CLAUDE.md
@@ -21,6 +21,7 @@ Root `compose.yaml` uses Docker Compose's `include` directive to orchestrate mul
|
||||
- **stash**: Filestash web-based file manager
|
||||
- **links**: Linkwarden bookmark manager (PostgreSQL + Meilisearch)
|
||||
- **vault**: Vaultwarden password manager (SQLite)
|
||||
- **joplin**: Joplin Server note-taking and sync platform (PostgreSQL)
|
||||
- **restic**: Backrest backup system with restic backend
|
||||
- **sablier**: Dynamic scaling plugin for Traefik
|
||||
- **vpn**: WireGuard VPN (wg-easy)
|
||||
@@ -57,6 +58,7 @@ Services expose themselves via Docker labels:
|
||||
- Creates `umami` database for Track analytics
|
||||
- Creates `n8n` database for workflow automation
|
||||
- Creates `linkwarden` database for Links bookmark manager
|
||||
- Creates `joplin` database for Joplin Server
|
||||
- Grants privileges to `$DB_USER`
|
||||
|
||||
## Common Commands
|
||||
@@ -221,6 +223,30 @@ Vaultwarden password manager (Bitwarden-compatible server):
|
||||
- Enable 2FA for all accounts
|
||||
- Access admin panel at `/admin` (requires `ADMIN_TOKEN` in `.env`)
|
||||
|
||||
### Joplin (joplin/compose.yaml)
|
||||
Joplin Server note-taking and synchronization platform:
|
||||
- **joplin**: Joplin Server app exposed at `joplin.pivoine.art:22300`
|
||||
- Self-hosted sync server for Joplin note-taking clients
|
||||
- End-to-end encryption support for notebooks
|
||||
- Multi-device synchronization (desktop, mobile, CLI)
|
||||
- Markdown-based notes with attachments
|
||||
- PostgreSQL backend for data persistence
|
||||
- Compatible with official Joplin clients (Windows, macOS, Linux, Android, iOS)
|
||||
- Data persisted in PostgreSQL `joplin` database
|
||||
|
||||
**Configuration**:
|
||||
- **APP_BASE_URL**: `https://joplin.pivoine.art` (required for client synchronization)
|
||||
- **APP_PORT**: `22300` (Joplin Server default port)
|
||||
- **DB_CLIENT**: `pg` (PostgreSQL database driver)
|
||||
- Uses shared core PostgreSQL instance
|
||||
|
||||
**Usage**:
|
||||
1. Access https://joplin.pivoine.art to create an account
|
||||
2. In Joplin desktop/mobile app, go to Settings → Synchronization
|
||||
3. Select "Joplin Server" as sync target
|
||||
4. Enter server URL: `https://joplin.pivoine.art`
|
||||
5. Enter email and password created in step 1
|
||||
|
||||
### Restic (restic/compose.yaml)
|
||||
Backrest backup system with restic backend:
|
||||
- **backrest**: Backrest web UI exposed at `restic.pivoine.art:9898`
|
||||
@@ -290,6 +316,10 @@ Backrest backup system with restic backend:
|
||||
- Path: `/volumes/vaultwarden_data`
|
||||
- Retention: 7 daily, 4 weekly, 12 monthly, 3 yearly
|
||||
|
||||
13. **joplin-backup** (2 AM daily)
|
||||
- Path: `/volumes/joplin_data`
|
||||
- Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly
|
||||
|
||||
**Volume Mounting**:
|
||||
All Docker volumes are mounted read-only to `/volumes/` with prefixed names (e.g., `backup_core_postgres_data`) to avoid naming conflicts with other compose stacks.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user