From 4aeebea5b2b9ac1bc2b81dbdcf26770473953bae Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sat, 8 Nov 2025 10:40:25 +0100 Subject: [PATCH] refactor: consolidate all data in /var/lib/ironmount --- README.md | 21 ++++----------------- apps/server/src/core/constants.ts | 8 ++++---- apps/server/src/db/db.ts | 3 +++ docker-compose.yml | 21 ++++++--------------- 4 files changed, 17 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 65735ea..e0ba1b2 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,11 @@ Ironmount is an easy to use web interface to manage your remote storage and moun ### Features - ✅  Support for multiple protocols: NFS, SMB, WebDAV, Directory -- 📡  Mount your remote storage as local folders -- 🐳  Docker integration: mount your remote storage directly into your containers via a docker volume syntax +- 💾  Automated backups with encryption, compression and retention policies backed by Restic - 🔍  Keep an eye on your mounts with health checks and automatic remounting on error - 📊  Monitor your mounts usage with detailed statistics and graphs - -### Coming soon - -- Automated backups with encryption and retention policies -- Integration with cloud storage providers (e.g. AWS S3, Google Drive, Dropbox) +- 📡  Mount your remote storage as local folders +- 🐳  Docker integration: mount your remote storage directly into your containers via a docker volume syntax ## Installation @@ -51,16 +47,7 @@ services: devices: - /dev/fuse:/dev/fuse volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /run/docker/plugins:/run/docker/plugins - - /var/lib/ironmount/volumes/:/var/lib/ironmount/volumes:rslave - - /var/lib/repositories/:/var/lib/repositories - - /proc:/host/proc:ro - - ironmount_data:/data - -volumes: - ironmount_data: - driver: local + - /var/lib/ironmount/:/var/lib/ironmount/ ``` Then, run the following command to start Ironmount: diff --git a/apps/server/src/core/constants.ts b/apps/server/src/core/constants.ts index 936772d..4d21c5e 100644 --- a/apps/server/src/core/constants.ts +++ b/apps/server/src/core/constants.ts @@ -1,5 +1,5 @@ export const OPERATION_TIMEOUT = 5000; -export const VOLUME_MOUNT_BASE = "/var/lib/ironmount"; -export const REPOSITORY_BASE = "/var/lib/repositories"; -export const DATABASE_URL = "/data/ironmount.db"; -export const RESTIC_PASS_FILE = "/data/secrets/restic.pass"; +export const VOLUME_MOUNT_BASE = "/var/lib/ironmount/volumes"; +export const REPOSITORY_BASE = "/var/lib/ironmount/repositories"; +export const DATABASE_URL = "/var/lib/ironmount/data/ironmount.db"; +export const RESTIC_PASS_FILE = "/var/lib/ironmount/data/restic.pass"; diff --git a/apps/server/src/db/db.ts b/apps/server/src/db/db.ts index 555bec2..3540cc6 100644 --- a/apps/server/src/db/db.ts +++ b/apps/server/src/db/db.ts @@ -5,6 +5,9 @@ import { drizzle } from "drizzle-orm/bun-sqlite"; import { migrate } from "drizzle-orm/bun-sqlite/migrator"; import { DATABASE_URL } from "../core/constants"; import * as schema from "./schema"; +import fs from "node:fs/promises"; + +await fs.mkdir(path.dirname(DATABASE_URL), { recursive: true }); const sqlite = new Database(DATABASE_URL); sqlite.run("PRAGMA foreign_keys = ON;"); diff --git a/docker-compose.yml b/docker-compose.yml index 9ad69db..5927984 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,8 @@ services: target: development container_name: ironmount restart: unless-stopped + devices: + - /dev/fuse:/dev/fuse cap_add: - SYS_ADMIN environment: @@ -13,11 +15,7 @@ services: ports: - "4096:4097" volumes: - # - /var/run/docker.sock:/var/run/docker.sock - # - /run/docker/plugins:/run/docker/plugins - # - /proc:/host/proc:ro - - /var/lib/repositories/:/var/lib/repositories - - ironmount_data:/data + - /var/lib/ironmount/:/var/lib/ironmount/ - ./apps/client/app:/app/apps/client/app - ./apps/server/src:/app/apps/server/src @@ -29,18 +27,11 @@ services: target: production container_name: ironmount restart: unless-stopped + devices: + - /dev/fuse:/dev/fuse cap_add: - SYS_ADMIN ports: - "4096:4096" volumes: - # - /var/run/docker.sock:/var/run/docker.sock - # - /run/docker/plugins:/run/docker/plugins - # - /var/lib/ironmount/volumes/:/var/lib/ironmount/volumes:rslave - # - /proc:/host/proc:ro - - /var/lib/repositories/:/var/lib/repositories - - ironmount_data:/data - -volumes: - ironmount_data: - driver: local + - /var/lib/ironmount/:/var/lib/ironmount/